skip main content

Switching from iPhone to the Android powered Nexus One

posted by Duncan at 6:45 pm on July 14th, 2010

A few of my friends seem quite surprised I switched from iPhone to an Android powered Nexus One a few weeks ago. I got one via Vodafone here in the Uk. Here’s some stuff I learnt during the switch, just in case you were thinking of doing the same. The headline, in case you can’t bear to read anymore is I’m not regretting it.

Nexus One

When my old contract ran out about 2 months ago on my iPhone 3G, I held back on renewing specifically to wait for iPhone 4. I’d seen the Apple keynote and was as excited as everyone else. But I had also seen the Google IO keynote for the 2.2 version of Android, code name Froyo. They showed a pretty impressive demo, and in some respects looked like they were ahead of Apple. Here’s a couple of features that really wet my appetite:


I realise I rely quite heavily on notifications, especially in this more Real-Time era. The current notifications system on the iPhone is pretty poor. I’d love to see stats on who currently chooses to receive push notifications and even more, who pushes them. The new local notifications in IOS4 is interesting, a bit Growl like. The problem is the ‘a bit’. I personally want notifications to alert me of something, and then sit in the corner where I can see them. On the iPhone you get an alert, and then you have to make a decision on what to do then and there because the dialog box blocks the screen until you do. Android have a much nicer model. There’s global notifications, and then custom ones per app to override. Notifications get fired, and then sit in the status bar, waiting for you to do something about them. It is a more complex UI than the Apple version, but I don’t mind that. It will also be interesting to see what Android do with their over the air notification/messaging.


I was fortunate enough to get NetShare before is was taken from the App Store. It proved really useful on my train journeys on the way to work. Problem was it made my phone get pretty hot, and was a pain in the arse to set up every time so I stopped using it. That and the fact it could be deleted by Apple at any time. Froyo on the other hand has WIFI HotSpot. This is awesome. Click to make a hotspot, add credentials, and then bingo, you see it in your WIFI networks list, then connect to it like any other network. That and seven other friends can connect too.

The rest

Before I mention the things that may well be specific to just me, the other big thing that made me switch was cost. Currently, between me and the wife, we have 2 Apple laptops, 4 iPods, 1 Airport and 1 Apple Tv. As well as that hardware, I have a mobileMe subscription, and an iPhone developers account. I think it’s fair to say I’ve given Steve enough money for the time being. The idea of shelling out the ever increasing cost of a new iPhone plus the lengthy contract, was the straw that … etc etc.

My N1 cost me £80 and Fonebank gave me £180 for my old 3G, so I saved a chunk of cash from the get-go. I won’t be renewing my mobileMe account even though the robot [at] me email address is quite cool, and I don’t think I’m going to renew the developer account either. I have two apps in the app store, and whilst they have paid for my developer account, they have definitely not paid me for the amount of time I put into them. And whilst people seem to like the apps, I just can’t justify sapping any more of my own precious private time when there is no financial reward, there’s too much other cool stuff to learn about. So with that account gone, I won’t be tempted to tinker on the train. I will though still be able to keep my iPhone dev hand in through my job.

Finally, the reason I switched that is specific to me. I’ve had an iPhone since the first release ( I upgraded to a 3G, but not to a 3GS ), and whilst iOS has got better and more feature full, it still looks and feels the same. Sure it’s quicker, the phone has a shiny new screen and behaves like a WII remote, but to me it still essentially behaves like the first iPhone I bought a couple of years ago. Now some people will love this fact, but as someone who loves technology, and likes new stuff to fill my brain with, iPhone 4 is not giving me anything more than I had before. Android on the other hand is completely new to me, and lets me tinker.

So like I said, I’ve had it a few weeks now. The first thing I did when I got the phone, was to take off the Vodafone approved version of Android it was running. Froyo came and went but my phone never got the upgrade notification. I’m not even sure if they have updated it yet! Vodafone say they need to look over the code, and make some tweaks. Yeah, but no thanks. So I followed this great tutorial about upgrading a Vodafone N1 to Froyo. It all worked as stated, and even auto-updated to the very latest version once I had installed everything. Note though that it will unlock the bootloader which I guess screws your warranty. I think I may try out Cyanogenmod too, now they have a Froyo version.

Froyo really does run like a rocket, and certainly adds a great deal of polish to the Android OS. Here’s what I like and what could be better. I’m not really comparing against the iPhone here, as I know some things you get on that too since iPhone 4.

I like:

  • The speed. 2.2 is noticeable faster than 2.1
  • The screen. Remember I had a 3G
  • Notifications. Vastly superior to Apples.
  • Wireless hotspot.
  • Speech recognition. Godsmackingly awesome. Makes up for the shit keyboard. Opens up a whole new world.
  • Integration with my email/calendar etc. I use Google to handle this websites email, so it jolly well should be good.
  • The Exchange support for work email and calendar
  • Browsing the web. The big screen and rocket ship browser mean I have been doing this more than ever before on a mobile device.
  • Flash plugin support! I’ll choose thankyou.
  • Background tasks. You need to be selective though.
  • The camera, with video
  • The maps and satnav apps are very cool.
  • Phew! You can still get Drop7

Could do better:

  • The Keyboard. Whilst not horrible, it’s still not as good as the iPhones.
  • The market store. Really hard to find the good stuff between all the crap.
  • Music Player. Whether I like it or not iTunes has me. I have been using DoubleTwist, but it’s not a patch on the real thing.

Oh and the one they all talk about, the Battery. I actually don’t think this is as bad as people are making out. The battery with all the same things turned on as my old iPhone lasts just the same. If you turn off 3g and keep the screen dim, the battery appears to be very good. Again, just like my old iPhone.

In summary then, I really like my Nexus One and am genuinely happy that I switched. While it does not always have the Apple polish and UX, it has other stuff to make up for it, and it is still a lot of fun to use. Go on, give it a try.

Fixing the trailing slash in Nginx

posted by Duncan at 10:16 am on July 5th, 2010

The solution as usual is super simple. The problem I was having was that when you didn’t put a trailing slash on a url, it would not handle it and throw a 404. I saw lots of fixes with complex re-write rules, but it turns out that a simple fix for me was to add this to my .conf file:

server_name_in_redirect off;

So your *.conf would look like this

server {
  listen  80;
  server_name  localhost;
  server_name_in_redirect off;

RadioAunty 1.16 release

posted by Duncan at 1:42 pm on June 11th, 2010

RadioAunty updated to work with the new iPlayer radio console. Oh and I’m pulling in JSON data instead of XML for the schedules, which has proved much quicker. Not quite sure I like the new now playing text on the console.

RadioAunty 1.16

Not because it’s not useful, but because it’s just not very pretty. With all the text handling power Flash gives you, I’m sure they can do more. Hopefully they’ll fix this.

My Garmin eTrex Vista HCx and OSX

posted by Duncan at 9:05 pm on June 10th, 2010

A quick post of my learnings when researching the best setup for my Garmin eTrex Vista HCx as most of what I initially found was old, PC only, or just plain wrong.

Garmin eTrex Vista HCx

I chose this GPS device because it was reasonably cheap, expandable, and allowed me to upload maps to the device, and visa-versa. I also wanted to use the power of OpenStreetMap, rather than pay Garmin lots of money, and my research showed me this was possible.

So, rather than talk about all the things that I couldn’t find or do, I’ll just run through the good stuff. Here’s a run down of all the useful software I found.

  • OSM/Computerteddy Garmin IMG tile calculator

    Create a bounding box on a map of the world, and it will return an OSM IMG to use on your device. There’s even a great bookmarklet to use on the OpenStreetMap site. This is an awesome site.


    A great resource of maps of the world. I don’t speak German, but you can get the idea of what you’re able to download.


    Detailed map of France. I used this on a recent cycle tour, and it was invaluable.

  • TrailRunner

    TrailRunner is a route planning Mac software for all kinds of long distance sports like running, biking, hiking, inline-skating, skiing and more. It’s free, but a donation of 25 Euros will stop prompts. It’s a fantastic bit of software.

  • LoadMyTracks

    This free utility works hand-in-hand with TrailRunner. It will send and receive data to and from the eTrex. It can also be used to translate data between the popular GPX and KML (Google Earth) formats.

Finally there is the OpenStreetMap Garmin page which has the useful information about getting all this data onto the device, and much more.

Robertson 2.0

posted by Duncan at 7:13 pm on June 9th, 2010

I’m excited and terrified in equal measures. Is this normal?

Robertson 2.0

nextKeyView and moving between NSTextfield and NSButton

posted by Duncan at 3:57 pm on May 26th, 2010

This caught me out today, so I thought I’d share to save someone else scratching their head. The problem I was having was thus. In interface builder I had a window with an NSTextField and an NSButton. I want to be able to tab between them. I did what I thought was correct:

  1. Set the intialFirstResponser for the NSWindow to be my NSTextField
  2. Set the NSTextField nextKeyView to be the NSButton
  3. Set the NSButton nextKeyView to be my NSTextField

But this was not working in the app! It Turns out that in the Apple > System Preferences > Keyboard there is a setting that allows you to press Tab to move keyboard focus between:

  • Text boxes and lists only
  • All controls

I think the top one is set by default. Once changed to All controls everything worked as expected.

RadioAunty 1.15 (Phew, it’s now working again)

posted by Duncan at 11:00 am on April 23rd, 2010

A very quick post to let people know that RadioAunty is working again. I though I’d been hit by the SWF Verification fiasco, but it turns out it was just a url change. Your app should update itself.

Building the Mythology Engine

posted by Duncan at 10:06 pm on March 30th, 2010

More than a few weeks ago now, we finished a project called The Mythology Engine. This was a prototype to see if we could build a framework for navigating drama on the BBC. Our first test case was Doctor Who. Mr Ferne has written an excellent post on the subject over on the BBC R&D blog. Rather than repeat what he said there, I advise you to go have a read.

This project was a wonderful experience for me, mainly due to the fact I got to build a lot of it. This post is a bookmark for me, and runs though the technologies we used.

Mythology Engine Prototype

As a prototyping team, we get to make technology decisions that help us build stuff quickly. This affords us a lot of flexibility. So for this project we used a fairly common set of tools paired with bits and pieces to make our lives easier.

Ruby on Rails: This choice was because I have a lot of experience with the framework, and it is an ideal candidate for prototypes. In fact over the years it has been used to build some great internal tools at the BBC. Oh and I know it’s fine for production too incase you were wondering.

MySql database: Again, we have a lot of experience with this, so why change.

Apache WebServer: Familiar, and easy to setup. We run Passenger as well to make Rails deployment a breeze. Because the prototype has streaming media playback, we needed to compile in the ( H264 Streaming Module). This was a fairly simple process with good documentation. I actually think if I did the project again, I would plump for Nginx instead of Apache. Just because it is so lightweight and fast, but Apache worked just fine.

Build for browsers that support CSS3: Here’s an interesting one. So when building the pages, I realised that some of the complex design could be implemented just using CSS3, without the need to chop up images and create complex layouts. This did mean that “browsers” like I.E (at least < 9) and the like would not display the designs as expected. But hey, this is a prototype, so let's just save come complexity and do it the easy way.

As well as the technologies above, we also used Flash for our visualisations and the custom media player. We powered them using an API we built into the main site. We are lucky to have great Flash experts like Mr Bowley to build this stuff, and I even got the chance to dust off my own AS3 skills with one of the visualisations. Oh and finally, we used the jQuery javascript library for any client side trickery.

So, nothing too unusual there, or in the build really. We decided on our data model (which was influenced by the OntoMedia and ideas from the team) and url design up front, and created the database and subsequent models. We initially thought we could populate the database using provided documents (exel etc) but quickly realised this would be inadequate, and needed something quick and easy to allow data entry. Along came Typus. I highly recommend this project. It creates a simple but extendable CMS based on your Rails applications models. You also get user admin for free. We made some change to suit our project (If any of the Typus people are reading, I tried to feed back changes we made but couldn’t get your tests to run). I also wrote some filters for Paperclip so we could get all images sizes and styles from one upload.

Finally we first built an initial basic site. This was to test out initial layouts and get some understanding of how the site felt when we had real data. This layout was then tweaked and polished once we were happy.

So that was a whistle stop tour of how we built the prototype. What we ended up with was a very polished prototype, which we are all rather proud of. Current I only have screenshots to show, but hopefully that will only be temporary.

One final thing to note. We build this with a maximum of 5 people. The majority of the team were cross discipline. This really helps. It means that everyone understands what the other is doing without everyone having to work on the same area of the project. This was especially key on this project, as we built in from scratch in a very short period of time. I have been fortunate enough to work on some recent influential projects within the BBC, and all those projects had around 5 people working on them. 5 is clearly, the magic number.

So that’s a brief overview. Like I say up top, read the proper explanation on the R&D blog.

I’ve added Reminders to my BBC Now Next Chrome extension

posted by Duncan at 11:59 am on February 14th, 2010

So, last week I posted about releasing a BBC Now Next extension for Google Chrome. I updated it a few days later, adding the rest of the information received from the BBC Programmes upcoming feed.

So, before I’m finally done with this, I though I’d write about a final feature I added, Reminders. Download the extension here.

Reminders added to BBC Now Next Chrome ExtensionHighlighted are all the active reminders

Having Now, Next as well as Later (the next few shows upcoming) is great, but I thought it would be so much better if you could add a reminder on these upcoming shows and be notified when they are about to start. With Chrome’s extensions API you have access to the icon that activates your extension, so you can not only redraw or animate that, you can also set a label, much like Mac and iPhone apps that display a number representing unread email etc.

So my implementation works like this. When the Now Next window is open you will see that there is a little clock icon next to any upcoming shows. If you hover your mouse over this icon you will see a crafty bit of CSS using transforms that animates the clock to make it easier to see. Clicking on this starts the reminder timer. That’s it for setting the reminder. Oh and you can cancel any reminder by clicking on it again.

Once the timer/s are running you can then carry on using the browser as normal. The timers will just remain running whilst you have the your browser open. You can also click on the now next icon, to see any active timers running.

Ok, now the important bit. What happens when the timer ends. So what first happens is the extension icon will spin 5 times to hopefully catch your eye. After the spinning ends, the icon will then contain a label which tells you how many finished reminders. This number will remain until you click on the extension icon again.

Reminders added to BBC Now Next Chrome ExtensionSee how many reminder have finished

Oh, and when you do click on the icon, you will see that the reminders that finished will be highlighted and pulsing.

Reminders added to BBC Now Next Chrome ExtensionThese reminders have been mocked up hence their position

So, I hope you like this little addition, and I’d appreciate your feedback.

Now, although I wrote a lot of this on my daily commute, I was also given the chance to work on this whilst at work with the BBC R&D Prototyping team. I ran the idea past them a week or so ago at a standup, and said it would be great learning should we want to build anything else. They trusted me. This makes me happy.

Finally as I said in the previous post, you can download the source for this via my github account.

I built a Chrome extension, and yes it shows BBC Now Next information

posted by Duncan at 12:33 pm on February 8th, 2010

UPDATE: I added a new feature. Reminders

I like Google Chrome, it’s fast and simple and works as expected. It’s currently my main browser, and with Extensions, it’s likely to remain that way.

An extension is a zipped bundle of files — HTML, CSS, JavaScript, images, and anything else you need — that adds functionality to the Google Chrome browser. Extensions are essentially web pages, and they can use all the APIs that the browser provides to web pages, from XMLHttpRequest to JSON to HTML5 local storage

I use a Mac so extensions have not been available to me, until that is the dev versions of Chrome started incorporating them. I installed it the other day, and thought I’d have a play at creating one. You can build them too, as their dev site is very helpful.

Using my standard use case, I have built an extension that displays BBC stations Now and Next information. Give it a whirl:

You can see what it looks like in action below.

chrome extension

It uses feeds from BBC Programmes, the upcoming feed and the lesser know service feed. So you install it, and choose the stations you are interested in. You then get to see what is on now and next when you click the BBC icon that appears in the browser bar. the results are clickable. You can click on the network icons to listen or watch live. You can click on the show images or heading to go to that shows programme page.

Oh, and if you’re interested in the code, it on available via my Github account.


back to the top