Projects
Things I have made. Everything here is free and open source.
Things I have made. Everything here is free and open source.
I am the creator of Splink, multi-award winning probabilistic data matching (entity resolution) software that’s been downloaded over 17 million times, and is used widely
Fast, simple and accurate address matching (geocoding) in Python. Capable of matching 100,000 addresses in around 30 seconds, and includes reproducible accuracy benchmarks on real life data.
Collage Card Maker is a static web app for designing printable A4 photo cards. It builds a collage on one half of the sheet, leaving the other half blank so the result can be printed and folded into a card.
It supports portrait and landscape A4 layouts, drag-and-drop photo imports, automatic tessellated layouts, and manual per-photo crop control with zoom and pan. Exports are generated client-side as high-resolution PNGs suitable for printing.
A simple letter learning game for preschoolers. The user drags images onto the flowers.
All artwork was created using generative AI.
A letter formation game for preschoolers. The user must complete the ‘dot to dot’ of star constellations to form the shape of a letter.
The game is built on top of my letterpaths library
letterpaths is is a flexible library built to power cursive handwriting apps. It:
This allows it to expose functions for animating writing words, and to drag a path around the word.
The library provides the underlying data for this functionality, it’s up to the consumer of the library how to render the letters and paths.
Maths vs Monsters is a tower defence game. The core mechanic is that you have to answer maths questions to upgrade turrets.
This gameplay mechanic works well because:
For some children, one downside is that the user is under time pressure to answer questions. To mitigate this, the user can pause the game.
This game is built on top of my maths-game-problem-generator library
Answer maths questions to relese balls. There is no paddle.
This gameplay mechanic works well because:
My son loves to play this on the projector in 4k, and massively increase the number of columns and rows.
This game is built on top of my maths-game-problem-generator library
A lane crossing arcade game that incorporates maths.
A lightweight, zero-dependency JavaScript library for generating curriculum-aligned math problems for UK primary school students (Reception to Year 6, ages 4-11).
This was built by using AI deepresearch agents to research the primary school curriculum and turning the resulting reports into code.