
UPDATED: Added comments on backend story.
I've been knee deep in my book and a super secret project I can't talk about yet but that project and some conversations i've been having (on Twitter and with the Atlanta Pros User Group when we discussed HTML5). It started with the exaggerated death of Silverlight. I was asked at length to comment on what how HTML5 and Silvelright compete and other topics. But after looking at a lot of different things, I came up with a different idea...
While we as technologists (or, if you prefer, geeks) are concerned with finding a winner in this fight, users don't care. What users do care about it access to your application. In the enterprise space this is easy. We can dictate how users access our applcations typically. We can specify the operating system and browser and build for a static platform. So that means building with Silvelright, Flex, .NET or Java; it doesn't matter. There are reasons to pick all these different platform choices (and I won't belabor them here). But that's where you're building a single experience for a well-known set of users. This is a lot of you out there.
The problem is that applying this same logic to the broader reach of users doesn't work. All it takes is one CIO with an iPad or Android phone to really screw it up. When you're building truly reaching experiences (ones that need to reach the maximum number of users; whether they be consumer or business users) the common strategy has been to find the platform that reaches as many of these users as possible. HTML has been a common approach here. Build the website and they will come. Even extending the website with other facilities like Silverlight or Flash has been a useful. But things are changing.
The environment is changing. It used to be that the experiences we had were on a computer: desktop or laptop. That what the nature of how we interacted with computing devices. Uber geeks and others were hot on smart phones, but they didn't attract much traction outside of corporate America until Apple changed the game. The iPhone was crucial to bringing the masses to other devices. Both the iPhone and the iPad have gotten the general public to use computing devices in many more ways that before. For the Apple-phobic, Google filled in some of this need first with Android smart phones and recently with tablets.
None of this is news to most of my readers. You know this; you have the phone; you have the t-shirt. The problem is how to extend your reach to the mindshare of these users? Because plug-in development (e.g. Flash and Silvelright) don't extend to iOS devices (e.g. iPhone and iPad), the common expectation was that you should go to HTML5. It would fix everything. I like HTML5, but I think you're duct taping a horn on a horse and hoping it will become a unicorn. While the browser on iOS devices support HTML5, will that be the way users want to experience your product? Nope...
Let's look back at the history of what happened with the iPhone. When the iPhone launched in June 2007, they didn't have an AppStore. In fact, they didn't want them (im my opinion). The early advice was to write apps for the iPhone, you should write applicaitons for the Safari browser. That would be the app model for the phone. The important quote was:
no software development kit is required for the iPhone
But it didn't work. Why? Apps are a better idea. This rings true for me today with building experiences for users. The experience of the application (while more work) it better. And more importantly, can take advantage of the platform. Building a single experience for all users, no matter the device is a challenge. Even mobile pages are a hack at best IMHO.
Look at the Facebook example. They've built a great web site (ok, let's not debate that) that allows users a lot of different types of functionality and helps them gain a ton of users. But guess what, the Facebook website isn't the way many users interact with it. Facebook apps (through their APIs) are an incredibly common way to make this work. Facebook has the sticky-ness because they're everywhere.
There are two approaches here (probably more though): build it or build the community. You can decide because of your particular product that you need to build the application yourself because you want to reach all your users. You may take the Twitter/Facebook strategy of building great API's for a community to build applications on top of. Neither of these approaches are exclusive either,
"But what technology should we be using to get this reach?" This may be the question you're asking yourself now. The unfortunately (but oddly fortunate) answer is all. I think for a number of products out there you will be building:
- An HTML5 solution for the web.
- Using Plugins to extend HTML5 as necessary (though less important these days).
- Building Desktop/Browser apps for in-house/well known customers (e.g. Silverlight, Flex, .NET, Java, etc.)
- Building Apps for mobile/tablets in Objective-C, Java and Silverlight.
This means as a developer you'll need to expand what you know and learn more platforms. Is that bad or good? Both. It means more work for all of us, but it does mean you'll need to less focus on silo's of platforms and use your knowledge across these platforms.
So a quick note about that last bulletpoint. Why not build for the 'winner' of the smartphone/tablet space? Because there will not be one IMHO. Three years ago, the idea that iPhone could get the kind of penetration it has could not have been predicted. Could iPhone kick out Blackberry? But wait, they didn't. iPhone primarily ate into candy-bar phones. They brought the smart phone to the masses. And their strategy of a single carrier has backfired I think somewhat. In fact, Android has a bigger market share right now. So why didn't I mention Blackberry there? Because they've been sitting on their hands for too long IMHO. Look at this chart that shows how Android has taken Blackberry's marketshare on Verizon (largest US carrier) from 90% to less than 20%:
And you might take exception to my inclusion of WP7 in my suggestion. I have a bias and I think the phone will make big in-roads in the next year, but it takes time to get there. Probably the v2 that supports enterprises more will really be the tipping point. But I think its here for real.
There is good news though. Because you're primarily looking at user interface platforms. The back-end is likely going to be ubiquitous. You can build the hard part of the platform using a single platform and only focus on the change in UI based on the device. This also means that you can use your current (or favorite) skills to build the bulk of the applications. (added 12/12/2010 8pm)
What do you think? Excited or scared to learn these different platforms?

I spent most of the last week with my early demo Windows Phone 7 (e.g. WP7) phone as my primary phone. See I am a Verizon customer currently and therefore I couldn't use Verizon on the demo phone (as it takes SIM cards and Verizon can't spell SIM). So I took the opportunity while in Europe to get a pre-paid SIM card and use it as my main phone (since my Droid was useless there). You're probably wondering what my impressions were? Well, two caveats to start with...I have bet pretty heavily on the phone so I am not exactly a neutral party, but I'll try to be. Also, I've never owned an iPhone (AT&T is true evil incarnate) so take that for what its worth.
History with Android
I have a Droid (the original Droid from Motorola). I started with Android 2.0 and upgraded to 2.1 then 2.2. I've paved it a few times on 2.1 and 2.2 so I don't think the experience I detail here has anything to do with upgrade paths.
When I got my Droid, I loved it. Really loved it. I like to say that after three days with my Droid, I figured out I could make phone calls too! I got pretty comfortable with the overall usage of icons + widgets to customize my phone. I liked this quite a lot.
That was early on. I started to notice that several apps that were running in the background (or more importantly running a service/agent in the background) would really impact the performance of the screen. It was annoying but not disruptive. In fact, until the 2.2 (Froyo) update this seemed to work pretty well. Since then my experience has gotten really bad. I've spent more time than I'd like to tracking down bad services and uninstalling certain apps that were killing my phone. The typical experience is unlocking the phone and waiting 5-15 seconds for the icons to appear. Spending an hour with tooling to figure out which service was eating my phone just sucks.
As I've talked about before with this blog, Android quickly started feeling like an old Windows Mobile device. The developers could really do whatever they wanted and as a user I was paying the price. Most of the apps that were a problem were trying to cover deficiencies in the device's built-in apps (e.g. a SMS app that did better threading was one of the early culprits but needed a background service to watch for SMS messages coming in).
Another issue for me is that the Android doesn't require a GPU so the performance of some games is merely dreadful and others are extremely dreadful. Angry Birds regularly stutters on me...this is a 2D game...it shouldn't be that bad...but it is.
During this time I got my ex-girlfriend an Android (Droid Eris). Immediately I realized that this was not the same device at all. It was underpowered but more importantly, the operating system was completely different. Helping her out to find certain things in the phone (simple things like where the phone book or gallery were) was hard. Even the look and feel was different. This is because Android let's the carriers and handset manufacturers to change the OS to their liking. Hrmph... I want a better experience...maybe the Windows Phone 7 will do that for me.
A Week with the Windows Phone 7
Big caveat, I have a pre-production LG device that is great to build apps for, but isn't representative of the released hardware.
Once I arrived in Amsterdam, I hit my favorite phone shop in the airport and picked up a pre-paid SIM. I did not get Internet access on the phone (still depending on Wi-Fi for that). It was a cost thing than a limitation of the phone.
The first thing to really think about WP7 is that this isn't the same experience you're used to on an android. The pinned icon screen and moving icons around is very different. Also, there is a heavier use of the Application Bar on the phone. I like Android's dedicated "Menu" button but for new users I think the Application Bar might make more sense. My ex-Girlfriend is still confused by the menu button on Android. A small data point but one that I noticed.
What I Liked Better
As a phone, I was really happy with the experience. Phone calls just work as expected. The phonebook and num pad both made it easy to make phone calls. Even after turning on "International Assist". SMS was easy too. I found the threaded conversations better than the built-in Android SMS app.
I also loved the Email client on the phone. I am using the same backend for both (Google for Apps' email hosting). I find the email on WP7 to be snappier and the Application Bar really helps with common tasks. Searching for emails on the phone (even when I didn't have Internet access) was snappy and found what I needed. This was a huge benefit for me as the mail app on the Android depends on the cloud to work.
I really love the way that my online presence is exposed through the different hubs. The People hub is more than just a contact list now. It shows shared pictures, status' and other information about my network. In the Picture hub, the shared pictures show up there too. So I am not looking at me, but my world (as it is online). I love this part of the phone. The ability to have pictures I take automatically moved to a SkyDrive or manually up to Facebook is cool too.
The games I had installed on the phone worked great (with some small hiccupping in Bejeweled but I am not sure why since of the games I played, that was should have needed the smallest amount of horsepower). On the way from Amsterdam to Zeist (location of the conference) I had 40 minutes to kill and gained 25 XBox Live Gamerpoints. As an XBox addict, this was pretty awesome. I played with a number of the games and I was really impressed with most of them, but "The Sims" got me as its a pretty complete game for a phone (they've removed some features, but still).
I have a Zune, so the phone had to be as good as that for music...and it is. I like it a lot and it uses Pivot's to help me find the right music or playlist to play. The Zune client allowed me to sync with the phone easily and mark what I wanted to move and it just worked. I was pretty impressed with the fact that when I had my Zune and my WP7 phone both hooked up (to charge for the trip) I could sync to both devices at the same time!
As far as apps on the phone, I am using most of the same ones I used on the Droid including:
- Seesmic (for Twitter access)
- Facebook (for um, Facebook)
- Adobe Reader (to view PDFs)
- Calorie Counter (from the same FatSecret.com people that I use on my Droid)
- Flixster (for Movie reviews/ticket buying)
- IMDB
- OpenTable (for making restaurant reservations)
- Shazam (for detecting songs in ambient noise ;)
- Yelp (to get reviews of local stuff)
I use all of these on my droid. None of these struck me as a port. They all embraced the Metro-ness of the platform (mostly to good affect).
Since this is a LG Phone, it had access to the LG App Store (yeah, manufacturer's will have their own stores). The only app I really tried there was a Panorama Picture taking app that is awesome. It helps you by not only drawing where it thinks the next picture should be but also when you put it in frame it snaps the picture for you. Making panorama images has become a snap. The camera on the pre-production unit isn't great so the pics aren't terrific, but all the stitching was all done on-device...nice.
I tried the Netflix app while in Europe and it didn't work as while on Wi-Fi I got the familiar "not in this region" result. Back home it worked great over Wi-Fi. Without a 3G connection to try, not sure how good it is in general. But their Metro-fied UI is really good for continuing the last thing you were watching (on another device). Sweet! It knew what episode of "The Office Season 6" I was on and suggested I wanted to continue it.
What Need Improving
When making phone calls in Europe, the phone didn't know how to take a US phone number and know it was on a European phone network and do the magic to make the calls ("+1" FTW).
When playing music, I twice needed to reboot the machine to get the music to play. This feels like a hardware issue not a software one but I not sure until I get a real device to try.
On my Droid I love the homescreen widget that let's me switch Wi-Fi, GPS and Updating on and off. I had to dig into the Settings to do this every time. Not perfect or show stopping but annoying.
The Marketplace is still getting confused about downloads and sometimes a download gets stuck. Updates are similar but that seems to be getting better (maybe a service problem not a client one).
Some apps can play sound even when muted which is confusing to me. I like Android's multiple volumes that are contextual (e.g. Media Volume can be up so I can play music while the phone is muted).
What I am Missing
The biggest thing I am missing isn't Android's fault. I have a Motorola Droid and Motorola supports a couple of docks that are really compelling. The car dock automatically switches the phone into Car Mode which makes using it really easy. Likewise, the Alarm Clock makes it into an alarm clock for me (though the compelling part of that is to help remind me to charge it).
Another issue is Turn-by-Turn directions. I use my Android in my car a lot. And the Turn-by-Turn directions are exceptional. In fact, they are better than any TomTom I've owned. The traffic info is also really up to date when 3G is enabled.
Voice Search is important too. While the WP7 has this capability, Voice Search in the car is where the Android shines for me. Being able to say "Navigate to Sandra" or "Send SMS to Sandra" in the car is completely compelling. Until I get a good 3G connection, a car dock for a WP7 phone and a Turn-by-Turn app, I won't know if I can replace this experience.
The only thing I noticed missing was "Angry Birds". While most of my app usages are already met (see above) I expect the day to day apps I might use may be missing.
Conclusion
While there are a few missing pieces, the better experiences I see on the Windows Phone 7 make it an exceptional v1. When I think where the phone might be by a 2.0, I expect to be blown away. Remember, I am comparing the first release of Windows Phone 7 with a maturing Android OS.
Of the missing pieces, I expect the Marketplace to fill most of them. As mentioned above, most of my daily apps are already there and phone's haven't kicked off in the US yet. Wow.
What do you think?

While I have been exceptionally fortunate to get a Windows Phone 7 device, I still am using my Motorola Droid as my primary phone. The primary reason is that I use Verizon and my WP7 phone uses a SIM chip (Verizon doesn't use SIM chips). I expect you're reading this post to gleam some information about the WP7 phone, but let's start with the Android.
As some of you may know, the 2.2 version of the Android operating system (a.k.a. Froyo) was released and finally made it's way to the Motorola Droid last week. Google had promised a big performance boost with Froyo (100-500% by some accounts) mostly based on the new JIT compiler. So my expectations were pretty high. I got Froyo installed and while I liked the new features and home page changes a lot, I didn't see much performance change. In fact, the new phone felt downright sluggish. Event swiping the home screen was slow. So what gives?
I decided to do a little digging. My installation of Froyo was over an existing 2.1 phone. So all the old apps I was using were all still installed after the update. So I pulled out my trusty OSMonitor app to see who was eating up all the cycles. OSMonitor (unlike the extremely popular Advanced Task Killer) shows all the processes on the machine. I finally found that the replacement SMS program I was using was performing like a dog. Uninstalling it and going back to the built-in SMS app fixed the performance problem and I am happy with how the phone behaves now. But there is an intrinsic problem here. I had to use some spelunking to find out what background processes were killing my performance. This is a big bucket of FAIL.
Phones aren't for geeks, they are for regular people like my mother and my sister. The fact that most Android users learn to use a task management app means there is something wrong. Arguably this was the biggest fault of Windows Mobile devices. It was too easy to kill the performance of the phone with a single bad-acting application., My mother and my sister won't do that. They'll just complain and put up with it and hate their phone. I think this is what Apple got right with the iPhone. The overall experience has been better because of the lack of true background processes.
So that brings us back to the Windows Phone 7. I've run into a lot of Windows Mobile developers who are angry. I empathize but most of those guys are Enterprise developers. I hope they read this because they aren't the audience for this phone. Sure, Microsoft will certainly help those guys do what they need to do eventually, but right now its about winning back the consumer-level phone. Give Microsoft a revision cycle to get back to you. I know its hard, but its the right thing.
I am ecstatic that Microsoft is protecting the sandbox in Windows Phone 7 so carefully. Sure it makes it harder on developers, but it doesn't make it impossible. Arguably even with the strict sandbox and tombstoning, writing apps for the new phone is going to be much easier than Objective-C, or maybe even for the Android. This is what I think is crucial. We (the developers) aren't the most important customers to the phone, the consumers are. We're all bright people, we can work around the restrictions to create better experiences for the phone users. Working around the limitations (using Notification messages, and the lifecycle of apps) means we have to work harder, but when consumers love this phone, they'll buy more apps...meaning we'll have fun making more apps.
Temper your cynicism and remember that this is the first revision of the phone. Sure, Apple is ahead but as we've seen with the XBox, no lead is insurmountable. With Microsoft's ability to update the OS without involving the carriers (unlike Android), additions to the OS to improve the experience for all phones (and developers) is an update away. The WP7 ecosystem is run by a similar team to the Silverlight ecosystem. Iterating quickly, frequent updates, and open source solutions to fill in the holes. Just wait for those first phones to hit the shelves, its going to be a fun ride...at least I hope so.
What do you think?