Here are links to some open source software I’ve written or contributed to.


This JavaScript library provides an interactive audio waveform visualisation, allowing users to zoom and scroll the waveform, and add markers to annotate the audio. See the Peaks.js project page for more information. The project was initially developed by myself, Thomas, and Chris, and I’m now the primary maintainer.


This C++ program generates waveform data files that can be used to produce visual renderings of the audio waveform, e.g., in Peaks.js and wavesurfer.js, and can also output PNG images directly. The program supports several audio file formats, including MP3, WAV, FLAC, and Ogg Vorbis.

RadioVIS Demo Application

This is a Python wxWidgets GUI application that runs on Windows, Mac, and Linux, that demonstrates RadioDNS and RadioVIS, protocols for service discovery and delivering image slides to hybrid broadcast radio (e.g., FM and DAB) receivers.


I am the current maintainer of BeebEm, a BBC Micro emulator for Windows.


I contributed a number of features to Yargs, a popular command line parser library for Node.js, to add some features that I needed, such stricter option handling and automatic handling of --help and --version flags.