Wednesday, May 14, 2008

The Clash of the Devices

Look, in 8-10 years I want to be spending less time in front of the computer. "As we know it", I should have added. I hope it doesn't take that long either.

I want a small network of devices that are specialized for certain situations, with form factors to match and knowledge of each other. Maybe that means a lot of my data is in the cloud, maybe it doesn't - I don't care about that.

What I do care about is that a laptop costs a lot and is fragile, and a desktop ties me to my desk. Sometimes I need to sit at a desk, but the rest of the time I'd rather be pacing around thinking, collaborating with friends or co-workers on code or music or writing, or playing games that make me more active, but give me an immersive experience only a computer can provide (think of an FPS that's somehow tied to the geometry of your office or something like that - I don't know yet).

Anyhow, back in the now I want to see the shift starting, and I see it with iPhone and Android. Which should I throw my puny, insignificant weight behind?

The iPhone has a lot going for it. That's an understatement. The device is beautiful, the experience is something only Apple could devise, and the SDK sucks. I mean it. It's going to get a lot of app developers where they want to go - iPhonesville, but the ride won't be a fun one.

I'll never get excited about using Cocoa. It's an ugly, crufty language. Only that sweet, juicy iPhone carrot at the end of that uglystick is enough to even get me to try.

Not only does the language suck, the platform is locked down tight as a drum (admittedly only by the software agreement, AFAIK). Can I daemonize a task from my app? No. Can I wake my app up on a location or time based API event? No. Can I share data between different apps? No. Can I replace any of the default software with software I like better? No.

Android says yes to all of those things. It even says "yes, please can I help you with that would you like anything else, sir?".

And as someone who prefers dynamic, readable languages like Ruby, far be it from me to cry up the merits of Java, but compared to Cocoa it's freaking poetry. Not only that, but Android has A DECLARATIVE LAYOUT LANGUAGE!

That means I can build interfaces in a way that makes sense, not in programmatic code, and not in a silly drag and drop interface builder. I don't want to drag and drop. I want to say what I want in a human readable format. That's what Flex has right. It's a language for describing interfaces. It's the best language for describing interfaces. Android's is subpar. But it's better than interface builder, that's for sure.

Android has one thing against it, and it's big. It's not going to run on the iPhone. It may relegate it to the scrappy underdog ghetto smartphone SDK for a long time. It will probably stay the platform of geeks and hackers and open source advocates and people who wear suspenders and sport long santy clause beards. Unless some visionary device maker frees it and lets it soar. We're all counting on you, device makers.

What kind of apps will people make for these platforms? Well, Apple will force the experience into a very rigid, consistently good, calming, happy, user experience. That's mostly good.

Android will sport a bunch of crazy, ugly, hacky apps, just like Linux does. The user experience will be a mixed bag, because any old geek that comes 'long and cranks out a sweet app won't take the time to make it as clean as the iPhone SDK will force apps to be.

The big deal, and here's what gets me, is there will be way more innovation on the Android platform. Why? The open API, for one. The fact that Third Party Apps are first class citizens. The fact that I can publish and share data between apps - even apps that I didn't mean to publish and share with - by describing my data in a conducive manner. The fact that the software that ships with the Android platform is only a suggestion and I can tout my app as a replacement for it and have the other apps on the phone work with my software as if it were the original.

iPhone software quality will be compressed and consistently good. What you can do with third party apps will feel good, but be limited. With Android the lows will be lower and the highs will be higher. Hackers will discover new ways to do innovative things, and I want in on that.

*Sigh* I'll still be in line in June/July/Whenever for my iPhone 2.0 and try to make cool iPhone apps, though, just like the rest of you. You can't make me like it though. At least not as much as Android.

No comments: