Goodbye, Nexus One!

I’ve returned my Nexus One. This was the first cellphone, let alone smartphone, I’ve ever owned. The hardware was slick and the software responsive – The out of the box experience was amazing as far as ordinary use went. But unfortunately, I’m not an ordinary user. After a bit under a month and doing everything possible to it without voiding the warranty, I’ve discovered a few shortcomings. Some of them are big dealbreakers and some of them are just nitpicky, but together they were enough to keep reminding me of the hefty price tag associated with the Nexus One.

Most importantly, and most damaging to the typical user experience, is the terrible 3G reception. I’ll admit, I walked into the smartphone market with rather high expectations for 3G speeds. I had never really used a 3G device before and expected near-cable speeds. I quickly learned to expect around-DSL speeds. But that’s still great. What’s not so great, however, is the Nexus One’s reception. According to some guy on the internet, it may be hardware. It may be software, although there was supposedly a fix for 3G issued by Google at some point. It may also just be T-Mobile, although there is now a model which works with AT&T. T-Mobile is definitely a suspect, considering how cheap their no-contract unlimited data plan is. Whatever the cause(s), however, this device is sort of broken because of it. 3G works great at home. At school, not so much. At work, not at all. There goes your “immersive internet experience” down the drain.

I also had a few weird crashes. Most were strange and inexplicable. One strange problem, while not a crash, was also annoying: Android plays a notification tone when it starts up and just before it powers down. There are several built-in notification tones on the internal memory, plus a seemingly undocumented way to use a tone from your SD card. The problem with this is that when starting up, the SD card isn’t yet mounted, and when shutting down, it’s unmounted early on. So these notification tones the phone is supposed to make aren’t accessible. For some unfathomable reason, rather than use the factory default tone (“pixie dust”), the phone lets out a series of piercing beeps. Suddenly your custom sounds aren’t so cool after all. Back to “pixie dust,” I guess.

But the second-most important issue for me was the development scene. Now, Android actually has a really active community, it’s pretty cool. My problem was how difficult they make it for developers to set up the SDK. I tried the Windows SDK one day and it was great. No thanks, I’d like Linux… and this is where things start getting weird, nevermind that Android is supposedly Linux-based. When I first start looking at a project, I follow the documentation. I install the recommended crap from the recommended places and make sure the Hello World application works. So the system requirements for the SDK state that it’s been tested on Ubuntu Hardy LTS. No problem, I install it to a spare box. JDK 5 or higher. Okay, I don’t know Java, but how hard can it be? It’s not in a repository, but I grab it from Sun and run it. I get a directory filled with all kinds of crap, and no clue where to put it. It’s not obvious which binary (there’s a bunch) I’m supposed to use, and I’m not really happy with the idea of just tossing it all in /usr/local/bin, either. There’s no make install and no INSTALL file. Whatever, I’ll figure this out later, I tell myself. Next up is Eclipse 3.4 or higher. Lucky me, Eclipse is in the Ubuntu repos, so I’ll just apt-get install… Wait, this is Eclipse 3.2! As it turns out, older versions work pretty much just fine with the SDK, and many people don’t use Eclipse at all and get by just fine. But this is my first experience with the SDK, and I’m from that sheltered world of Unix where system requirements are important, the READMEs are worth reading, and when a specific version is tested it usually means that lower versions are unstable! So this really freaks me out a bit: Their “tested” applications on their “tested” Linux platform don’t even exist in the official repositories! So… I eventually figured out how to install the SDK and make the Hello World app, but… I was kind of pissed the whole time. Not fun.

And I suppose I should have expected this, but Android is not Unix. My naive mind thought that if it’s Linux, it must be Unix. Nope. I was hoping to pop a shell and have Bash, I was hoping to use a native SSH client, I was hoping to see an FHS-compliant filesystem, I was hoping to run Python and Perl and I was hoping for Unix on a phone. Wrong on all accounts! Google is very good at removing everything we know as userspace from the Unix environment. Although not the most important, this was probably the most heartbreaking realization about Android.

The Nexus One was good, very good, but not quite enough. So, smartphone vendors, how about you call me when we finally get a pocket-sized Unix device that has reliable high-speed internet everywhere? I’d love to actually buy one of those.