Sometimes, despite my intense cynicism, I find myself truly excited for a new product. Unless you are living under a rock (or work at the most anti-google company in the world, a.k.a. a company in the Redmond area), you know that T-mobile will be releasing the first Android phone tomorrow (the G1). And, for a few reasons, I’m as giddy as a schoolgirl.
The iPhone was pretty exciting to me, but never enough to make me want to buy one. I still believe, rather firmly, that Apple has a pretty stiff hold on program design (i.e. interaction and usability). I didn’t really understand it until I used the first iPhone, but god damn if it didn’t actually feel like you were controlling the device. Not twisting your fingers around and the device catching up a bit later – it actually feels like you are moving the screen around with your finger.
Contrast this to windows mobile, which is probably the least responsive piece of shit I’ve ever used. It isn’t unexpected to wait for 5 seconds to open up a screen, 10 seconds to open up an app, a couple of seconds to answer the phone, a couple more to hang up, etc. There almost has to be a couple of calls to Sleep(3000) hiding in there somewhere, right? Right? I mean my shitty audiovox, made about 6 years ago, had the whole usability/responsiveness down pat. Sure, WinMo has more features, but what the hell? A phone is a phone, right?
Anyways, even though I feel the iPhone has succeeded (or is succeeding, if you will) in the area of designing a phone/pda that is actually usable (note to WinMo developers and the managers/leads in charge of almost every Microsoft product – just having more features != a better product), they have failed pretty hard in a few key areas. The one area being exciting me about developing for the phone (I’m sure that was high up on Steve’s TODO list). The other being convincing me that the application ecosystem will stay consistently better than windows mobile.
For those of you who don’t own a windows mobile phone and have never tried to find decent software for it, the experience is somewhat comprable to windows. It’s like browsing download.com and looking for quality software. The market is made up of the people who can stand to pay whatever fee it is to get the whole “Microsoft certified” sticker on their ugly little websites and can deal with hacking out crappy, unresponsive little apps that never really work quite correctly. There are a hundred shitty shareware apps that look like Satan’s anus and claim to do the same thing, each faily miserable in its own, unique way It isn’t entirely their fault – at least with the iPhone, there is an obvious quality bar to aim for (and an SDK worth something). With windows mobile, the built-in software is about as bad as it gets (I love when media player has an error and displays the hresult, as a number, in hex. Genius).
So the iPhone apps of today are decidedly higher quality, if only because Apple (thanks to Next) provides a good SDK and app building environment. But will developers continue to write for a platform where the highest quality apps get shunned from the store?
They have let me (and the community at large, I think) down recently, with barring many competitive apps. To be clear, there is nothing really horrible about a company not giving away the deed to the barn, so to speak. I don’t fault apple for restricting 3rd party applications to things that they don’t want to compete against. After all, the reason Apple stays at the top (in the measure of quality) is partially because they have a great deal of control over the holistic experience, and that requires them to make a strong entry into as many areas of the ecosystem as possible. If they were charging, say, $20 per Apple application on the iPhone (mail, calendar, weather, iPod, etc.), there would be an obvious desire for Apple to want to create as many applications as possible. But since they don’t directly make more money per application they include on the iPhone by default, at some level, they are looking out for the customer by trying to provide more and more value (in order to look out for themselves).
In fact, I’ve always felt that Apple’s approach made a good deal of fiscal sense – provide a great experience over the pieces of the ecosystem you have the desire or capability of directly influencing. For the part you don’t, inspire 3rd party developers to add the value you are missing, in the form of looking out for (in some respect) these developers by providing high quality, public development APIs and tools. So I don’t fault them for restricting competition.
However, I don’t laud the decision, in any way. It isn’t evil to screw others to continue to make money, but it certainly isn’t “nice”.
On the other hand, in the last month, I have been constantly impressed by Google.
First, Chrome comes out. A new browser (I say, “the more competition, the merrier”, and anybody taken out of the grips of IE is a win for the world at large), BSD licensed, for chrissakes, along with a peachy new javascript engine, V8, for the world. Nevermind if it isn’t the fastest (for awhile, tracemonkey stole it back, and now squirrelfish extreme has claimed the lead), but god damn if they aren’t giving some real value back to the community.
Oh, but then we had the EULA fiasco. A EULA that claims it owns everything you do, your first born children, your soul, and rights to the memories of the first girl your awkwardly fondled in 7th grade (liar, it wasn’t until college. Good try, though). EV1L G00GL3!
But not really – within a day, they had apologized (that’s a key, there – how often do you hear companies apologizing for screwing up?) and fixed the thing, saying it applied retroactively. To be honest, I already have great trust in Google, so I wasn’t worried in the first place (my tinfoil hat is saved for other companies). But it was refreshing to hear the “oops, we fucked up!” and see the quick fix.
Then the privacy thing, which, again, I don’t care about. Take 2% of my google suggest data! Make it better! What the hell do I care that you know my average search is for either penny arcade, midget golf, or “7th grade high school fondling story”. Eat it up. I don’t care.
And then they basically apologized again and said “we’ll fix that too”. That’s twice in one week!
Then there were those horrible crashes in Chrome, also fixed that week. Some people at work pointed fingers and joked about how awful Google is and how their software is so shitty, having bugs at all. And then when google updated, they cried awful, saying “transparency! Where is the transparency? People couldn’t refuse to install that security update!” And then I pointed them at the public bug tracker, code review comments, and checkins, and explained that it took me all of 10 minutes to find things out about Chromium that takes me hours to figure out about the project I work on every day. Transparency comes in many forms.
Bleh.
So back to this hear Android thing.
What Android brings me is this – I can purchase a device that probably isn’t as cheap as a winmo phone, isn’t as well designed as an iPhone, isn’t as sleek as a blackberry, and is young and untested.
But it is a phone from a company that I trust.
My hopes might be dashed, tomorrow, as Google invariably has to give T-mobile the final say over what goes in to G1, and I certainly do not trust T-mobile. Those cocksuckers are part of the reason my WinMo phone is so slow (like I need 17 services to tell me who my Fav 5 are: I can remember the 5 fucking people I talk to every week, thank you). They might bitch slap my dreams back into my head.
But if they don’t?
I trust that Google will create a platform that is well-designed, that provides increased value over time (here is where T-mo could dash my hopes against the mobile phone industry crack rocks), and geniunely wants to create a quality product. Not necessarily a product that will sell well (a la the opposite of Microsoft, which has the whole used-car dealer thing down to a ‘t’), but a product that is constructed the way software developers wish they could make products.
You know how I know?
I read, on the Android blog, that Android 1.0 will not have the GTalkMessenger and Bluetoth APIs (GTalkMessenger is for communicating between phones using google talk, not the more general chatting stuff). You heard me – I’m excited about them cutting features.
They cut these for two reasons:
- The GTalkMessenger stuff seems unsafe and not completely thought out, and they didn’t want to stick it in there if they couldn’t be confident in it.
- The Bluetooth API wasn’t fully baked yet, and they didn’t want to lock the framework into a v1.0 API that ended up sucking and sticking around for ever.
#2 is the one that really gets me. They would rather, temporarily, hurt their position in the marketplace in order to provide a better framework, in the long run, for people to write code on.
Everywhere I look in my small part of the software industry, everyone is a master of local optimization. They can make that for loop 100x faster (for the difference between 100ms and 1ms that runs once over the runtime of an application). They can squeeze that one extra feature out (even though they know it is a hive of bugs and a maintainability nightmare). They can push of that not-so-important work until later (you know, because the quantity of features is the most important thing).
But what does Google do? “Fuck it – we’re going to write something that we’ll be proud of.” The practiced the fine art of global optimization – do the thing that is right in the long term. Put down the cigarette and pick up the disgusting vegge tofu burger.
And that is every programmer’s dream (or at least my dream). And no, I don’t mean the tofu burger (that’s just sick. I wouldn’t even wish that on the windows mobile team). I mean writing software that has quality as its highest goal.
So I’m gonna (probably, again, if T-mobile doesn’t fuck up) buy an Android phone, I’m gonna develop apps for it, and if I’m successful at all, I’m gonna give ‘em away to the community, as a thanks to Google for giving me Gmail, Google Reader, Google Talk, Picasa, Google Maps, Chome, and, above all, the best search ever created.
And that’s why I’m as giddy as a seventh grade guy the first time he figures out how to unlatch a bra strap. Yes, 7th grade. No, I’m not lying. Fuck you and the horse you rode in on.