Dev Diary - 2nd May 2014

A little slow this week while we debate largely non-technical issues with Apple. Doubling-down on Android is the order of the week.

On a more positive front we had a very successful deploy of a huge improvement to the most important part of our service. It was a multi-app deploy and has so far gone off without a hitch. This is how it should be of course but you can never be 100% until it’s in the wild. As well as Randy’s awesome code we also did quite a bit of manual testing and a detailed code review.


Megan Fox discussed game dev on this week’s Ruby Rouges which was low on Ruby but and interesting insight into an industry so different to the web dev I’m used to.

I literally cried listening to Sara Seager on Story collider. The episode is funny, tragic but also beautifully inspiring - impressive for only 16 minutes.

Dev Diary - 25th April 2014

This week

The app store wait continues while we work on promo sites and continued Android fixes.

Spending time with Android

I’ve spend the week using a Nexus 5 as my carry phone to get a feel for the subtle differences in the platform. It’s been a good learning exercise as I now have a better understanding of Android.

On the whole it’s what I expected: great service integration & some interesting features but way lower quality of hardware and software. I’ve always thought the UI looked messy but it’s actually just a bad user experience in many places.

Third-party apps

I’m a heavy podcast user - I listen to multiple podcasts during the day. My week on Android was made worse but a complete lack of decent podcast clients. Every one of them was awful - confusing, overblown interfaces, even the ‘basic’ features were impossible to use and understand. I tried many - both paid and free - from ‘the best of’ lists and none of them made any sense.


Like many programmers my reaction to the lack of a decent podcast client was to think ‘hey - I could write my own!’. This lead me to the Xamerin Project. I remember Xamerin & Mono from the early 2000s when I was primarily working in .NET.

After working on a PhoneGap-based project it was interesting to see another approach to the problem of cross-device development. So far I’m impressed. The main idea is to write your core code in shared libraries then create platform-specific UI code that hooks up to it. The whole thing is then compiled down and run on a platform-specific runtime shipped with the app.


I was a die-hard, London-school TDDer and boy did I talk about it. My approach has softened a lot recently. I broadly agree with DHH’s issue with being so prescriptive. Many things that we treat as process should actually be tools for getting the job done. Pair programming, TDD, Agile etc are all susceptible to ‘silver-bullet’ syndrome.

It is however, important to remember that skepticism is about applying critical thinking - not just dismissing out of hand. The urge to argue against the doctrine can blind you to the good stuff. For example, you’re missing out if you’ve never used tests as a way to drive design. A lot of the time it just makes the feedback cycle quicker.

Ultimately we’re all just trying to write good code and get good results. I can’t say it better than Zed Shaw: Programming, Motherfucker.


The ongoing debates and issues surrounding sexism in tech have no doubt been on everyone’s minds recent. The Debug podcast had a great discussion with a panel of women in the tech industry.

Dev Diary - 17th April 2014

This week

We’re now in the ‘Waiting for Review’ stage of every iOS release so most of the time has been spent tidying up, spiking new features and bug fixing in prep for our Android release.

Listening to smart people

A few weeks ago I had a debate about our evolving API with my good friend & college Tim. He was pushing for a more ‘hypermedia-style’ while I was more keen on ‘keeping things simple’. I’ve always kept and ear to the ground on hypermedia but it felt too up in the air still.

My mind has been changed after listening to the ”Hypermedia APIs” epsiode of Javacript Jabber where Steve Klabnik goes in depth on the philosophy behind hypermedia and talks about With a specification building around it - and the benefits of convention and a richer data set - I really feel like it’s something we can get behind. I’m really glad we versioned our APIs sensibly!

I’m also resolved to dig deeper before dismissing an idea. A throw away comment from Steve hit it home for me: “I was like, ‘That person’s smart. But they said something that sounds stupid. I should maybe think about why I feel that’s true and maybe go look into what their argument is.’”.


The past few Javascript Jabber episodes have really stood out for me. Raquel Vélez talking about robotics and Javascript was fantastic and really inspiring to get out and play with something other than pure code.

The Incomparable have rebooted their podcast Teevee. At there moment they’re talking about Game of Thrones.

Dev Diary - 11th April 2014

This week

Super excited that the project I’m on a work is shipping next week!

Looking back I’m pretty impressed with what we’ve achieved so far. We’ve used open source tech well but we’re still only a small team. Over the coming weeks we’ll be shipping an app on both iOS and Android that hooks up to our existing backend systems - then the real work starts!

We were lucky enough to not be vulnerable to heartbleed but I’ve really enjoyed digging into the bug. There’s a great rundown of the specifics here.

I’ve always worked in memory managed languages, but my current C studying has just hit memory management. I was pleased to be able to keep up!


I’ve finally picked up SICP. Not too far in yet but it’s great to be digging deeper into compsci.

On my commute I’m still working through the ”Learn C the Hard Way” which has been a lot of fun. I have to confess that I’ve started copy/pasting the code but that is meaning I have more time for the ‘Extra Credit’ exercises.

My son is obsessed with Minecraft so I’ve also picked up the pragprog’s book on creating plugins for the game. It’s giving me a light introduction to Java and has been good to pair with a 5 year old.


Related to the Minecraft obsession, I’ve found the “Volume Alpha” by C418 really good for coding.

Iterate Imperfection

My wife has had the same website I built for her dance business in 2005. In that time we’ve had countless attempts at redeveloping it, normally starting with opening Photoshop, or setting up an account on the latest CMS service. These attempts all ended up half completed.

Running off the high of an event on Saturday night, we sat down on Sunday to prepare for the next show. Rather than the usual hacky updates, I decided to do improve things a little. Not a full rebuild, not perfect - but good enough.

Automated UI Testing With Cucumber for Cordova/Phonegap Apps

Both iOS and Android have UI automation frameworks for driving the UI which is great for integration/acceptance testing for your app. However, when you’re using a web/native hybrid framework like Cordova, this can get tricky.

If you come from the Ruby world, you may also be used to using Cucumber for integration testing. While the testing landscape for hybrid apps is a little rocky, a lot of smart people are working on some great tools to improve things. With some effort, you can have Cucumber-based integration spec suite up and running for your hybrid app with relative ease.

Building SBGauge

I built SBGauge as part of GrooveCoach as a way to indicate which ‘level’ the user was on. When you tapped ‘+’ or ‘-’ the gauge changed accordingly. As part of developing that app I was keen to open source anything I could.

Given the flexibility of this simple library, I thought it would make an interesting code walkthrough.

Glass Bottles and the Law of Demeter

I can’t throw glass bottles in the bin anymore. I’m not a dread-locked earth hippy but I’ve been recycling for so many years that it just feels…wrong.

Good habits work best when they’re instinctual - like muscle memory.

Todoist Part 1: The Todo

Todoist is a simple todo list application that I’ll be building from the ground up, focussing on the objects and interactions first.