Android Makes Me Sad
Android Makes Me Sad
A few months ago I installed iOS8 on my iPhone 5. I was pretty unimpressed. The new OS, admittedly a beta build, was sluggish, crashed often, and didn’t have any really revolutionary new features that made using an iPhone better. I think one is allowed to either have very buggy but innovative software or totally stable and performant minor releases, so I get grumpy when such an apparently minor release is so low quality. I thought, “hm, if this is the best Apple has coming, it may be time to switch back to Android”.
So I did my research and got a big beautiful red HTC One M8, sticking with Verizon, since I’ve been pretty happy with their LTE coverage and speed — indeed, they had recently upped the speed of LTE in my area from 20mbps to 40mbps! (They call this “XLTE”.)
The phone is indeed beautiful, with a nicely curved back that fits well in my hand, an enormous and lovely screen, and enough processing oomph to run games quite smoothly. HTC added decent speakers on both the top and the bottom of the phone (“Boom Sound”) which produces lovely stereo imaging for watching videos. Voice quality is pretty good on phone calls. Very impressive hardware. It should be a terrific experience. But it’s not. And it’s not really HTC’s fault as much as Google’s. It’s been awful being on Android.
Requisite disclaimer: I’m no Apple fanboy; there’s a lot that is broken about that platform, too. I feel like all modern phone platforms are still in their infancy and we’ll look back on these days mildly embarrassed at how things were, like tuning your CONFIG.SYS by hand to get your game to actually run. May those days come soon.
NOTIFICATIONS
Whenever my phone gets a notification, my phone buzzes. It does not turn the display on, it doesn’t show a notification bar, I have no idea what happened. It’s just a single bit of information: “Something Happened.” It could be that someone liked my photo on Facebook or it could be that someone sent me an urgent text message. Who knows? To check, I need to unlock my phone and pull down the notifications view, which then lists notifications in apparently random order and includes useless bits of information like the current weather and that I’m connected to WiFi. When my phone buzzes (about once a minute), I have to perform this set of actions to see whether or not something actually important happened. Needless to say, I fail to do this every time my phone buzzes and as a result, I’ve missed some timely texts. My phone has become useless for texting.
The notifications bar at the top of the screen is filled with unhelpful and occasionally inexplicable icons, like a stylized “N”. There’s no way to enquire as to what this “N” is or why it’s in my notification bar, but it does limit screen real estate for knowing e.g. whether or not i have voicemail or an unread text. I can see the Bluetooth ‘B’ there, but do you really need to occupy all that space just to remind me that my phone has bluetooth and that it’s on? A “refresh” icon occasionally appears. It’s unclear what this is signaling — I would guess it’s syncing my photos and mail with Google? But who knows. There’s a tab with a plus sign. No idea what that is either. Sometimes when you touch on a notification, it opens the corresponding app (yay!) and sometimes it does not. Why? Who knows?
ALL-OR-NOTHING PERMISSIONS
Whenever I install an app, I must agree to all of the permissions that that app might ever want to use. I have no context for why the app needs these permissions and can’t selectively permit/deny actions. It’s a “take it or leave it” approach. This leaves app developers in a crunch; they either need to build apps that don’t actually take advantage of what a phone is capable of or they scare users by asking for a huge number of permissions that the user doesn’t yet understand — why would a messaging app need access to my camera? Oh yeah, to send a friend a picture. What about my microphone? Oh, if I want to send an audio snippet. In an iOS app, permissions can be asked for “in situ”. So an app can present a screen that says “Hey, we’d love to look at your contacts to see who of your friends is already using this app.” After that screen the OS asks “Do you want to let this app see your contacts?” It’s a natural flow — the user gets the reason and can turn the app down without uninstalling the app. The user’s in control. Android needs this.
SCREEN TWITCHINESS
My screen gets brighter, then dimmer, then brighter, then dimmer, then shuts off. Sometimes it doesn’t turn off for half an hour, sometimes it goes into sleep mode seconds after I’ve been engaging with it, making for a very annoying experience of having to re-wake it constantly. At one point I had taken a photo of a whiteboard with some notes from a meeting and was displaying the photo on my screen while I typed notes on my desktop. Given that the screen would dim after ~3 seconds and power off after 5 it was excruciating to try and take notes off of it — I ended up pushing the photo to my desktop to work with it there. This is compounded by the very awkward gesture to wake the device — I tap the power button on the top, then swipe the lock icon on the bottom of the screen up, then enter my PIN code, and now finally my phone is unlocked. Oy. Sometimes tapping the power button turns the screen on. Sometimes it does nothing. Sometimes I have to tap it twice. Or three times. Why? Who knows.
PERFORMANCE
When I’m actually in an app, it’s often silky smooth. Seeing 60fps animations is pretty swank and games look really good. Occasionally it will start to stutter, at which point I have to go into recent applications and shut them down. But what’s really odd is that it not infrequently takes many seconds for an app to begin launching or to transition from one task to another, with no visual feedback that my action was accepted. Sometimes the keyboard gets very laggy. It’s weird to be in such a herky-jerky environment where some things are smooth and many other things are unresponsive for whole seconds. I feel the work on 60fps sadly only highlights the slow time-to-launch issues and jittery interactions — one example of how Apple got this part right is by requiring a launch image and immediately zooming the launch image while the app gets ready to actually run, which gives the user a sense of responsiveness and control, versus “um, I hope that registered.” Opening the camera app takes 3–4 seconds on my high end device; not very ideal for “oh quick, take a snap of this!”
BATTERY
I was pretty disappointed with my iPhone 5, which after a year would be totally dejuiced by about 3pm. I got a Mophie case for it which doubled its available power, but after nearly a year of that, I’d only get to around 5pm or so before my phone would be dead. I had higher hopes for the HTC with its even larger battery pack, but apparently the beefy CPU+GPU and large screen are a pretty big drain, because this phone dies in the afternoon as well. Sometimes it is pulling enough current that I get the message “your phone is using too much power to charge” when plugged into a power source! The phone can occasionally get very, very hot — too hot to hold. It could probably burn someone. This is when doing pretty simple tasks, like browsing the web or playing a simple 2D game, not running advanced benchmarks or mining BTC or anything crazy.
CRASHES
One thing I find somewhat tragic as a computer scientist is that we live in an era where people still have to deal with the reality of software that crashes. This is pretty unacceptable — and it’s a problem with both iOS and Android. “Sorry, but Assistance has stopped working” intrudes a dialog while I’m composing an email, apropos of nothing. Friends of mine have built whole companies dedicated to helping detect when crashes happen in the wild and logging them, sending back core dumps, and trying to help developers debug them. But that we are able to author software that crashes at all makes me sad; these problems were solved decades ago — we just need to actually empower mobile developers with these better tools. It’s too easy to screw up.
NITS
There are a lot of other random sharp edges in the Android platform that I would have expected would be ironed out by now. The amazing Google Material Design documents give me confidence there are expert, detail-oriented product people at the company, so it baffles me how there are still so many easily-found issues. Here are some examples:
SUMMARY
Android’s not currently a great mobile OS in absolute terms. I’m very grateful that Android exists — it’s precisely competition in the mobile OS marketplace that will push the state of the art forwards. And I think iOS also has a long way to go to create a great experience for people. But I hope the Android team works on making a platform that’s evenly performant, thoughtful, consistent, and allows for days between a charge; there’s just no other way we are going to get billions of people off of their cameraphones which have batteries that last for a week. Let’s do better!
Epilogue: I received the expected flak from Apple fanbois who were appalled that I’d judge the future of the iOS platform — especially in terms of stability — on a beta release. They pointed to the “thousands of new APIs” including “pluggable third party keyboards” as evidence of innovation. (Shrug) It’s possible this will be a big deal, or not, but I wasn’t blown away, though I do like Swift (which is not specific to iOS8). We’ll see what gets built. Maybe I’ll end up in two months eating crow with a sapphire iPhone6 in hand.
Separately, I received some constructive feedback from Android apologists who insisted I need to root my phone and install CyanogenMod in order to get a clean, pure Android experience. Or get a Nexus. That most of the nits and issues I face above are specific to the HTC mods. I even got a few folks advocating for the MotoX; I’ll try these out and report back.
Finally, I did get some folks giving shoutouts to Windows Phone which led to a back-and-forth between supporters and detractors on my FB feed arguing that it didn’t matter if the OS was superior if devs were ignoring it as a platform, with a tip of the hat to WebOS.
Originally posted on Medium