Polyglot developer. Ex-academic. Parent. OpenUK 2025 Honours list recipient. Rust and Python mostly (although I know a lot of other things). He/him/his.
serial_test. Allows for the creation of serialised Rust tests
293wharf. Web UI for Dokku
261discord-apt. APT repository for Discord
191maiden. Rockstar interpreter in Rust
53terraform-provider-helloworld. Demo Terraform Provider in Rust
46ban_allowlist. Home Assistant plugin to add IP ban whitelisting
23guix-vm. Scripts and support necessary to make a GuixSD Virtualbox image
22rhythmbox-tray-icon. Tray icon for Rhythmbox 3+
20wait-for-db. Tool to wait until a database is up and responding to a query
17herder. Automagic scheduling of a convention
13actix_lambda. Runs your actix-web app as a lambda app that will respond to Application Load Balancer requests
13tagpy. Python wrapper around TagLib
11potboiler. AP Event Sourcing system
10panel-applet-generator. Gnome panel applet generator
7beeminder-calendar. Generator for "fail days calendar" for Beeminder
7paracrine. A system deployment tool
7dawn. London buses search
7munger. Tooling for making a scan-to-cloud setup
7book-blog. Makes Kindle books from a blog
7tuvix. Experimental hermetic build engine with Starlark
6cavalcade. AMQP broker backed by PostgreSQL
6clostridium. Befunge interpreter in Clojure(script)
6workrave. Workrave is a program that assists in the recovery and prevention of Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily limit.
5NAntScript. NAntScript provides custom tasks that allow you to script other custom tasks using regular NAnt script.
5postcode. Android postcode finder
5comicsgrab. Webcomics grabber
5xkcd-kindle. Adding a nicely formatted copy of all the XKCD strips to my Kindle
4raspberry-chef. Chef bootstrap for Raspberry Pi
4epgrabber. Automagic TV episodes torrent searcher and downloader
4clojure-dxf. Clojure DXF library, based off Stani's Python DXF library
4twitter-link-feed. RSS Feed of links from Twitter
3exmlrpc. An HTTP 1.1 compliant XML-RPC library for Erlang
3paternoster. Keep you going on lifts
3gtkgo. Redirect to current site
3cgkit-debian. A copy of cgkit that's buildable under debian
3phone-to-kindle. Send articles to a Kindle
3Kindelabra. Kindle Collection Manager
3docket. A tool for adding tasks to Todoist for your Beeminder todo list
3dh-builddep-metapackage. Build build-dependency metapackages for Debian
3dotfiles. My .dotfiles for homedirs
3LittleBrother. Little Brother script
3eslint-plugin-require-prevent-default. Eslint plugin to require preventDefault calls
2shucker. Shucker is a tracking-param filtering library, designed to strip URLs down to their actual true forms.
2strife. Discord profile display
2xboxone-home-assistant. Control your Xbox One from your Home Assistant device.
2JourneyPlannerParser. Java classes to parse TfL Journey Planner pages
2TubeJourney. Android app to display Journey Planner data
2obsidian-random-names. Add random names to Obsidian notes (mostly for RPGs)
2bgg-graph. Boardgame decision graph based on BoardGameGeek data
2tailgate. Book Calendar data based off of Goodreads
2rmapy. A unofficial python module for interacting with the Remarkable Cloud
1on-infrastructure. Demo infrastructure setup
1Cohen. A DLNA/UPnP Media Server
1generic-dns-update. Cross-platform tool to update DNS such as Gandi.net with your dynamic IP address
1