I had a MotoE 1st gen with a insufficient internal storage issue. I have been the unofficial and unpaid brand ambassador of the new Motorola brand of phones for quite some time. The only issue with this phone is that it has limited internal storage and apps like WhatsApp and Facebook which like to eat internal storage in their lunch and dinner leave no space for anything else. This is when I decided to root this phone, luckily which was out of warranty.
I first rooted a MotoE 1st generation phone in 2015. So this time i.e. in 2016 when I got a chance to root the other MotoE , i was expecting the whole process to complete in a hour or two. To my surprise, it was a tough job when I actually started to work on it. The technique which I was using earlier in 2015 did not seem to work in 2016. Internet still showed me KingoRoot app as the only one way to root the phone and it was not working. Some other ways like flashing a custom recovery like TWRP was not working as well.
When I was about to lose hope, an flash of thought struck me. The only difference between the 2 techniques was the OS of the phone. During my 2015 rooting, the phone had a Kitkat OS. This phone which I was trying to root had Lollipop as a part of system upgrade. I decide to downgrade the OS which was possible as some good people at XDA had made available the Kitkat firmware of that phone. I downloaded the firmware, set up the phone on Kitkat and then tried rooting the KingoRoot way. As I expected, it worked 🙂 . I installed TWRP and Link2Sd and excellent app which allows you to create move all apps on SD by creating shortcuts /Linux symbolic links pointing to a Linux partition which makes your app think that it is still using internal storage. Please note that this is not the same as APP2SD feature which works only on very limited apps and in my opinion is useless most of the time. The paid version of the app also allows you to move data folder like Whats’s app video, images folder to the SD card. I manually did that part by executing unix commands using adbshell , the details of which I will write in a separate post.
Special thanks to makers of KingoRoot who make rooting as easy as clicking a button. I wish the app had given a helpful error message saying the OS degrade part (assuming they know about it 🙂 ) but no worries as I finally achieved what I wanted to.
I have a Logitech wireless keyboard K400r which I feel is a really good product except for one thing – No indicator lights for dual mode keys like Caps lock / Num lock etc.
Its a pain every time you need to enter passwords. I had to check the status by typing some dummy text in a text editor before actually typing the passwords. After some time of bearing the pain, one fine day I tried to search if there was some kind of application which displays the current status of these buttons on the screen. To my pleasant surprise, there was already a Ubuntu app available called the indicator-keylock . Found the app in the Ubuntu software center and did a 1 click install.
Life is little easy now 🙂 .
Flashed CyanogenMod 11 (based on Kitkat) on a old Samsung Galaxy SL GT-9003 which I managed to get my hands on. I wish the phone had little more CPU power and RAM to run Kitkat in its full beauty but it is way better than getting stuck on Gingerbread which was the last official update from Samsung.
Thanks to a developer on xda-developers.com for creating a build for my phone.
Budget phones usually have less internal storage memory which results in “Storage space running out” error in Android Kitkat / lollipop or something similar in older phones. I had to face this issue many times as I prefer and also recommend budget phones 🙂 . I have resolved this issue using the steps explained down for the following phones -:
- Moto e
- Micromax A67
- Lenovo A390
- HTC Explorer A310 (pico)
Steps: (Following these steps will void your warranty)
1. Install a recovery like TWRP or CWN whichever is available for your phone. Internet and xda-developers are your best friend. This allows you to do advanced stuff like backing up your entire ROM even if that feature was not provided by your device manufacturer.
2. Root the phone. This will give admin rights to your phone. This steps vary for every phone model. Again there is a wealth of information on xda and internet.
3. Take a backup of the entire ROM using the recovery software installed in Step 1. It is usually a one click process which saves the ROM as a file on your SD card.
4. Create an ext4 partition on your SD card. This partition is needed as there is Linux running in the internals of Android and latest version of Linux prefers ext4 file system. This can be done by a partitioning software like Gparted on your PC. I use it on my Linux machine.
5. Once rooted then install Link2Sd or something similar app on your android phone .This app will help you move or link (shortcut ) the applications which are present in phone storage to the new ext4 partition which was created in Step 4. Without rooting your phone, this is not possible as this step requires administrative rights. This app also allows you to remove bloatware which was installed by the device manufacturer. Almost all apps except the system apps can be moved/linked to the SD card. All apps need to be linked/moved manually. It is advised not to touch system apps.
5. Reboot the phone. Any new apps that are installed from this point will be automatically linked to the SD card.
Got this exception while i was writing a code to download a page on my Android app. The below link explains the reason for this error.
The following screenshot is from one of of top Insurance provider’s website payment transaction status page.
The highlighted part in the circle shows the transaction status page. Strangely the software designers decided that showing some internal number was a better decision than following the norm i.e. showing a proper status description. A table down the screen shows all possible descriptions against all the codes in the system. It does not require a software architect to figure that this is a blunder from usability point of view.
It is due to such instances that layman users find technology hard to use.
Image a scenario – You have a shiny new application which works super smooth on the machines you tested. When deployed on a monster core sever with equally large RAM your application performs not so good as you had expected. There are chances that it could perform more badly than your test environments. For the users of the application it would be a frustrating experience as the application performance crawls to a halt.
One of the culprits in Java enterprise applications is the amount of RAM allocated to the application. Many times the same memory configuration which were present in your low powered test environments get moved to the client’s production boxes.
It is like being in a top class restaurant but not able to order anything as the menu is in a different language. What that means is – You are left hungry.
The same goes with your application. It is left hungry for RAM as it starts processing more data or more users are connected to your application. The OS is left with too much of RAM sitting idle as your application even though hungry is not asking for it.
Please therefore give enough attention to RAM.
One of my job duties is to act as a performance tuning adviser for my company’s software product. My clients are product implementation teams who are facing performance issues with the product. One recent ‘complaint’ I received was that the software was performing poorly even on a server with 10 cores. His reasoning was simple – The server has many cores available so why does a application screen take 15 seconds to load. I had to explain him that this was a misconception on his part and it depended on the application code on how to utilize the extra cpu cores. A application which does not use any form of parallelism will execute all the logic serially even though they need not be. Such applications thus will be using only the single core of the machine.The remaining cores although ready for service are not utilized fully.
Application designers and developers need to take modern hardware into consideration when they are designing and writing software. If a unit of work can be made to execute in parallel safely it should be done.
So next time you have a application which shows the same performance on a desktop or an a server, you know the reason why.