Month: June 2015

  • Movie podcast “The Good Robot Andys”

    My friend and I have launched a new podcast in which we discuss movies: The Good Robot Andys. Enjoy.

  • Speaking: CodeConf 2015

    I’ll be giving the closing keynote at GitHub’s CodeConf 2015 in Nashville this month. Find out more from the conference’s website here: http://codeconf.com. The talk is called Becoming a Better Programmer.

  • Speaking: CodeConf 2015

    I’ll be giving the closing keynote at GitHub’s CodeConf 2015 in Nashville this month. Find out more from the conference’s website here: http://codeconf.com. The talk is called Becoming a Better Programmer.

  • Interview: Fog Creek (Going Beyond Code to Become A Better Programmer)

    I recently did a short interview with the guys at Fog Creek on the subject Becoming a Better Programmer. You can view it here. It’s a heroic editing effort! Between unreliable network connections and probably a 40 minute conversion they’ve heroically …

  • Interview: Fog Creek (Going Beyond Code to Become A Better Programmer)

    I recently did a short interview with the guys at Fog Creek on the subject Becoming a Better Programmer. You can view it here. It’s a heroic editing effort! Between unreliable network connections and probably a 40 minute conversion they’ve heroically …

  • Code for detecting when you leave an Android app

    Further to Detecting whether an Android app is stopping (or starting), I implemented code to decide when you are leaving or entering my game Rabbit Escape. The relevant class is called Lifecycle2SoundEvents. (Yes, it’s a terrible name. Yes, I spent a l…

  • Release news: Hungry Bunny & KeyChainItemCRUDKit

    Not a technical post today, just a bit of news on the things I’ve been working on.

    Firstly, my latest SpriteKit game written in Swift is now available on the App Store. It’s called Hungry Bunny and is effectively an endless runner/skill test. It’s free with ads.



    Secondly, now that Hungry Bunny is complete I’ve returned to working on another project. This is nowhere near complete but I got to the point where I needed to securely store an OAuth2 token on iOS. I came across the Keychain API. However, the API for this was long winded and I only wanted to use it in a simple manner. Therefore I created a Swift framework to provide CRUD access to it along with a higher level interface where any type conforming to NSCoding and be saved, loaded & deleted.

    This is available on github and also as my first ever CocoaPod. All the docs are in the README plus there’s an example iOS program (Single View App) and the Unit Tests.

  • Release news: Hungry Bunny & KeyChainItemCRUDKit

    Not a technical post today, just a bit of news on the things I’ve been working on.

    Firstly, my latest SpriteKit game written in Swift is now available on the App Store. It’s called Hungry Bunny and is effectively an endless runner/skill test. It’s free with ads.



    Secondly, now that Hungry Bunny is complete I’ve returned to working on another project. This is nowhere near complete but I got to the point where I needed to securely store an OAuth2 token on iOS. I came across the Keychain API. However, the API for this was long winded and I only wanted to use it in a simple manner. Therefore I created a Swift framework to provide CRUD access to it along with a higher level interface where any type conforming to NSCoding and be saved, loaded & deleted.

    This is available on github and also as my first ever CocoaPod. All the docs are in the README plus there’s an example iOS program (Single View App) and the Unit Tests.

  • Mocks are Bad, Layers are Bad

    In which I argue that mocks are a code smell, and layers lead to increased coupling: Mocks are Bad, Layers are Bad (in ACCU’s Overload Journal issue 127) I also suggest some ways to avoid both mocks and layers, including Classical TDD, Selfish Object, …

  • Prediction result: corporate Linux

    Ten years ago I predicted that 30% of corporate desktops would be Linux or similar open source desktops. It’s very hard to find any accurate (or even confident) numbers, but it seems clear I was wrong. This month, NetMarketShare puts Linux usage at 1.2…

  • Detecting whether an Android app is stopping (or starting)

    I am writing an Android app (called Rabbit Escape), and I want it to start playing music when the user enters the app, and stop when the user leaves. Not as easy as it sounds because Android largely doesn’t think in apps, but Activities. Update: real-l…

  • Order of Android Activity lifecycle events

    I noticed some variation between devices so I tested various user actions on various devices and recorded the Android Activity lifecycle methods (e.g. onResume, onPause, onCreate, onStop) that got called. My results are below. [Why? I want to detect wh…

  • Snake in Dart

    Series: Groovy, Ruby, BASIC, Dart, Elm, Python3+Qt5 I’m writing the game Snake in lots of programming languages, for fun, and to try out new languages. This time, Dart, which is for people who love Java and wish they didn’t have to do JavaScript. Sli…