These *are* the droids I am looking for

droidAndroid is, hands down, the best mobile OS I’ve ever used and HTCs implementations of Android are, hands down, the best Android phones I’ve ever used. I have had a lot of phones. With the exception of WebOS and iPhone I think I’ve had some form of every major phone type, from the earliest analogue Nokias and Motorolas through successions of Windows Mobile, Blackberry, Palm Treo and Symbian devices.

So far I’ve had 3 Android phones starting with the HTC Hero, then the Motorola Milestone/Droid and now the HTC Desire. At the time the Hero was the best phone I’d ever had. That title has now been taken by the Desire. With the exception of the Palm Treo 600, which was truly revolutionary, pretty much every Smartphone I’ve had up to the Hero has been a crushing disappointment. The Smartphone is a platform that has taken a LOOOOOOONG time to get right.

Android on it’s own isn’t quite enough though as evidenced by the Motorola Milestone which is appalling. I mean REALLY bad. If this is the device that is supposed to save Motorola’s Consumer Mobile division then I’m getting my funeral suit out now. It stinks. It’s ugly. It looks like the front and the back of the device were designed by two people who never met or met once and fell out so badly they couldn’t even agree on what size the device should be. It’s clunky. It reboots itself at random sometimes getting stuck in a viscous cycle of continuous reboots. The HTC devices on the other hand are beautiful, sleek and ergonomic. hero_lineup1

Gorgeous HTC hardware isn’t enough on it’s own either though as evidenced by the HTC HD2 which is probably the most beautiful piece of mobile hardware I’ve ever had. Yes, Windows Mobile can ruin even hardware this good. Even with the deepest, most thorough-going reskinning WinMo has ever seen you can’t hide the crap below the surface forever and soon or later it leaks out all over the user.

The Desire (and the Hero before it) are the perfect union of magnificent hardware, solid OS and a great skin. HTC Sense has its detractors but I love it. Here are the things that have absolutely clinched it for me.

desireEmail & Calendar – I can seamlessly sync my email, contacts and calendar with my company Microsoft Exchange server. I can do the same with desktop Outlook. I can also directly pull in my various POP3 and IMAP email accounts. All this JUST WORKS. The push works, the notifications work, sending and receiving meeting invitations works, the signatures, the quotas, the attachments the peak and off-peak sync schedule ALL JUST WORK. My calendar items from Exchange, desktop, the device itself and Google calendar can all appear, neatly colour-coded, in one calendar view.

Contacts & Social Networking – the people view is brilliant. My Exchange contacts, my phone book contacts, my Facebook friends, my Twitter and Flickr friends all woven together 95% automagically. I can also merge Facebook, twitter and Flickr into a single “Friend Stream” and drop that on one of my many customizable home screens.

Browsing – here we have the best mobile browsing experience ever. The rendering is crisp and lightening fast. Zooming using a combination of double-taps or pinch/pull gestures is a breeze. Flash video is supported. Even a busy, media rich site like Sky Sports or the BBC will render quickly and smoothly in full screen and be completely usable. There is also an excellent newsreader application with a full-screen, home screen widget.

Music – The music player looks nice both in full screen and widget mode. The album art animations when using gestures to switch songs is smooth and sleek. The sound quality is excellent. As with many devices the maximum volume is not very high so you will need good, noise-cancelling headphones for use on the train. The app itself allows you to easily create, edit and organise playlists. The ace in the pack is Amazons MP3 app for Android which lets you quickly, find, buy and download music by the song or album on the go. Purchased songs arrive quickly and seamlessly in the player with full album art.

Photos and Video – The camera on the Desire is 5 MP with LED flash and takes good photos and video. Media is organised is easy to browse albums which a wealth of tools for organising and sharing.

Maps and Navigation – Google Maps is a triumph on Android and they have recently enabled turn-by-turn voice navigation for the UK. There is also an excellent, free, open-source navigation app in the Android Market called Nav4All.

Applications – The Android Market is a complete treasure trove with over 35,000 apps and is growing fast (i.e. it went from 16,000 to 30,000 in only 3 months). I have yet to find a requirement for which there is not an app and over 60% of them are free. The Apple App store may have over 140,000 apps but given that 57 of those alone are just for making fart noises I don’t think that represents a huge gap in actual utility and feature coverage.

Here are some of my top tips for great Android apps (in no particular order) :

  • Catch (formerly known as 3Banana Notes) : 3Banana let you take, store, tag, filter, search and organise notes like a notepad or post-it notes. You can include html, links, QR Codes, images, video, photos, geo-tags amongst other things. 3Banana also syncs your notes into the cloud so you can view them from any device or PC. You can also share notes via Twitter and Facebook. It also has a desktop widget so you can pin notes to you home screen as reminders.
  • Foursquare : if you are a Foursquare user you will love this. A very nice, full-featured client for the popular social networking service.
  • Layar : one of the first Augmented Reality (AR) browsers and still the best. Layar uses a combination of your camera, compass, accelerometer and feeds of data to superimpose layers of data over reality via the screen of your phone. You point your camera at the world around you and magically it is augmented with additional data, graphics, photos, 3d models and messages.
  • Amazon MP3 – Buy songs and albums in just a few simple clicks and have them downloaded straight into the media player on your phone in moments complete with artist details and album art. Average price for an album seems to be about £6.49.
  • Google Maps and Goggles : Google maps with turn-by-turn voice navigation is brilliant and very simple to use. Goggles is part Augmented Reality browser part visual search engine. Simply take a photo of anything around you and Google will provide you with a set of search results. For example, take a photo of a movie posted and Google will tell you the film, who’s in it, what the reviews were, where it’s on nearest you, directions to the cinema and provide links to book tickets to the next showing on line. Also works with books, bar codes, QR codes and an ever growing plethora of things. Amazing !
  • AndroMote : Is a media remote. It can connect via Wi-Fi to any media server on your network and stream music and video to your phone. You can also view other media files such as photos.. It can also connect to media renderers on your network and remote control their streaming functions. I have tested it with Orb and TVersity  and it works fine.
  • RecordIt : Great app that allows you to remote connect to your Sky+ or Sky+ HD box and schedule recordings.
  • beebPlayer : BBC iPlayer for Android. Watch live TV, browse and watch iPlayer archives, listen to BBC Radio. NB : this app has now been discontinued. Checkout myPlayer instead or, if you have Android 2.2, try the BBC iPlayer Website directly in your browser.
  • Ethereal Dialpad : A very cool synthesizer app that allows you to use the screen of the phone as a control surface to play sounds. Also provides nice touch feedback using visualisations.
  • Remote RDP : Have full remote desktop access to your PC via Remote Desktop Protocol. Very cool.
  • Uloops : A very cool sequencer and mixer that allows you to create and mix multi-instrument tracks on your phone. Upload them to the ULoops community portal. Doanload, rate and remix other peoples tracks.
  • Ringdriod : Open and play any MP3 or music file. Select any segment of the song and save that as your ring tone.
  • Seesmic for Twitter : One of the best Twitter clients for Android.
  • Shazam : The classic Shazam service for Android. Hear a song playing that you can’t identify ? Open up Shazam, let it listen for a few seconds and it will tell you the song.
  • PicSay : Quickly edit photos to add speech bubbles, fun effects, cartoon hats, facial hair and other accessories.
  • Nav4All : A free, open-source satellite navigation system.
  • Nimbuzz : a single Client for multiple IM services such as Windows Live, MSN, Yahoo, Skype, Facebook, Google Talk. Orkut, AIM, MySpace, ICQ, Gadu Gadu and Hyves.
  • NetCounter : Keep track of your mobile and wi-fi data usage by hour, day, week and month. Show usage stats and graphs and add custom counters.
  • Google Listen : A great PodCatcher from Google Labs for keeping up with all your podcasts. Features auto-sync and download and a managed listen queue that keeps track of where you’ve got to on your busy listening schedule.
  • DropBox – 2GB of cloud storage accessible from your phone for free.
  • Epicurious – very slick recipe app. Rich, high-quality content nicely presented.
  • Share Your Board – brilliant app that allows you to take a photo of a whiteboard. It then performs edge detection, de-skewing plus colour and contrast correction so you end up with a crisp, clear image of your whiteboard.
  • Swype – one of the best applications for Android. It is an alternative to the built-in on-screen keyboard that you use by swiping or tracing out a word from key to key. This is how on-screen keyboards were MEANT to be. The speed at which you can input and the accuracy with which it guesses what you are swyping means that it beats every other mobile keyboard (inluding hardware ones) by a country mile. It’s in closed beta at the moment but check out these short demo videos to see how revolutionary it is.
  • Square/SquareUp – this is only available in the US at the moment but it is a combination of software and a credit card reader that plugs into the audio jack on the phone and enables anyone with a back account to take mobile payments. A real game changer. Let’s hope we see it in the UK soon.

Apps to watch out for :

  • Kindle – Amazon will soon be launching their Kindle software for Android. NOTE : this has now been released.
  • Sling Player – an Andoird version of the client software for the SlingBox appliance. NOTE : this has now been released but costs $30. Dream on, Sling !

A Couple of Bugs (or not)

A couple of niggles have come to light today. The first one is that Windows Azure does not seem to support the latest version of the Azure .NET Services Bus. The recent release of the .NET Services SDK, the July CTP, included a new version of Microsoft.ServiceBus.dll ( This version is not available on Windows Azure. After I had updated my SDK I rebuilt and redeployed a Windows Azure cloud application with a Web Role that calls service bus endpoints. This started throwing all kinds of odd exceptions which was confusing as it (of course) worked fine on my machine. I eventually tracked the issue down and the only way round it at the moment is to set the Copy Local property in the properties of the reference to Microsoft.ServiceBus.dll to true. That way it will get deployed with the application.

The second issue was a kind of two in one. I’m developing some prototypes for Windows Mobile using the .NET Compact Framework 3.5. One of the things I’m working on is a method of keeping mobile devices synchronised via .Net Service Bus queues and routers. There is no native support for the Service Bus on .NETCF but fortunately I only need to make REST calls using a meteor pattern to poll a queue for sync messages.

I had two problems. The first was that I could only poll a queue twice using HttpWebRequest before I’d start getting timeouts. This turned out to be because I was hitting the max connections limit (2 by default), even though I was carefully disposing of responses and closing response streams etc. The second was that I would always get an ObjectDisposedException at System.Threading.WaitHandle.CheckResultInternal when I closed the application. The polling of the queue was of course being done on a background thread, so looking at the two together it did seem that some resource was not being correctly released somewhere.

Looking into the stack trace of the ObjectDisposedException exception I could see references to HttpWebRequest and stream writes. It occurred to me that because I was using REST I was only ever sending headers in my HttpWebRequests, and no body. When I was calling WebRequest.Create() it was possible that the request stream was being opened and because I wasn’t using it it never got closed. As these requests were being created on my background thread they would not dispose correctly and they would continue to consume connection resources and possibly casue thread termination exceptions.

The answer was to close the request stream before sending the request :

try{    HttpWebRequest dequeueRequest = (HttpWebRequest)WebRequest.Create(_QueueHeadUri.AbsoluteUri + "?encoding=asreply&maxmessages=1&timeout=15");    dequeueRequest.ConnectionGroupName = "queueclient";    dequeueRequest.Method = "DELETE";    dequeueRequest.Timeout = 30000;    dequeueRequest.ContentLength = 0;    dequeueRequest.Headers.Add("X-MS-Identity-Token", this._AccessToken);    // this next line is the key     dequeueRequest.GetRequestStream().Close();    using (HttpWebResponse response = (HttpWebResponse)dequeueRequest.GetResponse())    {        if (response.StatusCode == HttpStatusCode.OK)        {            string viaString = response.Headers["X-REQUEST-HTTP-URI"];            Uri viaUri = new Uri(viaString);            if (this.OnMessageDequeued != null)            {                this.OnMessageDequeued(this, viaUri.Query);            }            continue;        }        if (response.StatusCode == HttpStatusCode.NoContent)        {            continue;        }        if (this.OnMessageDequeueError != null)        {            this.OnMessageDequeueError(this, new Exception(string.Format("HTTP Status Code : {0} : {1}", ((int)response.StatusCode), response.StatusCode)));        }    }}catch (Exception ex){    if (this.OnMessageDequeueError != null)    {        this.OnMessageDequeueError(this, ex);    }}

Text Fraud

I just received this text message :
From : +447833983690
Large Parcel Awaiting Delivery
Please Call Now on +23222270680
For Delivery Tomorrow
International Parcel Deliveries
It’s lucky I’m such a suspicious person because, had I got carried away in the excitement of receiving a “Large Parcel”, I might not have noticed that the number starts +232 (for Sierra Leone) and would have ended up talking to a convincing telephone queueing system on a premium rate line in a distant foreign country. Having Googled these numbers and the content of this text it seems that this con is now absolutely rife on UK networks.
It’s the latest evolution in simple mobile phone scams which started with missed calls where your phone would barely ring even once and you’d see a missed call message and an incoming caller id. The number displayed would look to the untrained eye like a UK mobile number (07…….) but it would actually be a premium rate number at upto £1.50 per minute. Calling back would normally elicit some kind of recording simulating a call waiting message to keep you on the line for as long as possible. Then there were the text messages telling you there was a voice message for you at a certain number…same scam new variation and so it has gone on.
As far as I can see mobile operators in the UK have done little or nothing to combat this kind of fraud. At the end of the day it’s something that will cost them money to prevent and only benefit their customers not their bottom line, so I’m not holding my breath. However, ultimately they will have to act. This is just the tip of the iceberg. As mobile phones get more complex and more connected and more location aware and so on the scams will get more sophisticated. These text scams are really just simple versions of the Nigerian 419 scams, but all the more dangerous because of their simplicity and the fact that the mechanism for extracting money from the victim (the premuim rate service and the phone bill) are already in place. There’s almost no thinking time for the victtim between the initiation of the scam and the money being gone. It’s literally just the press of a button in some cases.
Mobile operators need to act soon to introduce spam/content/phishing filtering on texts, and systems for reporting the source number of scam messages so they can be blocked. Just a number that users could forward suspect messages to would be a good start. Mobile users also need to be able to opt in to call barring schemes so that if they inadvertently call a premium rate or international number that is not in their phone book or on a personal “white list” they will get an audible warning before the call is connected.
These kinds of scams cost very little to perpetrate. They’re not as cheap as email scams but scammers will pay a small premium to have access to the mobile operators billing system. By comparison, the return (one user complained that his call to Sierra Leone cost him £20) is excellent.
Since I posted this blog entry, currently about 18 hours ago, I have had over 60 hits from Google alone where one of the phone numbers was used as a search term. Bear in mind that this blog only ranks as the 6th result so I’m only getting a tiny fraction of the searches. The site allows people to submit and share information about nuisance callers. The number in Sierra Leone currently has six pages of notifications at 20 per page.


There seems to be so much happening at once. There is currently a convergence in mobile computing. Smartphones have been getting smarter and laptops have been getting smaller and now all the mobile operators are offering netbooks free (or very cheap) with mobile broadband contracts in much the same way that they have always offered free mobile phones with airtime contracts. Three are even offering a wireless mobile broadband router that you can plug your mobile broadband USB modem into in order to share it with others. We just need to get the price per GB to come down so that sharing your mobile broadband isn’t like throwing money out of the window and bring roaming data/broadband in out of complete rip-off territory. We are also seeing the first devices to feature Qualcomm‘s new GOBI chipset which allows devices to connect to any wireless network anywhere. It will handle all major RF bands, uniting Wi-Fi and 3G, and has inbuilt GPS functionality all on a single, low voltage chipset.
At the same time there has been a lot of activity around connectivity and adding some smart to the internet as it transforms itself from a series of tubes to a cluster of clouds. Not least of all Microsoft’s recent and long overdue announcements at PDC about its cloud computing platform and other good stuff in the pipeline. We should also finally see some movement in Live Mesh, which has been sitting around like a 3rd wheel for so long you almost started to feel sorry for it. We should expect Mesh connectivity for mobile devices imminently so we can finally start getting all our devices connected, sharing and syncing in the cloud. I would also expect to see some kind of Mesh connectivity for the XBox 360 soon and the first pure Mesh and Mesh aware apps.
Finally there’s Silverlight for Windows Mobile, Silverlight for Symbian S60 (Nokia et al), Steve Jobs hinting at Silverlight for iPhone, Mesh in Windows Mobile 7, Windows 7 itself and a full .NET compact framework for Symbian S60 (albeit not a free one) from RedFiveLabs.
We are still waiting for the next big revolution in mobile power to close the loop but there have been a recent spate of advances in photo-voltaic cells and in batteries that run on plant cellulose, water, sugar, urine…you name it, someone is getting volts out of it. Some of these new power cells are also biodegradable which is doubly cool.
However you look at it the future of computing is looking mobile, cloudy and increasingly silver.
%d bloggers like this: