Writing on software design, data visualization, and the software industry.

All of my long-form thoughts on programming, data visualization, and more, collected in chronological order.

Stereotypes 2

The most stereotypical person in UK cities.


The most stereotypical person in UK cities.

ChatGPT + MidJourney

Using ChatGPT and MidJourney to generate art.

AI image generation

A quick look at generating images with AI.

Town Bumps - The start

The Cambridge Town Bumps start tomorrow and I'm taking part as a cox (the shouty person at the stern who also steers).


Who uses my library?


The list of ideas and features you and your team could come up with is likely enough to last a lifetime. There's both an art and science to choosing what to work on next as well as what you will not take on.


While refactoring some of the data manipulation behind www.cambridgebumps.com I came across an obvious place to apply some memoization.

What's the biggest number you can think of?

The idea of playing a game where you and a partner take turns at naming a number bigger than the last has always amused me. In reality, I think it would be deathly dull but it does raise the question of what, truly, is a big number?

React and d3

While React and d3 are designed with different goals in mind they do share a common theme. This is that data should define what you see.

Rollup and d3 plugins

Mike Bostock outlines a standard for putting together d3 plugins here. My first serious attempt is d3-bumps-chart - a way of visualizing bumps race results.

Algorithm visualization: Part 2

The second problem in our series of algorithm katas is Kingdom And Trees from Top Coder.

You're making it hard to like you GitHub Desktop

Every few months I revisit the git client landscape. I know enough about the git command-line to be dangerous but sometimes I just want to forget the syntax and click on some buttons.

Algorithm visualization

We've kicked off a series of algorithm coding katas at work.

Taking Docker for a spin

Docker has intrigued me for some time now so I thought I'd take a closer look. Purely in a personal capacity, as until Docker supports Windows containers there are few applications at work.


I'm developing a super simple Android app: Tony Facts.

What no one tells you about GPU benchmarks

In several past roles I have spent time thinking about difficult numerical computing problems. Before joining Red Gate I was lucky enough to get to work on the problem of taking numerically intense C# code and generating CPU code at run-time.