RSS FeedContinuing Android Frustration
About two months after my move from BlackBerry to Android, I am reaching the following question: “Why are you using Android – are you a developer?” Let me explain – essentially, Android is Google’s selling platform as much as iPhone is Apple’s and BlackBerry is RIM’s. Google really wants you to use its online services, and they cannot really be reconfigured without rooting it (hence the reference to being a developer). You cannot get rid of pre-installed apps (such as Qik video chat) without rooting the phone either. Synchronization with Outlook is painful, and makes me really miss BlackBerry Desktop Manager. (I know that in the cell phones of 2020, I hypothesize that the synchronization problems will be non-issues in year 2020, but year 2020 is not when I am writing this review.)
There are a few other problematic things with Androids: 1) There is no way to control the data usage when roaming. So, you just need to keep switching the network on/off. If you leave it on, you could end up paying hundreds of dollars over 3/4 days, of course, depending upon what apps you have on. 2) YouTube app suddenly stops showing some videos whenever it likes. Restarting the phone plays the same videos without any problem. 3) Email coolly stops working whenever it wants – restarting the phone fixes the issue.
So, essentially, my Android is a fancy camera, a mobile router, a note talking app, and occasional video watching device (when phone is cooperating).
When again is the new BlackBerry touch coming out?
Smarter Cities
Smarter Cities (page 42) in the September 2011 issue of Scientific American does a good job of explaining crowd sourcing in Transportation context and comparing it to infrastructure based approach, “An ideal beginning is to leverage the growing array of smart personal devices we all weild and recruit people as the sensors of a city rather than relying on formal systems embedded into infrastructure. The traffic function on Google Maps is a good example. Instead of building a costly network of dedicated vehicle sensors along roadways…”.
This approach is very consistent with my previous experience of handling traffic congestion issues, especially those with a strong freight component to it, since the freight traffic often has a regulatory mechanism that is easier to interface with compared to passenger traffic. This YouTube video does a good job of explaining that. ITS has come a long way for cities, but many many more improvements can be made, if some more decisions can be made dynamically, as this paper explores.
Code Reviewers’ Pet Peeves
As a code reviewer, certain things tend to bother you more than other things. Here is the list of 3 things that bother the @*(# out of me.
- Using code as the revision control system: Developers tend to comment out code, not delete it. Call it pride of authorship or something else, but it is difficult to delete that excellent, eloquent, functional piece of code that was relevant before your product/project manager decided to change the requirements completely (and completely out of blue, barely x hours after lauding your excellent work!). The main justification that the developers tend to give is, “Well, what if we want to add that feature back?” Well, Joe, no, we are never going to bring that feature back! Never.
Never, ever. Because we never change our mind. But just in the slimmest possible lemon peel of a chance that we do bring that feature back, then we will use the RCS to go hunt for that piece of code, or better, you will redo it from scratch! You wrote such good code the first time around, that I just shudder in awe of the future code that you will write when you have already written that once. So, for now, stop using code as your RCS, be brave and delete the code. If we have to give Developer Medals of Honor (DMoH), then, that should be awarded to the brave developers who have written something fabulous and deleted it from their code when requirements changed, thus relegating that phenomenal piece of code to the deathly hollows of the RCS, and done it without evincing pain. - Using naming conventions that are beyond wrong: This one causes no visible problems, other than sometimes befuddled customers or higgledy-piggledy users who are confused that the browser bar is showing “AddInvoice.jsp” or something similar, when they were clearly trying to edit an existing invoice. Horror of horrors! The customers are just not adept at recreating the thought process of the developer Alice when she was creating the page the very first time, before the first invoice existed at all! So, Alice conveniently called it the AddInvoice page, and since she is a good developer who follows the reuse principle, Alice decided to reuse the same page for editing an invoice. Alice, imaginative as she is, did not consider the possibility that a glasses, jeans/t-shirt wearing user would actually notice the URL when using a part of the application. Clearly, there is no shortage of horror movies in the software world.
- Using single liner if else blocks: This one is the easiest of the problems to fix. Just make this a hall of shame qualifier in your team (or a compiler error in your IDE settings).
No one should write if else logic that does not use curly braces to wrap the pieces of logic that go inside the if and the else blocks. This really is just a code format issue, but the number of times that I have seen this cause sudden bugs to appear in the version X.0.1 when version X.0 seemed to run absolutely fine is far too many to let this go by. Too many times, a developer will add a log statement to the first line of the else block, entirely changing the meaning of the block. This one should be considered the one-liner joke equivalent of the software comedy genre.
Review of Bloom Filters paper
My review of the SPAA 11 paper “Understanding Bloom Filter Intersection for Lazy Address-Set Disambiguation” by Mark Jeffrey and Gregory Steffan has been published and is available here (requires access to Computing Reviews).
Here is the list of other review activities that I am usually involved with.
The move from BlackBerry to Android (or iPhone)
Moving from BlackBerry to Android (or iPhone)? There’s an app for that! But first, let us begin with Dilbert. You can also read this starter on uncommunication devices by Scott Adams.
First, the handoff issue. When you make a call using WiFi, and then you move away where you have no WiFi, your call doesn’t handoff to the 3G/4G network. It simply drops. That doesn’t happen sometimes. That happens every time, by design. Your phone even warns you that the call might drop, and you look at the phone with squinty eyes and ask in your worst possible Shawshank Redemption voice – “How can you be so obtuse?” This problem of soft handoff has been studied for a very long time – take this 1997 paper as example. The BlackBerry has an excellent handoff mechanism, you can start in WiFi, go to 3G, come back to WiFi, repeat and rinse, and keep talking. The workaround in Android is simply to disable WiFi calling until “they” figure it out.
Secondly, aah the synchronization issues. At other times I have written that in 2020, the cellphones will have no synchronization to do, since the cellphone will be the only device that will synchronize with the cloud. One thing that you learn only after you buy an Android phone is that Google really wants you to use GMail. At the least, all the synchronization options are built around Google contacts and Google calendar. Perhaps Google will eventually get it, that I just don’t want to move to GMail (email systems are like soft drinks – everyone has their own preference), but for now, I am serving Google’s fantasy. My earlier Outlook + Blackberry + BB Desktop Manager has now led to: Outlook, Google Calendar Synch, Google Synch on my android device, and the Outlook contacts are not really synchronized, they are just imported and exported. I am sure there are tons of apps that do tons of things, but that whole line of reasoning is sounding to start silly.
Thirdly, the battery life. Both iPhones and Androids have atrocious battery life. Best workaround is to keep your cellphone mobile phone wired at all times.
A few things that work very well in Android are the swype typing, the mobile access point and the camera. I have stopped carrying a camera, and the pictures come out just fine. Consider this picture from the Benjamin Franklin room at the State Department.
All said and done, Android is better than the Blackberry at thousands of things – BlackBerry is better than the Android if you actually make or receive calls. This situation is summarized in the following Russian couplet:
купил айфон а чо с ним делатьгде кнопки чтобы нажимать и
как мне позвонить сереге
а вот и он звонит и чо
That roughly translates to:
I bought an iPhone – what to do with it?
Where the buttons to press?
How do I call Sergyi?
Oh, here, he is calling and now what?
Apps
