Ben Dodson

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

iTunes Artwork Finder Source Code

I had an email this morning from a developer who wanted to connect directly to my iTunes Artwork Finder in order to power their own artwork finding app. This seemed like a good time to point out that there is no need to do this1 as I have the source code freely available for everyone on GitHub.

If you’re a developer and you want to use my API for iTunes Artwork, please instead get the source code and host it on your own server. You can get the code from

  1. And I’d prefer that people didn’t for two reasons; it costs me money in bandwidth to hit the iTunes Search API on your behalf and it is more likely to result in my IP addresses being banned by Apple which would take the service down for everyone. ↩︎

A Month-Year UIPickerView Written In Swift

I’ve just shared some code on GitHub which may be useful to somebody; MonthYearPickerView-Swift. It’s a basic UIPickerView subclass that allows you to choose just a month and year in a scrolling picker. This is useful for things such as expiration dates on credit cards. It uses a simple block-based callback to let you know once a date has been selected and may be a good way of seeing how to make other custom pickers if you are new to iOS or Swift.

Check out MonthYearPickerView-Swift on GitHub.

Update (2015-10-07): The project has been updated to support Swift 2.0 and is compatible with Storyboards and Xib files. I’ve added tags to the repository so you can choose if you want the Swift 1.2 or Swift 2.0 version.

TV for the UK politics fan

With just 1 day left until the 2015 General Election, I thought it might be fun to put together a list of some of my favourite TV shows that show how UK politics works:


One of the finest episodes is the series 3 opener, “Dish and Dishonesty”, which covers the by-election of “Dunny-on-the-Wold” as Blackadder attempts to stop Pitt the Younger from striking the Prince from the civil list. Every line is a winner but my one of my favourites has to be “Marvelous thing, democracy. Look at Manchester: population, 60,000; electoral roll, 3”. Also notable for the fact that the “Standing-At-The-Back-Dressed-Stupidly-And-Looking-Stupid Party” appear to be wearing UKIP colours.

The Thick Of It

This is really just a modern version of “Yes, Minister” (which I’ll come to) covering the last Labour Government with the more recent series looking at the current coalition. Made famous by Peter “Doctor Who” Capaldi’s sweary Malcolm Tucker character, it’s a very accurate portrayal of how UK politics has been for the last few years with special advisors holding much of the power. One of the best episodes for me involves the minister going on a factory visit1 and being accosted by a worker unhappy with the state of the NHS…

Yes, Minister

Made during the 80s, “Yes, Minister” was a comedy portrayal of the struggle between ministers and their civil servants. Every episode is fantastic, as is the related series “Yes, Prime Minister”, with the witty dialogue of Sir Humphrey Appleby providing the best laughs. I particularly like one episode in which Sir Humphrey is pointing out that a British democracy exists solely to keep the important things in life out of the hands of ordinary people such as Radio 3, the countryside, the Royal Opera House, and “the universities; both of them”:

To Play The King

Without a doubt, House of Cards is one of the best series to come out of the UK. Whilst the US version is also incredibly good, nothing compares to the asides that Ian Richardson does to camera throughout2. I think the second of the trilogy, “To Play The King”, is best with Urquhart pitted against a new King (played by Michael Kitchen) who is not pleased with the old-fashioned Tory values of the PM. Probably the most true-to-life portrayal of the Conservative Party during the late 80s, early 90s. Just fantastic.

Absolute Power

I stumbled upon “Absolute Power” completely by chance when browsing iTunes a few years ago. Only 2 series were made but they feature Stephen Fry and Martin Bird as the heads of a London PR agency. In my favourite episode, “Tory Women”, Fry performs a makeover on a female Conservative shadow minister (played by Rebecca Front who went on to be the minister in season 3 of “The Thick of It”) and comes up with the following immortal line about Neil Kinnock:

“If the British public were forced at gunpoint to appoint a new Prime Minister and they could only choose between Jeffrey Archer and Neil Kinnock, who would they pick do you think? A convicted crook and mythomaniac or a sincere and dedicated socialist? They’d choose Archer every time, and why? Because Kinnock is Kinnock and there’s something about that poor bastard that makes you just want to run shrieking from the room. And you’re the same.”

The New Statesman

After the success of “The Young Ones”, Rik Mayall wanted to do something which was more “grown up” and eventually persuaded ITV to produce “The New Statesman”. Whilst I don’t think you could really call it “grown up”, it’s certainly a hilarious alternative view on Conservative MPs. Mayall plays “Alan B’stard”, a Tory MP with the largest majority in the House of Commons. There’s innuendo, slapstick violence, and an awful lot of truth in this series. My favourite episode3 features both Stephen Fry and Hugh Laurie in an excellent scene in a restaurant:

Ballot Monkeys

The newest item to my list, “Ballot Monkeys” is an ambitious programme being aired this year on Channel 4. It was advertised as being “so topical we haven’t written it yet” and that is certainly true - each episode is produced on the day it airs with the plots (such as they are) being directly influenced by the news events of the day. The first two episodes aired a week apart but it is now on every night until election night. The series follows each of the 4 main parties in this election (Labour, Conservative, Lib Dem, and UKIP) on their respective “Battle Buses” with both candidates and media advisors discussing the topics of the day. It’s already led to some of the funniest political comedy I’ve seen in years with the Lib Dems desperately searching through a paper for any mention of themselves4, the Labour social media campaigner creating fake tweets from “Milifans”, and the UKIP candidate who doesn’t trust their new bus driver5:

  1. I love this bloody factory” ↩︎

  2. “Did you enjoy my little speech? I thought my “deep personal wound” was a rather good touch. I am in fact extremely angry with His Majesty and I intend to do him harm. I feel exhilarated. Prospect of a fight, of course, with the odds unfairly weighted in my favour. Next to a small war, there’s nothing quite like a general election to stiffen the sinews and summon up the blood.” ↩︎

  3. I can’t fail to love an episode with the lines “we’re Thatcher’s stormtroopers and we’re in a hurry” or “indeed I do remember the Falklands, made a fortune!” ↩︎

  4. And a brilliant comparison to a Grand National horse that “didn’t win, but came in the top 4 with odds of 300-1… only slightly better than our odds” ↩︎

  5. “Terrorists eat biscuits too” ↩︎

The Correct Way To Watch Star Wars

May 4th has got a bit out of hand now that it seems to be celebrated as an actual holiday every year. That said, I do like to watch Star Wars fairly regularly1 and so I often get a Tatooine style yearning at this time. However, the question that used to always pop up was “which order do you watch them in”2. It used to be that I’d do the old “IV, V, VI, I, II, III” sequence but that was until I learned about the “Machete Order”:

Next time you want to introduce someone to Star Wars for the first time, watch the films with them in this order: IV, V, II, III, VI

Notice something? Yeah, Episode I is gone.

The full post explains it more thoroughly (along with benefits and drawbacks) but the basic idea is that you treat episodes II and III as flashbacks whilst The Phantom Menace is relegated to being an “expanded universe” kind of deal similar to The Clone Wars animated series or video games like The Force Unleashed. I’ve watched the films in this order a couple of times now and it really does work a lot better. It also works great if you are introducing the films to someone for the first time (i.e. kids).

I’m probably not going to watch them this year, but if you do, give the Machete Order a try. You won’t regret it.

  1. Maybe not annually like I do with Lord of the Rings, but at least every two years. ↩︎

  2. There is no question of not watching the prequel trilogy. I’m just going to go out and say it; Episode II is amazing (especially if you are a politics geek like me). So there. ↩︎

Great British Bee Count iPhone App

I’m happy to announce that another app I worked on earlier this year has gone live in the App Store; Great British Bee Count.

The Great British Bee Count is a cause started by Friends of the Earth which invites the public to help monitor the British bee population. To do this, you can download the free app and then choose to log individual types of bee that you see or, new for this year, perform a timed count which invites you to count as many bees as you can (regardless of type) within 2 minutes.

I was asked to update the existing app by Two Thirds Water - I decided it would be quicker to rebuild the app from scratch in Swift rather than try and update what existed previously. This allowed me to easily use several new technologies such as AutoLayout which let me render the pixel-perfect design on all four sizes of iPhone. In addition, I built an offline caching mechanism so you can perform your counts without an internet connection - once a connection is re-established, the counts will be uploaded.

This was a fun project to work on and I think the end result works really well. You can check out Great British Bee Count on the App Store (it’s free) or learn more about the bee cause.

Initial thoughts on Apple Watch

After a bit of hassle with the delivery company1, I was lucky enough to get my Apple Watch yesterday. A few people have asked for my opinions so I’ve jotted down a few rough observations:

  • It’s small. Surprisingly so (especially when compared to other smart watches). I went for the 42mm Apple Watch (Stainless Steel2) and it feels incredibly comfortable. It probably could have been 44mm or more and still feel comfortable. It isn’t bulky, heavy, or thick. Of course this is just my own aesthetic opinion and your mileage may vary - the “try on” appointments are a great way to see them up close before ordering. I also like the detail that has gone into it. For example, my watch came with a white sport band but what I hadn’t realised is that the band has the same stainless steel for the pin as the watch body. If you buy the band separately, it is aluminium like the sport watch. One other thing: the box that it came in was incredible and really made it feel like this was a special product. I won’t post pictures as I’m sure there are thousands of unboxing videos online but the steel watches come in a big cube - the sport watches, in contrast, come in a flat oblong box which is probably the reason for the awesome spring-loaded UK plug.

  • My main use case is notifications. I’ve already had several instances where a small nudge has allowed me to see and dismiss a notification in 2 seconds or so. I typically have my phone on silent with no vibration3 which means I frequently have to get my phone out of my pocket to check the screen and see if I’ve missed anything. This has become even more important now my wife is doing shift work in the evenings as she texts me when she needs me to come collect her from work - I frequently miss these texts! With the watch, I get a subtle nudge4 and when I raise my wrist it shows me what type of notification it is: iMessage, Facebook, Mail, etc. At that point, if I’m not bothered I can lower my wrist and it’ll go but if I keep it raised a half second longer then it shows me more detail (generally the content of the message). Today whilst I was washing up I got a breaking news notification from the BBC, an “it’s about to rain” notification from Dark Sky, an email from my mum, and a few likes on Instagram. The only time I had to stop what I was doing was when I tapped on my wrist to read the email in full as that was the only thing I wanted to read right then. Had that been my phone buzzing on the table, I probably would have stopped and started several times.

  • Apps are a bit pants. I didn’t have high expectations for 3rd party apps as they are really just glorified extensions. They are better than I thought but can be quite slow to load sometimes and generally I could have done whatever I needed to do quicker on my phone by that point. For example, Philips has a Hue app which lets me turn my lights on / off around the house and change the colors. However, it’s an app rather than a glance so you have to go to the home screen, tap on the icon, wait (a while) for it to load, and then finally choose from the options. The issue is that is is slower than using the “today widget” they have for notification center on my iPhone which I can access from the lock screen (and the iOS widget is more useful as one tap turns a scene on and another turns it off - the Watch app only does “on”). These are things that will improve and some of the glances are pretty good for an overview but this isn’t a native app experience. It’s very much iOS 1.0 with the HTML “apps” than the App Store we have now5.

  • Some 3rd party apps aren’t there. The thing I’ve found most surprising is that there are many big name apps which simply aren’t there at launch, most notably (for me) are Facebook and WhatsApp. This means when you get a notification from these services, you can read the text (same as an iOS push notification) but you can’t reply from the watch or do anything at all. Bearing in mind there are over 3000 apps at launch, I’m very surprised that these two aren’t there. As above, this is something that will improve over time but it is frustrating getting a “someone commented on your photo” notification and not being able to read it. This is a tad hypocritical as I’ve publicly said we’re not doing an app extension for WallaBee6 but then Facebook has a lot more money and developers than me…

  • Some 1st party7 apps aren’t there. Much has been made of the lack of a web browser8 but the thing that really surprises me is the lack of the reminders app. One of the use cases I had for the watch was grocery shopping lists. When my wife goes to the gym I typically drop her off and go and do the weekly grocery shop - we have family sharing enabled so recently we’ve been using reminders so she can add things to the list and I can see it whilst shopping. However, holding an iPhone 6 Plus in one hand and pushing a full trolley is actually quite hard whilst you’re looking for a specific type of quinoa seed9. Hence I thought that the watch would be great as I’d be able to see our list and cross things off as I grab them. It isn’t to be though as there is no reminders app - you can set reminders via Siri and you get the notifications but you can’t just view your reminders and tick them off in a list. There are 3rd party apps available (such as the wonderful “Things”) but then you start having to do jiggery pokery with certain reminder lists being imported and I don’t really want to see 60 items in my to-do list on my desktop. It seems a very odd omission so I’m hopeful that a WatchOS update will see that app added.

  • Exercise. I haven’t done anything other than walking the dogs but from what I’ve seen it works well. I started up the exercise app and chose “outside walk” and it logged my distance, calories burned, heart rate, etc. I’m looking forward to taking it out for a run at some point soon.

  • Notifications again. I just had to mention “Knock”. It’s an app that allows you to unlock your Mac by knocking on your iPhone (by some sort of dark magic as far as I can tell) but it is now updated for Apple Watch. Basically, when I sit at my desk and move my mouse, the computer comes out of standby and shows the lock screen and I get a notification on my wrist - tapping it unlocks the Mac. I have a pretty long password so it is a nice feature but it shows some of the potential of location-aware apps. I’ve always said that the Apple Watch will be like Disney’s MagicBands and this seems to be true when you consider you can use it to unlock doors (and computers) and pay for things (in the US… grrrr). Knock is just one of those “this is cool” moments about the watch.

  • Apple Pay. Seriously, this needs to come to the UK. We already have all of the NFC hardware so I can’t see what the hold up is. I firmly believe that Apple Pay will become my #1 use case for the watch.

  • Digital Touch. I had a chance to play with the digital touch stuff this morning and it works pretty well. The only thing I dislike about it is that you don’t get the taps in real time unless you have the requisite app open; you get a standard notification to say “someone sent you a digital touch message” which when you open then plays it back. I really wanted this to happen without the notification step so my wife could send me some taps and I’d receive them on my wrist without doing anything (so, for instance, she could send 2 taps to say she is ready for me to pick her up). Might as well just send a txt if it is going to require me to look at the watch to open the message.

  • Ordering process. I’ve seen a lot of complaints about the ordering process and how Apple has screwed everyone over with a 2-week release period and no ability to queue and get one. My assessment is that the watch has been much more popular than they imagined and that gauging which models people would choose is a lot tricker than many give credit for. With the iPhone and iPad, it is fairly easy as you have a choice of storage tiers and, in the case of the iPad, Wi-Fi or Cellular. You can do market research (based on what they’ve sold previously) to work out which ones you need the most of and where. However, with the watch the majority of it is purely aesthetics. How do you get the right split between the different coloured bands or know if people will be willing to pay extra for Stainless Steel, a leather loop band, or a link bracelet? It seems there could be some manufacturing issues as well in that there hasn’t been a single pink band seen in the wild yet (not even in the demo units at Apple Stores) and none of them have shipped. Several of the other bands aren’t shipping yet either - I wanted my watch to come with the black leather loop but that would have meant waiting 4-6 weeks so I went for a white sport band (I ordered the leather loop separately and it could be here next week).

I think that is pretty much all of my first impressions for the time being. In short, I’m finding it to be a great device for small interactions and for being able to triage incoming notifications when your hands are full. It’s the first step to an incredible wave of products (from all manufacturers) and I think most people will be pleased with it. Just don’t go in expecting the 3rd party apps to be at the level that they are on iOS devices currently.

  1. It’s the first time Apple have shipped anything by UK Mail and I hope the last. Whilst it was in the UK well in advance of the dispatch notice, it went out for delivery at 5.40am and then an hour later was listed as “delayed” with a date of 27th April for delivery. I phoned UK Mail and had to wait 2 hours for them to call me back to say that I could come and pick it up from the depot on the Saturday - however, during that time, the status had changed back to delivery for that day. When the driver turned up, he was quite rude and complained about all the people buying Apple products as meant he had to deliver more! ↩︎

  2. I wish there was a better way of saying “the watch that isn’t the sport one or the gold one” - peculiar to name a specific model the same as the whole line. Reminds me of when they went for “the new iPad” rather than “iPad 3” (but at least then you could call it that). ↩︎

  3. The reason being is that when I’m working on my computer, I frequently get notifications on both (i.e. from Tweetbot) - I don’t like having my phone vibrating across the desk all the time so I have that switched off. ↩︎

  4. I have the sounds on at the moment but I’ll turn them off soon - it’s just for the novelty of being able to say “oh, is that my APPLE WATCH” to people nearby. I’m a bit of a dick like that. ↩︎

  5. That might a bit unfair. Some of the apps work well but it is very hit and miss. ↩︎

  6. The main reason being that adding more interactivity to the notifications (like the ability to reply to a message) would mean adding an app to the watch. Once you do that, you’re getting into a lot of work. I wish there was a way you could add a custom design to notifications without doing an app (so I could show an image when we release a new item) but again, the only way to do that is to go for a full watch app. The experience of that would be slower than the iPhone so for now it isn’t very compelling for me with my business hat on. ↩︎

  7. Whilst typing this I realise we have a concept of “1st party / 3rd party” and “1st person / 3rd person”. Does “2nd party” or “2nd person” exist? After a bit of googling, the “2nd party” would be “you” (i.e. 1st party is Apple, 2nd party is consumer, 3rd party is developer). There’s a few times a day where little questions like these pop up - Siri on the watch is pretty good for getting quick answers to them. ↩︎

  8. It reminds me of when iBooks launched and it was iPad only. Lots of people asked why it wasn’t on iPhone to which the general consensus was “It would be shit”. Of course, it then did appear on iPhone but I don’t think it’ll happen with Safari on the watch. There is a 3rd party browser available already though. It looks shit. ↩︎

  9. First world problems, right? ↩︎

Developer pre-orders

I’m often asked if Apple let me pre-order devices earlier than consumers or if they give me a discount. The answer is always “no”; to Apple, developers are just normal consumers. We may get access to SDKs and beta OS releases in advance1 but with hardware we have to pre-order with everyone else.

However, a slight exception has recently been made for the Apple Watch. On a random basis, Apple have allowed developers to register their interest to get an Apple Watch Sport (with blue band) and then out of those that applied they’ve randomly selected a few to actually purchase them (with guaranteed dispatch by the 28th April). Whilst I think this is a great idea, there are several problems:

1) This was only offered a few days before the release of the Apple Watch and over a week after pre-orders had gone live (and sold out spectacularly). If you are going to offer hardware to developers, it would be better to do it in advance of the pre-order or at the same time so that they don’t try and purchase their own if they are only buying for development purposes.

2) This offer was completely random. I didn’t receive an email and neither did several other developers I know who would have liked to. At first I thought this might be because I’d already made a purchase but that was actually with a different Apple ID2. In addition, other developers I know that had already ordered devices were given the chance to register for this lottery. This brings me to…

3) There seems to be nothing in place to stop developers who already had pre-ordered from getting in on this deal and then selling the watch at a high-rate on eBay. A quick search on Twitter will show plenty of developers doing this.

It seems to me that this could have been done in a much better way:

1) Email developers a week prior to pre-orders to let them know that they have the opportunity to skip the queue. Take their payments upfront (to make sure they are serious and to avoid issues later) and then randomly choose those that were successful before pre-orders go live in a similar way to how WWDC tickets were allocated this year. By doing this, those that aren’t successful can still get in the regular queue with everybody else and nobody misses out.

2) Lock the hardware to the developer account so that it can’t be resold (perhaps limited to 1 year). This would prevent developers taking advantage of the deal to enrich themselves in the grey market. The technology for this already exists bearing in mind that hardware can be locked to an Apple ID (so it can’t be resold if stolen) so it shouldn’t be too tricky for Apple to do this.

I think offering these pre-order deals for developers is a great way to help them write apps for the platform (and ensure compatability in an ever growing ecosystem) but the ability for people to make a quick buck and the total randomness of who gets invited to the lottery leaves a sour taste. I was lucky enough to be able to get the watch I wanted delivered on launch day but there are several developers who have weeks of waiting whilst others with several placed orders are able to get a special offer that’ll go on eBay. Its a first step, but hopefully Apple can do better for future hardware releases.

  1. Although not always enough - for instance, there was 9 days to get apps compatible with iPhone 6 and iPhone 6 Plus and realistically you’re going to be in the review queue for 80-90% of that time… ↩︎

  2. I have my personal Apple ID along with two development account Apple IDs, neither of which were contacted about this offer. ↩︎

iTunes Artwork Finder updated with app screenshots and videos (including Apple Watch)

I’ve just pushed out a big update to my iTunes Artwork Finder today that allows you to view the following information about apps:

  • Screenshots for Apple Watch, iPad, and iPhone (in all 4 sizes: 3.5”, 4”, 4.7”, and 5.5”)
  • Video previews, where applicable, for iPad and iPhone (again, in all 4 sizes)

To check it out, simply search for an app in the iTunes Artwork Finder and then click on the “view screenshots / videos” link that will appear above the app icon. This will take you to a new page I’ve created which outputs all of the screenshots and videos available for that app.

Here’s a quick look at a few more of the interesting ones as we reach the Apple Watch launch:

LOLy 2.0

I’m happy to announce that an app I worked on late last year has finally gone live on the App Store; LOLy.

LOLy is an app that allows you to send stylish and beautifully designed large emoji, many of which are animated.

I was asked to work on the v2 app update as the previous app suffered from a few performance issues and there were requirements for new functionality. I completely rebuilt the app from the ground up using Swift along with Realm as a super-fast local database. The app is now super-smooth and images, even animated ones, appear instantly. I also used AutoLayout to ensure that the app looked great on all 4 sizes of iPhone from the tiny iPhone 4S to the massive iPhone 6 Plus. I came up with a lot of the UX changes and integrated iCloud to enable syncing of favourites. Remember that blog post I did about localising prices in Swift? That was also for this project.

However, the big thing with this update isn’t just the speed and performance boosts but the headline new feature: an iOS 8 keyboard.

This was a real challenge and I came across design issues, the technical constraints of the iOS 8 keyboards, and various requirements from the App Store review team. With design, it was important to make the keyboard match the app as much as possible and to try and show as many of these stickers as possible whilst also syncing “recently used” and “favourites” with the parent app. The technical constraints were far harder. There is only a limited amount of memory available to these extensions so trying to show animated images along with the fairly complex design was tricky. Add in the general problem of image-based keyboards requiring full keyboard access (which I’ve discussed before) and being limited to copy/paste for inserting images into apps and it became trickier than expected! Finally, the App Store insisted that the keyboard also contain a full text keyboard and numeric keyboard which had to be added fairly late on. Despite all this, he keyboard looks and works great. I’ve been using it a lot over the past few months and it really is a great way for sending a message with more playfulness than the stock emoji.

In addition to the above, I also built an online admin system so that the packs can be updated, added to, or re-ordered remotely without going through the App Store review process. This is all pushed via an innovative patch system I designed which allows for delta updates to keep bandwidth costs to a minimum both for users and the clients servers.

I had great fun working on this app and I’m really proud of the result. You can check out LOLy on the App Store - it’s a free app with lots of stickers but, at the time of writing, you can download additional packs for $0.99/£0.79.

« Older Entries Newer Entries »