stuff you install

Packages & libraries.

The bits I pulled out into their own thing — usually because I needed them once and figured someone else would too.

ridiculousridiculous
TypeScript

Ridiculously over-typed shadcn components — template-literal validators that catch bad props at compile time, plus a colour picker with six oklch modes. Mostly an experiment in how far TypeScript will let you go before it gives up.

react-leaflet-geomanreact-leaflet-geoman
TypeScriptnpm

A React wrapper around leaflet-geoman, the drawing plugin. I needed it for Koji, figured plenty of other people probably did too, so it went up on npm.

$ npm i react-leaflet-geoman
uicons.jsuicons.js
TypeScriptnpm

A small class for working with the UICONS icon spec. Nothing clever, it just saves you writing the same URL-building code over and over.

$ npm i uicons.js
tsp-mttsp-mt
Rust

A travelling-salesman solver that actually uses all your cores instead of politely sitting on one. This is basically the engine that grew into Koji's routing.

zendriver-rszendriver-rs
RustJavaScript

Browser automation in Rust, talking straight to Chrome over the DevTools Protocol. Async, built on tokio, no webdriver in sight.

pogo-masterfilepogo-masterfile
GoRustTypeScript

Pokémon GO game data, generated into Go, Rust and TypeScript bindings so nobody has to parse the raw thing by hand. This is where a lot of my data nerdery lives.

agent-skillsagent-skills
TypeScriptPython

Custom skills I've written for AI coding agents. Half of it is genuinely useful tooling, half is me poking at what these things can do.