Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

Friday, January 11, 2013

Sending My Money To Cupertino (instead of Mountain View)

Let me preface this post by saying that I've owned four different Android smart phones for the last four years. Beginning with the Eris, then to the Incredible, on to the Thunderbolt and a Galaxy Nexus as of late. And also, it's worth saying that in spite of my very recent jump to the iOS world, I still think AndroidOS has a great deal of potential and unparalleled access to its development tools.

So, why did I send my hard-earned dollars to a corporation whose litigious "thermonuclear" war against all competitors I vehemently and fervently oppose?

  • Because, in my opinion, they currently have the best overall smart phone. While it could be argued that late-version Android OS has a better feature set and some Android devices have superior hardware specs than iOS and iOS devices respectively, the end result of an Android device is much less than the sum of its parts.
  • Android's openness is actually too much of a good thing: while open source sounds great in theory, in practice it means that Google has very little control over the OS as it cascades downstream (the exception being Nexus devices). This means that, at the very least, the OS that finally makes it to the device has been modified and/or tweaked by both the hardware vendor and the carrier. This actually is a bigger deal than you would think. Often either the hardware vendor or the carrier add unremovable UI  layers that are not aesthetically pleasing, intrusive, and resource hogs. Then, on top of that, the carrier usually loads your phone with an Imperial shittonne (pardon my French) of unremovable bloatware. So, you get a device and have to choose to either root it (and lose the warranty) or spend quite a bit of time deactivating each of the offending bloatware apps and then having to live with an inefficient and possibly unsightly UI layer.
  • Rooting/Modding: if you must root and mod your phone just to get decent performance and rid your phone off unneeded vendor UI layers, you are doing it wrong. People often see rooting as a solution, I see rooting and modding as solving one and opening two different problems. For one, you'll lose your device's warranty and secondly, you are now at the mercy of a fickle and capricious "community" that at least in my experience has shown itself to be rather ineffective and hostile. 
  • Uniformity and predictability: although Google has made great strides in and is pushing hard for UI design and usability best practices as of late, there is no enforcement at the app submission level. This means that adherence to their guiding principles is completely voluntary and the end result is UI chaos. Developers each do things their way and often leave outdated apps in the market with no consideration for UI looks and usability. While many developers have complained about Apple's draconian manual app approval process (including myself),  it results in a more cohesive, predictable user experience. I was a big believer of Google's "market self-policing"philosophy, but this has proven to be ineffective at encouraging developers to comply with Google's design guidelines and this very likely will remain to be the case.
  • Even Google's own apps look and work better in the iOS platform. Case in point, the gmail app, the Maps app, G+ app all look and work much better on iOS than on Android! No, seriously, some of them are not even a judgement call, they simply are heads and shoulders above their Android counterparts. Not really sure why Google doesn't use that same quality and UX emphasis on the Android versions. And just like that, at least in my experience so far, many other apps that exist in both platforms, they tend to have a much user experience in the iOS world. 
There are other smaller factors, but the points above are the main drivers of my decision. For instance, Verizon thought it would be a wonderful idea to brand every single Android device with their horrible and gaudy red-black "DROID" looks and sounds. Although that's a Verizon-specific complaint, it highlights the root problem (which was mentioned above): Google has little control over the end product. And I'm guessing it has been the same issues for many people who have switched away from the Android platform. Perhaps in a few years' time Google will figure out a way to keep vendors' and carriers' hands off Android and they'll find an automated way to vet app submissions for UI/UX compliance. If and when that happens, there's a good chance I'll jump back into the Android bandwagon.

Tuesday, October 16, 2012

All Hail Explicit Garbage Collection Calls (and the logcat)!

For the last few weeks we've been working on a mobile app that requires handling of large image files. We started developing it as a multi-platform app via PhoneGap/Cordova; however, the Android version just wouldn't work when it came to loading large images from the "gallery" and then turning them into a base-64 string for posting to a server. Looking through the logcat


source: rootzwiki forum


we realized that there was a FATAL OutOfMemoryError every time we tried to load large pictures into the app. After some digging around the Interwebz, StackOverflow and the blog of Simon Mac Donald (one of PhoneGap's main contributors) we surmised that this problem could only be addressed at the native level. So, we started building a  small proof-of-concept Android app to see how we could address this issue. After couple days of fiddling with different ideas, we were having the same problem caused by Android's inefficient Bitmap handling that made the app crash and burn when loading and encoding a large (8MP) image. Facing having to get down and dirty with multi-threading or AsyncTask (so we could offload the memory intensive parts), in a moment of lucidity (actually: desperation), I suggested my co-worker we try issuing explicit garbage collection calls. So, after adding a dash of System.gc()to the critical parts of our code and loading it up into the device (because the damn emulator is too damn slow, but that's a different rant) I was expecting it to have very little effect, if any, but it was worth the shot. But, to our bafflement, not only did it work, but also it actually fixed the OutOfMemoryError issues we were having completely. 

So, the main take-aways are: Android has memory-inefficient Bitmap handling. Possible memory inefficiency in the Base64 class. Explicit garbage collection calls are the bee's knees!

P.S.: After the fact I looked around to see if using explicit garbage collection calls was a no-no, but on the contrary, it seems it is widely used and necessary for memory-intensive activities. Also, as per documentation, explicit garbage collection calls in the Dalvik VM don't force garbage collection; they just "nudge" the GC to look your app's way for possible memory cleanup.

Sunday, July 1, 2012

Google Nexus 7: Android's first true market shaker

By now you've probably seen and read all the rave reviews, tear-downs, and all the media coverage surrounding Google's new offering in the tablet market: the Nexus 7.  As an attendee of Google I/O, this year I received one of these devices. I wasn't particularly excited about the device given my experience with the tablet they gave out last year, the Galaxy Tab 10.1 which seemed (and probably was) like a rushed product. The build quality was iffy, Android Honey Comb seemed like a stop-gap measure rather than a true well optimized operating system, soon thereafter a number of people started reporting hardware problems ranging from screen glitches to batteries not holding a charge and so forth. Then sometime late last summer, I bought a brand new Acer Iconia A500, which was OK for the most part, but still, in my opinion, it didn't seem like a worthy competitor against Apple's offerings. I also tried out Amazon's Kindle Fire which was OK, except it didn't really feel like an Android product. It seems like Amazon really went to great lengths to use the OS, but remove as many references to Google's services as possible (including, of course, Google Play).

So, I waited until my last day in San Francisco to take some time to Play with the Nexus 7 (partially, too, in case something was wrong with the device I could get direct help form the techs on-site). The first thing I noticed is the high-quality, sleek packaging which definitely shows the care Google put into this product. After taking all the protective plastic sleeves around the the device itself, I could tell this was not a rushed product, at all. It feels like a solid well-put-together hardware. It also looks stylish and "sexy". It only has two buttons, up/down volume combo and on/off switch. It has a 1/8'' jack output for headphones and a standard micro USB port  (a big omission on last year's Galaxy Tab) for charging and connecting to other devices. The screen is perfect: sharp, excellent colors, great brightness and contrast; it might not be technically a "Retina" display, but it surely feels that way. While some people might prefer the 10.1'' format, I personally prefer the compact 7'' form factor which is more portable and can be comfortable held in one hand (which is specially helpful for long reading sessions). The OS, though, is what makes the real difference. Android Jelly Bean is, what I think, the best Android OS to date. They have taken notice of all the gripes throughout the years and have fixed those and then some. The UI feels just right: consistent, stylish, and "buttery". The Android team finally realized that as far as the end-user is concerned, the UI/UX is the product and all other technical merits being secondary or non-existent, and they have applied this mantra to Jelly Bean to the extreme: everything seems to be where you expect it to, visual semantics remain the same throughout every nook and cranny of the system and out of the user's way. The device integration with Google Play is fantastic and adds a layer of "awesomeness" to the whole experience. Video playback is great: I watched Transformers: The Dark of The Moon" on high def and it was fantastic, I tried some of the free books on the Play store and they look handsome. Nice typography, excellent contrast and very "buttery" animations for flipping  pages and so forth. 

I could go on and on about the fantastic combination of software and hardware the Nexus 7 is, but I leave that to the plethora of reviews already out there. I prefer to close making the point that, in my opinion, Google Nexus 7, is hitherto the one true competitor against Apple's iPad, in spite of having a smaller screen size.

Thursday, May 3, 2012

The Mobile Bubble is Here


First and foremost, I'm not a naysayer or doomsayer. Also, I'm fully and painfully aware that another bubble burst is the last thing the U.S. economy needs. But it seems obvious to me that we are amidst a "Mobile" bubble.

For those of us with decent mid-term memory, it's pretty straight forward to draw parallels about the .com bubble of the late 1990's and the real estate bubble of the mid 2000's. For instance, circa 1998 any company or start-up with a .com in its name could easily secure funding, and a few months later an IPO would follow sending company valuation to the stratosphere, regardless of merit, intrinsic value, or business plan. A similar thing happened to the real estate market in the mid-2000's: any property (regardless of location, size, taxes, etc.) was a "hot commodity." People would make a business of buying overpriced homes and then turning around and "flipping" them for even more money. In the days of the .com bubble not only the Internet companies enjoyed this apparent largess of easy paper money, but also the infrastructure companies, streaming companies, fiber-optic companies, ISPs, etc. partook in the action. Same parallel can be drawn with the real estate bubble: not only the properties themselves became outrageously overpriced, but all the goods and services around it (landscaping, furniture, home builders, remodeling, etc.) went up and down with the whole sector.

Fast forward to 2010. With both iOS and Android platforms spearheading the mobile market, a new generation of entrepreneurs jumped on the mobile 'gold rush' bandwagon. Since then there have been rising stars of their own right (read: Angry Birds), "traditional" platform developers have migrated some of their apps to mobile platforms (e.g.: Adobe, EA, Autodesk, etc.) and there have been shooting stars and lots and lots of apps that have are in the abyss of obscurity -- even though some of these "forgotten" apps are quite good. Enter 2012. The explosive growth of mobile adoption continues: iOS and Android devices selling like hot cakes. Well established apps grow substantially in terms of users and (in some cases) revenue. The sector is running on all cylinders, the sky is the limit and all that jazz. Then, a pivotal event last month rattled the ground the mobile arena stands on: Facebook bought mobile vintage-photo app/service Instagram for a reported $1 billion. This acquisition immediately set alarms off in my head of over-valuation and the .com era where, as explained above, companies with no merit, revenue or business plan would fetch ridiculous amounts of money or market valuations and insane IPOs. So, I was already wary and a bit apprehensive that the mobile sector was, in fact, either heading towards or already inside a bubble. Then today I read the news that note-keeping mobile app/service Evernote has been price-tagged at a nifty $1 billion. If this is not a clear sign that the mobile sector is in a proverbial bubble, I'm not sure what is.

So, if you have money in the market (more specifically in the mobile sector) or where thinking about it, please be cautious and bear the information above in mind. Set some cash aside, move some capital to the bond market or precious metals, and so forth. Often, in a bubble market, the best investment is the one you avoid.

Saturday, August 13, 2011

How to (and not to) sell your Android app

I'd like to briefly preface this post by saying that I'm writing it as a (potential) customer and not as a developer/vendor.

In preparation for releasing my Android photo blog, Da Giorno a Notte, I needed to gather as many photography-related apps on my phone as I could find. I downloaded many of them from both the amazon app store and the Android Market. All of them were free (either through amazon's free paid app program or through Android Market demo/ad-supported).  Among all demo/ad-supported apps I downloaded  Little Photo and Vignette Demo are the ones I'd like to focus on.

How To Sell Your Android App:

Little Photo is a bit unusual. Super minimalistic UI (perhaps a bit much sometimes), adds the effects in place for direct preview and you only see unobtrusive banner ads right before you save a copy of the app in your SD card. The developer is constantly pushing updates, adding needed features, organizing the menus a bit better, etc. This is exactly what I like to see as a potential customer. I want to see that the developer cares about the app (and invested/immersed in it) , I want to see updates, I want to see communication with the user base, but above all else, let the potential customer use your app to its fullest and if your app is worth its salt, they'll probably fork the money to buy it.

How (Not) To Sell Your Android App:

Vignette Demo, on the other hand, has a very user unfriendly UI, things/menus seem to be slapped around for no good reason. Blind editing: you cannot see the changes until after you close the effects window (which is superbly annoying and time inefficient). Has a lot of "filler" effects i.e. instead of presenting the user with a dialog to choose a variation of a given effect, they're listed (and feature counted!) as a different effect. To make matters worse, the developer decided to limit the size of the pictures to save/share to couple hundred pixels on the longest side unless you pay for the app (which is about $4 at the moment). In-app, feature paywalls are ridiculous, IMO, and it will not make customers upgrade to the paid version, it will drive them to find an alternative.

In closing, if I had to choose today which of the two apps I would buy, I would choose, hands-down, Little Photo. Not only it offers a MUCH better user experience, very nice feature set, but also has a developer behind it that it's passionate about both the app and photography and smart enough to not limit the app's potential hoping to force the customer to buy the paid version.