Current projects


Learning project: robotics, mapping, motor control, UHF radio, ultrasonic sensors. [WIP]


434 MHz radio link: electronics, firmware, software, network protocols. [WIP]

Completed projects

Morse Blinkies as a Service

A silly project to generate Morse code blinkies programmatically.

Nordic Semi nRF52840 Tools Comparison

Comparing the tools that are available for software development on the Nordic Semiconductor nRF52840, covering the vendor-recommended tools, a couple of other conventional options, and a couple of “ringers”.

Teensy Load

A programmable load using a Teensy for control and data capture.

Solder Snorter

A solder fume extractor using a PC fan.

Older projects


A pure Haskell arbitrary length fast Fourier transform library, along with 10,000 words of explanation of how it works!


As part of a project looking at how it would be to do climate data analysis in Haskell, I wrote a Haskell library to handle Unidata NetCDF files, which is a standard file format for geophysical and climate data. It’s mostly fairly utilitarian, but it does make extensive use of C2HS, which led to me spending a couple of years maintaining that.


Radian was a declarative HTML plotting library I wrote a few years ago for a literate Bayesian statistics programming environment, which unfortunately never saw the light of day. (A real shame, because there was some clever stuff in there.) Radian uses d3.js and Angular to allow you to embed interactive plots directly into HTML. I don’t think anyone other than me ever used it much, but it has some interesting ideas in it (I think!).

Data visualisation

I’ve done a lot of scientific data visualisation work. The linked page shows a few examples.