My sync and backup setup

It goes without saying that data backup is important. I think most people are aware of this in some way, regardless of whether they actually do it or not. With the advent of Dropbox, Google Drive et al., backup and folder syncing have become synonymous for many. For the latter, I think its key advantage is that it happens automatically — as long as a user develops the habit of putting important files into the right folder, they can trust that the helper app for whatever service they use will dispatch it to the cloud.

Continue reading “My sync and backup setup”

How much I’ve earned on the App Store


Tapt was released on 27 May, 2016, almost a year ago now. It was the first piece of software I wrote, and the first thing I released on the App Store.1 I like to regularly take stock of projects and their progress, so I think now is a good time to reflect on the experience that it’s been. If you’re a developer, or an aspiring one, with no experience, budget, industry contacts, or knowledge of marketing, I hope this might be a useful inside perspective. If you’re not, it might just be an interesting read for curiosity’s sake.

Continue reading “How much I’ve earned on the App Store”

I have been a programmer for many years

I started learning to program when I was about ten years old. For a long time I used quite an old, archaic language exclusively. This language has more than its fair share of quirks, and even now, fifteen years later, I feel as though I’m only just getting a good handle on it. One of the main reasons for this is its age. It’s been around for quite some time, and that brings with it a reassuring stability and maturity. However, it also brings legacy and cruft, which means it can take many years of experience to gain a full understanding of it. In addition to age, there are several other factors which contribute to its general eccentricity.

Continue reading “I have been a programmer for many years”

One Year In

I started learning to program in January 2016. Prior to that, I had a rough idea of some required concepts and things like basic terminal scripts, but I’d never written an actual program. I had made a few stabs at learning before, but these attempts usually ended somewhere during the first few tutorials. Now that I’ve actually stuck at it, I thought it would be good to reflect on the past year, and examine what was different this time. This is something that will be useful to me going forward, but might also be helpful to someone in the position I was in a year ago.

Continue reading “One Year In”

AirPods Latency

A few months ago, I discussed situations where Bluetooth audio latency can be a problem for users. In short, for media playback it seems to be a mostly-solved problem1, but it’s not great for realtime feedback. The Bluetooth devices I tested last time had roughly 3x the latency of a wired connection (~80ms vs ~230ms). For realtime sounds like keyboard clicks, VoiceOver prompts and game sound effects, whose entire point is to be concurrent with visuals, this really detracts from the user experience. As before, I also have a personal interest in this issue. My app Tapt relies on low audio latency; it involves tapping the rhythm of a song, and high audio latency makes it a much less pleasant experience. My hope was AirPods would be the first sign that this issue was beginning to improve.

Continue reading “AirPods Latency”

Tapt v1.5 and Ads

Tapt has been updated to v1.5! The biggest change this brings is that the game now gives you access to all level packs for free. There’s now no need to purchase anything (unless you want to, of course…). Another big change is that level data is now loaded from a server. This means I can add new content without having to update the entire app, submit, and wait for App Review. Much faster!

Continue reading “Tapt v1.5 and Ads”

When Bluetooth Audio Latency Matters

[Update: I’ve written another article where I put AirPods through the same test. It’s here.]

There’s been a lot of talk of wireless earphones lately, mostly due to the removal of the headphone port on the iPhone 7. I love wireless earphones, and for the most part I think their pros outweigh the cons significantly. However, they have one particular problem that really needs to be fixed.

Continue reading “When Bluetooth Audio Latency Matters”


Hyperbolizer is my new app for iOS 10. It’s a silly, fun idea. It has a standalone app, but the main focus is its iMessage app, which allows you to type a message, and generate a banner image from it. You can then press the Hyperbolize! button and have the app create a more… hyperbolic version of your message. Think lots of !!, ?? and totes amazeballs phrases. It also saves your ‘Hyperbs’ as stickers for later use.

It’s now live along with iOS 10! Check it out on the App Store, or at

It was a really fun experiment in trying out some text processing in Swift. I hadn’t really done any before, Tapt required very little of that sort of work. I’m pretty happy with the results so far! I’m intending to do a few posts outlining some interesting things I’ve learned from it. Stay tuned.