Looking for a remote web / back-end engineer?
You should check out my resume (PDF) and give me a call.

A review of Android and the T-Mobile G1

I’ve had the G1 for about two weeks now, and have been coding for it pretty much since the day I got it, and I have to say I love it, and regret only one thing: buying the Bronze one. So, lets start with that, and the other shortcomings, before moving on to the coolness. You’ve got three choices for the G1 Black, Bronze, and White. I’m always partial to earth tones, and I think the white one looks like a cheap plastic toy, so Bronze it was. I really should have fiddled with one first. The black and the white are pretty much what you’d expect, the bronze though, they tried to go a little fancy on the keyboard. Instead of making it the same color as the body, like the other two, they made it silver, which does look good, BUT the letters, are a dark-ish grey on a silver background. Now, once you start typing the actual letters are backlit, except, you can only notice that if you’re not in a room with light. Like say, your house, or your office, or outside during the day… You get the picture. What’s worse is the alternate characters (slashes, semicolons, etc). These are in a nice rust color, that is totally invisible unless you’re in a strong light. So, don’t buy the Bronze… As for the UI, it’s pretty much what you’d expect from the ads. Nice, but a little “ten years ago” feeling, and interactions aren’t as polished as they feel on the iPhone. Once you’re actually *in* an app it’s as slick as the developer felt like making it. Some of them are *very* slick. ShopSavvy is a good example of a really nicely done UI. Some of them are crap. But, I suspect it’s the same on the iPhone. The only non-obvious thing about the UI is that, unlike the iPhone it doesn’t swap from landscape to portrait mode, and back, as you turn the device. The G1 *knows* that it’s on it’s side, it just doesn’t bother to do anything with that information. Now, some creative geeks have figured out how to implement it but it’s not there for general consumption yet. Currently, it goes into landscape mode when you slide open the keyboard, and back to portrait when you close it. A couple apps, like the browser, allow you to set them permanently into landscape mode even if the keyboard is closed. But honestly, it feels like the kludge it is. You get used to this limitation pretty quickly, but it’s still leaves you feeling a little annoyed that it can’t switch itself. The construction is suprisingly nice. One of my requirements for any phone is that I be able to shove it in my back pocket and sit down. Yes, I am exceedingly careful about making sure the glass is pointed inwards. But, I would never feel comfortable doing that with one of those first gen iPod nanos for example. Those always felt like I’d snap them. And, even if that’s just perception, it’s an important one. You don’t want to feel like your phone is a piece of glass that needs to be wrapped and coddled. It needs to feel like a tool you can pull out, set down, sit on, and generally use without worry. The G1 totally succeeds on this front. The camera is… annoying. Don’t even attempt to take a picture of a non-sleeping cat with this. Click, wait, wait, wait, wait, get coffee, wait, go pee, wait, *snap*. Oh look, you got the blurry tip of the tail as it walked slowly out of the frame. It’s nice that during that time it’s doing some physical moving of the lens to auto-focus on whatever you’re pointing at, but still. Also the button. The button is awkwardly placed when the keyboard is closed, and downright difficult when the keyboard is open. The lens is right under your left hand as you hold it. You will, sooner or later, sit there wondering why the screen is dark when you open the camera. It’s because your finger is over the lens. And last, but not least, is the plug. I hate that plug. So, it’s powered by a mini-usb, which is convenient. Charging, and mounting as a USB device all in one. BUT, that’s the only “orifice” on the device. Like most of the smart phones it’s got crap battery life (about 24 hours), so I frequently find myself wanting to charge it AND listen to music, but I can’t. I can do one or the other but not both, unless I want to listen on the little speakers, which no-one does. The headphones, you see, plug in to a dongle on a cord, which plugs in to the mini-usb port. Now, it’s a good idea, because the dongle has the microphone on it, which means you can use any headphones with it, and still be able to hear, and speak with people on the phone. The problem is, that the microphone, is on the dongle near the device and not up high on the headphone cord near your head. If you want to talk to someone you’ll have to clip the mic up by your face. By default, if I stick the phone in my back pocket, and use the headphones that come with it, the microphone is right at crotch level. And, while you *can* use any headphones with it, you won’t want to because they’re the length you need them to be, but the cable / dongle thing that comes out of the phone is almost 3 feet long, which means your “nice and long” headphone cords are now about one mile too long. And, if that wasn’t bad enough. You simply can’t use the keyboard in the standard thumb-keyboard position while it’s plugged in (or has headphones attached). The plug prevents your right hand from gripping it. However, I find that If, I hold it so that my hands are coming down from above, instead of holding it from the edge like you’d hold out a plate, and let the cord go between my second and third fingers, it works fine. This is, of course, totally bullshit. The headphones that come with it are ok. Decent mids and highs, crap bass, and quite possibly the most tangley earbud headphones I’ve ever owned. Also, they keep wanting to fall out of my ears. I’ve never had a real problem with earbud headphones, but these just don’t work well with my ears when I’m walking. The built in apps all work really well. I have some weird issue with the browser where, after a search I occasionally find myself on a Google page with no search field and no results. Also, there’s sometimes a bit of a pause, which is especially noticeable when pulling down the menu-bar. If you’re not aware, many apps will give you notifications that show up in the menu-bar across the top. You pull this down with your finger to get the details, and/or to switch directly to one of the apps that left you a notification. It’s a nice feature once you get used to a menu-bar being something you can interact with, but frequently I’ll pull it down and have to wait 2 seconds for it to give me any indication it recognized my action. So far, you’re probably wondering how I could posssibly love this phone. And if the annoying bits, which every device has some of, was all there was to it, I wouldn’t be so thrilled. I mean, overall, using it is a lot like using the iPhone only not *quite* so polished. Which is pretty much what I expected going in to it. Actually, going in to it I thought it would be less polished than it is. Then I got to play with a friend’s, and realized that once you get past the lack of sexy makeup on its interface, it’s actually quite nice. And that, brings me to this mornings realization, which is what made be get off my butt and write this review. There is something incredibly powerful about *touching* your e-mail. *Touching* your photos. Email stops being “those messages on the computer” and becomes *my* e-mail. It’s *mine*. It’s right here. I can touch it. I can stick it in my pocket and take it with me. It doesn’t live in a box that’s so unquestionably separate from me. Now, I had a Sidekick before this, so I had my email in my pocket, but I didn’t care. It was nice to have access to it wherever I was, but I never had this visceral feeling of *mine*. Also, i never *wanted* to read e-mail on it. I just did when I had to, or was very bored and stuck on the subway. On Android, and I suspect the iPhone. You *want* to touch *your* stuff. You want to slide things around. The kinesthetic interactions that we’ve been largely ignoring in computing for years have incredibly powerfully subconscious ramifications. Speaking of my photos, once you take some, or download some, or get some onto it in any other way, they’re very well integrated. Take a pic of someone, go to set it as their icon, which shows up on the screen when they call you, and Android will pre-select all the faces in the image for you. Then give you nice cropping tools if you want to tweak its selections, or use some other part of the image. Everything shoves images in the same place so everything that consumes images knows just where to look. The interaction between apps is really nice. Really, really nice. It’s trivial for one app to hand tasks off to some other one. A simplistic example is the camera app. It *just* takes pictures. If you want to look at pictures it seamlessly hands you off to the Pictures app, without you even realizing you’ve moved to a different app. And, dealing with pics, for example, is so nice that I want to go around taking pics of everyone I know, not so that I’ll have their pics, although that would be nice, but so that I can see their face when they call AND so that I can go through the fun little process of taking the pic, choosing a contact to add it to, and cropping it to just their face. It seamlessly takes me through three apps and is kinda fun. And that brings me to developing for Android. Developing for android is *awesome*. There are tons of open source examples to get you started, including the code to all the built in apps. Want to know how the mail app does something, go look. I’ve learend so much reading the code of the example apps, and the built in ones. The APIs seem, so far, very sensible. Unlike the iPhone it’s multithreaded, so your app can be happily doing some background tasks while the user is fiddling with something in the foreground. The emulator is really nice, and best of all, you do not need anyone’s permission to put whatever app you want on your phone. And I assure you, it’s freaking awesome to have *your* app running on *your* phone. Especially when you had so much fun making it. Working on Android apps has been a total shot of adrenaline to my coding brain. I can’t wait to get home and work on my apps some more. It’s fun. And, I know that when I’m done other people will be tapping and pushing on my icons in my apps. And if I’m really good, I’ll be able to look at someone with an Android phone and say “You’ve probably got some of my stuff on there right now.” and that would just rock. Unlike iPhone. It doesn’t matter if Google doesn’t like your app, or it competes with some app they wrote. You don’t need your app to be in the built-in marketplace in order for someone to download and install it, although it’d be nice. You can stick it on a web site with a download link just like any other file. You could probably even e-mail it to someone. Yes, the user has to manually click it, approve the access it’s requestiong (contacts, internet, etc) and install it, as they should. If you weren’t aware, every developer writing an iPhone app runs the risk that after pouring months of development into their baby, Apple with say refuse to put it on their marketplace, and they’ll be left with nothing. With android you can either pay $25 for the ability to upload apps to the marketplace, or your can say screw it, and distribute it through whatever method you prefer. The killer development environment, in a language that millions of developers know, and use in their day-to-day work (as opposed to some obscure C variant that essentially only gets used on Apple products), combined with an unrestricted marketplace, means there is absolutely no question that we can expect to see some truly extraordinary apps coming out for Android. In the end it’s a great product, but, from an end user perspective, it does still feel a little version 1.0. From a developers perspective, there’s no question. You *want* to be developing for Android.