Projects
Things I've built. Some deployed, some experiments, all public.
Featured
m4binder
A Python CLI that converts folders of MP3 chapters into M4B audiobooks — chapter metadata, embedded cover art, Open Library lookup. Most-starred thing I've made; turns out a lot of people have a Calibre-shaped hole in their lives.
treant
Generic, parallel Monte Carlo tree search library in Rust. The kind of algorithm I kept understanding halfway — so I built it from the floor up.
BladeGen
Parametric sword generator and renderer for the web. Tweak the parameters, get a fresh blade. Built because I wanted to see what procedural geometry felt like in TypeScript.
fabula
Incremental pattern matching over temporal graphs — find evolving structural matches as a graph changes over time, without re-scanning the world.
Also building
argumentation
Rust crate implementing Dung-style abstract argumentation frameworks and ASPIC+ structured argumentation — for reasoning about which arguments survive defeat by others.
remark-code-region
Every code block in your docs is extracted from a passing test. Because docs code samples have a tendency to quietly become lies.
encounter
Social interaction resolution engine — multi-character encounters resolved via practice-scoped action catalogs and three resolution protocols. (For something narrative-shaped that's still cooking.)
Older
Anki-Spelling-Generator
Given an image of words, generates audio example sentences and Anki cards. Built when I was deeper in spaced-repetition tooling.
Stars and download counts are pulled live from GitHub, crates.io, and npm via shields.io.