Observe the date on this post where I wrote about my new Nokia N95 and you'll see that I'm well past being in the market for a new phone. Before I write about the outcome, let me do a post-mortem on the old N95.
In summary: how the mighty have fallen. The N95 was a real flagship phone when it was launched back in 2007. Although there are few specs that pop out of the page by 2010 standards, the sheer laundry list of goodies included was pretty impressive for the time: 5 megapixel camera with flash, GPS, Bluetooth, WiFi, HSPDA 3G, front-facing camera... and Symbian Series 60.
As this famous post laments, Symbian was both brilliant and awful. That is, brilliant in 2006, and awful in 2010. The world has simply moved on, and although I did manage to get PuTTY, Opera, Google Maps, Python, ScummVM, and even the internal undocumented unused accelerometer working, it was always at the level of a "hah! Look at what I made it do!"-hack. Both the hardware and the software couldn't quite handle modern expectations of Apps.
Now I don't believe that things become uncool just by being popular, so I went to have a look at the screen on the new iPhone 4. It really is super-gorgeous. I can't see the pixels. I really hope that panel foundries take note and start producing high-dpi displays in all form factors. A 300dpi monitor for my desktop PC might cure the cruddy font rendering that GNU+Linux distributions still seem to have, through optical anti-aliasing.
So picture this in the O2 shop: four brand-new iPhone 4s arranged around a marketing island, all packed with whizzy demo apps, in the centre of the shop. Then picture this: a single anonymous Android handset on the opposite side, in between piles of non-smartphones, displaying a Java exception.
But if the public Java exception is the new BSOD, then Android has a rosy future. Microsoft did eventually fix the blue screens of death. Apple may appear to have the upper hand in the mobile market, but they've had the upper hand before, with the Mac in the 80s, only to lose out to the more chaotic, buggy platform through keeping too tight a grip on developers. The more they tighten their grip, the more apps will slip through their fingers.
I decided eventually on the HTC Desire. Technical details are well-reviewed elsewhere, so I'll cover my mixed impressions. Firstly, it's an attractive device, but obviously not as pretty as you-know-what. Secondly, it's half the price of you-know-what. The most obvious difference between the Android philosophy and the iOS philosophy is the attitude to multitasking, and it works both ways. I've had an SSH connection going through ConnectBot, while cranking the Dreamhost Panel in the browser, reading email in the Gmail app, and talking on the Google Talk app, all simultaneously, and switching with ease. This is simply not possible on iOS, and it's the reason I went with Android. The flipside is that having multiple processes running at the same time introduces CPU contention, including the possibility of uncontrolled garbage collects, which seemingly make simple things like smooth scrolling impossible on Android.
I find each individual component of Android unarguably superior to the equivalent piece of iOS, but the whole thing does not yet hold together as one coherent Chunk Of Technology the way Apple have managed; this is very likely a philosophical difference that will never be resolved. This difference has always been with us - monolithic vertical integration has always delivered a superior user experience and better reliability (see: the Nintendo stack and the IBM mainframe) at the expense of flexibility, innovation and, well, just pure expense.
As for the HTC Desire hardware, it's competent, but nothing that won't be obsoleted mercilessly within six months. I'd recommend an iPhone 4 for anybody who enjoys a shiny toy and a light wallet, but an Android device for anybody who appreciates the finer points of living somewhat out in the wilderness.
To truly conclude, the N95's camera is still brilliant (2955 photos taken), and I only used the media-button-slider twice: once to see what was under there, and another time to show somebody else what was under there.