Ben Dodson

Freelance iOS, macOS, Apple Watch, and Apple TV Developer

Private lives

This weekend the news broke that Brooks Newmark had resigned from the government due to a sting by the Sunday Mirror. A journalist posed as a young female Conservative activist and they ended up flirting via Whatsapp with him eventually sending some lewd photos.

To my mind, this is a fairly simple case of entrapment with a journalist pretending to be somebody in order to get a gossip story for a newspaper. This does not require a resignation and is a further indication of what is wrong with our politics; MPs are not held to account the same as regular people.

If you worked on the checkout in ASDA and you started flirting with someone on Whatsapp despite being married, you don’t have to resign when everybody finds out. However, you do have to resign if you take money from the till1.

So it should be for MPs. They are regular people and they shouldn’t have to give up their career for stupid things they have done in their private lives that are totally legal. The argument “he lied to his wife so what stops him lying to voters” is idiotic; unless there is proof that his private life is affecting his work, then it is certainly not in the public interest.

If an MP or any other public figure is doing something illegal, then it is fair to hold them to account. It is not fair to use their private life especially if they have been manipulated into it.

  1. Well, you’d be sacked actually. ↩︎


I’m happy to announce that an app I worked on earlier this year has finally gone live on the App Store; IslandBreak.

IslandBreak for iPhone

IslandBreak is a smart travel guide for the Bahamas with a complete list of restaurants, bars, historical sites, hotels, beaches, and tours.

The app was interesting to work on due to the need for a completely offline experience. This wasn’t limited to just the points of interest and itineraries (which feature a huge amount of beautiful high-resolution photos) but also the map; this was a requirement so that tourists don’t have to use their data plans, particularly in an area which has very poor mobile reception1. Getting a full map of the islands complete with multiple zoom levels and the experience you expect on iOS was difficult, but works really well. In addition, I built an online CMS so that the app content can be updated remotely without going through the App Store approval process.

You can check it out by downloading from the App Store (currently priced at $0.99) or visiting

  1. I speak from experience. I’ve been to the Bahamas a few times and proposed to my wife there; we had to wait until we were back in Florida before we could share the news! ↩︎

iOS using internal reference name for IAP

Today I noticed a slightly worrying bug in iOS. In-App Purchases seem to be using the internal reference name rather than the localized display name. As an example here is my config for one of the consumable IAPs in WallaBee:

iTunes Connect Edit IAP Language

iTunes Connect Edit IAP Summary

The reference name is ‘v1.1 25000 Honeycombs’1 and the display name for UK English is ‘pack of 25000 honeycombs’. This means the purchase screen ends up looking like this:

iOS 8 IAP Display Name incorrect

Hardly ideal.

I double checked the In-App Purchase Configuration Guide and it still states that:

In the Reference Name field, enter an internal name for the product.

I’ve not been able to see this in other apps as most people will use the same display name and reference name. I’ve reported a bug with the Apple Bug Reporter Filed as 18454842.

You may want to check your own IAPs to make sure the reference name looks ok until this gets fixed. You can change them without going through App Review (as they aren’t supposed to be visible to end users).

Update (26th September 2014): Tony McBride emailed me to say that he was experiencing the same issues on iOS 7 building against the iOS 7 SDK. I’ve confirmed it is happening in WallaBee v1.4.1 (built with iOS 8 SDK) running on iOS 7. Looks like it may be an App Store issue rather than an iOS 8 issue. I’ve updated this post to remove references to it being a solely iOS 8 problem.

  1. In case you are wondering why, I forget exactly. I think there were different packs in v1.0 which we then increased in v1.1 - some of the increases overlapped (i.e. 15000 became 25000) and so I had to use a different name. Prepending the version seemed to be a sensible choice as nobody would see it. ↩︎

How not to deliver a speech

Yesterday, Ed Miliband delivered his speech to the Labour Party conference but embarrassingly left out a large portion about one of the most important topics of this decade; the budget defecit1.

I’ve given quite a few speeches in the past and often give out advice to people (mainly developers) who are preparing to give a presentation or some form of pitch. The two key pieces of advice I always give out are:

  1. Don’t write your speech
  2. Don’t use notes.

In my opinion, you should never write a speech out in full. To do this means you are then locked in and can’t adapt to a changing situation. This is especially true if you are doing a speech in which you have to follow someone, something goes wrong2, or you are talking about things that could change. Additionally, I don’t believe in using notes. Nobody wants to see their presenter looking down at a little card, or worse, a mobile phone. If you are going to use notes, keep them discreetly on a table and only consult them whilst your audience is applauding or laughing (if they are doing neither, change your speech). They should also be only the loosest of bullet points to keep you on track.

Ed made a mistake by breaking both of these rules badly. He wrote a speech but then made changes at the 11th hour (about the Scottish referendum) making it harder to memorise; he also (very stupidly) distributed the speech in advance so it was obvious when he had left something out. Finally, he had notes printed on thin paper through a clear table; easy for anybody with a camera (i.e. the national press in the front row at a political conference) to see and know when you’ve missed something.

There are a couple of exceptions to these rules:

  • If you are doing a presentation which includes some form of slideshow software, this is a lot easier as the bullet point skeleton is already written for you. You don’t need any notes, just be sure to scan over the upcoming slide whilst you are talking and be ready to speak around that subject. Never repeat what is written on a slide (which should be sparse) unless it is a quote. Any presentation by Apple is a great example of how to do this incredibly well.

  • If you are delivering a eulogy, these rules do not apply. You should have it written in full and printed to read from. Never give a eulogy from memory.

The key thing with any speech or presentation is to sound authentic. To do that, I believe you have to connect directly with an audience and not rely on remembering huge passages of text. It is much easier to have a few loose bullet points in your mind and then flesh it out as you are presenting.

In the end, a speech is simply a one-way conversation with multiple people. Imagine you are telling a friend about the thing you are speaking on and everything should fall into place easily. If you try to remember an essay, then the speech will be difficult to remember, uncomfortable to watch, and far more likely to go wrong.

  1. You could say he had a defecit in his speech *rimshot* ↩︎

  2. My favourite example of this is the original iPhone launch. Towards the end of the presentation, Steve Job’s ‘clicker’ broke so he couldn’t advance the presentation. Whilst he was waiting for it to be fixed, he told a brilliant anecdote about Steve Wozniak jamming televisions when they were younger. The whole delivery was natural and unscripted and he was able to recover straight back to talking about predicted market share - you can’t do that when you are leaning heavily on memory nor a text-heavy presentation. ↩︎

The illusion of choice

In the last week, I’ve tried to purchase two things that made me question the way in which choices are presented to us whilst purchasing. It also made me think about how we market our in app purchases within WallaBee.

The first choice I questioned was Disney Infinity 2.0, the latest version of the sandbox game that lets you mix and match Disney characters in a toy box environment. At launch, there are only 2 ways to get the game; buying the Marvel Superheroes Starter Pack (£57)1 which includes 3 figures and a play set piece (which gives you several hours of themed game play) or the Disney Toybox Pack (£55) which comes with just 2 figures and 2 game discs (which give you power ups). Both sets come with a USB base to place your characters on and the actual videogame software (on disc) which gives you the Toy Box mode. The issue here is that the Marvel pack comes with an extra character and a play set piece2 which will give you much more than just the toy box for only £2 extra. My second issue is that there is no upgrade path for those like me that already have a lot of the original Disney Infinity stuff. I already have a USB base and 17 characters so I really only need the videogame disc in order to get the new toy box mode up and running; I could then buy something like the Guardians of the Galaxy Playset Pack (£28) which gives you a playset piece and 2 characters to use within it.

As it stands, there is no way to get the software either on its own or in a digital form which seems crazy in this day and age. Nearly all of my Xbox One games are the digital versions because I hate having to swap the discs to play a game (especially when it is only reading it to unlock the DRM - the actual game is installed onto the hard drive so the disc is used purely for authentication).

I’ll most likely end up buying the Marvel version as it just makes financial sense even though I’m not that interested in the characters or the playset.

The second purchase that I’ve questioned was the new iPhone 6 models. The pricing3 looks like this for the iPhone 6 Plus:

  • 16GB: £619
  • 64GB: £699
  • 128GB: £789

Notice anything strange? Each storage capacity was doubled from the iPhone 5S except the 16GB model which stays the same. This leads to a very disjointed price list as the gap between the 16GB and the 64GB is only £80 and there is no 32GB model - it makes no sense that you would choose the 16GB over the 64GB especially when you consider that the iPhone 6 models have far better cameras and can do things like 240fps and time lapse videos which will eat that up (not to mention the @3x resolution bumping up the size of every app as they get updated).

For the last 2 years I’ve had 16GB iPhone models and it has become apparent that they are just not big enough (as many people found when trying to upgrade to iOS 8 over the air). I regularly have to delete my music cache to save space or offload photos and videos. I would have been happy paying a bit extra for a 32GB (or having the base model doubled) but in the end I went for 64GB on both phones as I just don’t see 16GB being a workable size.

So why do companies do this? In the case of Disney Infinity, I think they just want to cover their backs and try to stop anybody buying the game without the USB base and some characters as otherwise the game won’t work. My wife suggested they could make the game available as a digital download but just put a warning that you need to have some bits from the previous game; from experience I know that nobody reads those warnings. With the iPhone 6, I can only imagine that they really want people to buy the 64GB model and so by starting at 16GB they are basically showing you a bad option in the hope you’ll buy the better model. This has an extra benefit that they can say “starting at £619” when they know most people will go to the £699 model.

We do something very similar in WallaBee with our packs of honeycombs (our freemium currency). Here is a quick list of the packs we sell along with their price4 and the percentage of sales5 each one has:

  • 25000hc - £7.99 - 81%
  • 20000hc - £6.99 - 1%
  • 15000hc - £5.49 - 12%
  • 5000hc - £2.49 - 3%
  • 2500hc - £1.49 - 2%
  • 1000hc - £0.69 - 1%

As you can see, the 25000hc pack is overwhelmingly the most popular. This may be because it has a “most popular” banner attached to it on the purchase page but I think it is picked the most because it is the best value when you look at a strict honeycombs to pence conversion (we don’t do any additional benefits like adding some other currency or benefit on the higher packages - they are literally you get what you buy).

The point I’m getting is that we could probably scrap all but the 25000hc and 15000hc packs without negatively affecting sales, but then there would be less choice available to our players. We did drop a 10000hc pack a while ago when we were experimenting with a grid based sales page; it was the least popular option and we wanted just 6 items to keep the design even. I’m not sure if minimising the amount of options further would be good as it means making people compromise as in the case of Disney Infinity and the iPhone 6; I’ll buy the options they are pushing me too but I won’t feel good about it.

An interesting counterpoint to this is the way in which we sell locks within WallaBee. Locks allow you to protect items you drop from being taken by other people and we sell them in packs of 10 for £0.69. Many players have asked us to sell them in packs like honeycombs so that we could do a range of options for each budget but the reason we keep them at a single price point is that they are massively popular; in fact, they are our most purchased in app purchase6. Whilst selling a pack of 50 or a 100 might generate more sales, it would mean that a £0.69 in app purchase would no longer be most popular. Why is that important? On the App Store, you can see the top in app purchases for a game and it is my feeling that showing a £0.69 item at the top of that list rather than a £7.99 one looks better to new players who are often sceptical about how much money a freemium game is going to try and take from them.

I’m pretty pleased with the way that we do real world transactions in WallaBee but we are going to be making a big drive for what we like to call “ethical freemium” in the future with several big changes. One of the things we don’t do now and never will is sell huge packs at prices like £64.99 - I see this in many freemium games and it is just gross (as well as looking bad in the “top in app purchases” screen on the App Store). Something I have often toyed with for those that do want to make larger purchases, such as those who want to buy multiple lock packs, is to add some form of payment processing on our website that is separate to the App Store; that way, players could buy as many locks as they want without affecting our top purchases list.

When it comes down to it, choice is simply an illusion. Most of the time, you are being cajoled into making a specific purchase. In the case of Disney Infinity and the iPhone 6, it seems pretty obvious. With WallaBee, we’ve experimented both with offering choice (as in our honeycomb packs) and offering no choice (with our locks). It’s hard to say which works best but I think I prefer having a single option to choose from rather than being given several but being subliminally pushed to a chosen option. Maybe I should remove those superfluous honeycomb packs after all.

  1. There is a “Collector’s Edition” as well at £110 but it is essentially the same thing with more characters. ↩︎

  2. The play sets are basically movie tie-in games in that you can only use characters from that series within them and you’ll get around 5-10 hours of story driven gameplay. It means that Disney can release a new game within Disney Infinity without having to redistribute the base software (you just buy one of these pieces that goes on the USB board). ↩︎

  3. This is for an unlocked iPhone 6 Plus in the UK. Obviously with a carrier and a plan the cost would be different. ↩︎

  4. The price differs around the world based on tiers that Apple sets up - they scale beautifully in USD but look less obvious in GBP. ↩︎

  5. Data from 22nd August 2014 to 22nd September 2014. ↩︎

  6. This is the IAP that most people buy; it isn’t the one that makes the most money (that would be the 25000hc pack) ↩︎

Font Finder Featured

A few years ago, I wrote an extension for Firefox called Font Finder. It was a basic utility that let you highlight any text in a website and immediately get detailed font information such as family, leading, line-height, etc. It’s been downloaded half a million times and had great reviews.

I stopped using Firefox a long time ago and so when it came to update the app a developer named Andy Portmen asked if he could continue to work on the extension. He published an update in July which bought the extension up-to-date with the latest version of Firefox and Font Finder has now been featured by Mozilla!

If you’re a designer that uses Firefox, be sure to check it out. My thanks to Andy for keeping Font Finder alive for those users who have found it useful over the years.

Retiring TubeUpdates and WikiLocation

Today I’m sad to announce that both and have been retired.


Started in 2009 as part of the Guardian Hack Day 2, was an API that allowed you to find out the status of each of the London Underground lines. It worked by screen scraping the TfL website every minute of the day and for the past 5 years it has stored data on every status update.

Back in March of this year, the API stopped fetching new data due to changes to the TfL website. As TfL were now providing their own richer API, I announced it would be retired in May.

The API will now return a 404 error for all endpoints. I’d recommend checking out the TfL API as a replacement for live status information. If you are interested in historical information, you can download a MySQL dump of all of the status updates I retrieved during the 5 year period.


I built WikiLocation in 2010 as I was working on an app which needed to fetch Wikipedia articles that were nearby. As it turned out, I never got around to building that app but the API took off and has been used around the world. At the time of writing, there was only one unofficial API that fetched geocoded articles and it was woefully out of date. I was informed by a Wikipedia staff member recently (quite rudely) that they now have their own API.

I’ve been meaning to retire WikiLocation for a while but some issues with my hosting company this week have accelerated this as some automatic updates they added have killed my infrastructure. WikiLocation was the last site on the old hardware and the time it would take to rewrite it and put it onto new hosting is time I don’t have (especially considering that donations for the service from those who have used it haven’t covered a single week of the hosting I’ve been paying for over the last 4 years).

The API will now return a 404 error for all endpoints. You may want to take a look at the official API from Wikipedia (I haven’t looked into it myself) or you can download the latest MySQL dumps (in 38 languages) of the data I retrieved. Alternatively, you can take a look at the original python script that crawls the Wikipedia linking tables to build your own scraper.

It is always a shame to have to terminate a service and I apologise for the inconvenience this may cause as there was no deprecation time. However, it just isn’t feasible for me to rewrite the entire API for new hosting when there are other alternatives available.

Off on honeymoon!

On Monday, I had the great honour of marrying my beautiful girlfriend Becky at Dodford Manor.

Benjamin and Rebecca Dodson

We are now going on honeymoon to Vancouver, Alaska, and Whistler until August 11th. I will have limited internet connectivity and won’t be checking emails but I’ll reply to them upon my return; I expect there will be a lot and we are moving house during that week so I should have reached inbox zero by August 20th. If you are having any issues with WallaBee, please email


If you’re a LEGO VIP member (and you should be) then you can now purchase the new LEGO MINI Cooper model which doesn’t go on sale to the general public until August 1st.

This is definitely a must have model for me and I think it’s going to be really popular based on the response to the LEGO Volkswagon T1 Camper Van which has been around for a few years now. The MINI is full of rare pieces (I particularly like the old windscreen pieces sprayed in British Racing Green to work as wheel arches) and nice features such as an engine, detachable roof, cross-check seating, and a picnic hamper in the boot. The design is top notch and I’m really looking forward to building it although I still need to finish R2-D2, the Sandcrawler, and a Rancor Pit so may be a little while!

Interesting observation: LEGO and MINI are the only two companies I know that both have an all-capitalised name which most people ignore (or worse in the case of LEGO, pluralise unnecessary - they’re not ‘legos’!)


I’m happy to announce that an app I’ve been working on for the past few months has now gone live in the App Store; kontent.

kontent for iPhone

kontent is a great way of sharing valuable content between your friends as it limits you to sending just one link (called a blink) per day. The app has a really nice design in keeping with iOS 7 and the guys running the company are top notch.

The app has been really interesting to work on as I’ve been developing a number of interesting features such as the ability to use the app offline for a large number of actions (i.e. you can send a blink whilst you are offline and it’ll sync up to the cloud when you go online). However, the big piece for me has been the animations; from the moment you open the app you’ll be introduced to a series of delightful and thoughtful animations. Everything has a purpose whilst remaining playful and dynamic. It has been a heap of fun to work on!

I’m really pleased with the way this app has turned out and look forward to working with kontent over the coming months.

You can check it out by downloading from the App Store (it’s 100% free with no ads) or visiting

« Older Entries Newer Entries »