Packages & libraries.
The bits I pulled out into their own packages, usually something I needed in more than one project.
Over-typed shadcn components: template-literal validators that catch bad props at compile time, plus a color picker with six oklch modes. Mostly an experiment in how far TypeScript's type system will stretch.
$ npx shadcn@latest registry add @ridiculous=https://ridiculous.turtlesocks.dev/r/{name}.jsonA React wrapper for leaflet-geoman, the map-drawing plugin. I needed it for Koji, figured others would too, so it went up on npm.
$ npm i react-leaflet-geoman-v2A small class for working with the UICONS icon spec. It saves you rewriting the same URL-building code over and over.
$ npm i uicons.jsA multithreaded traveling-salesman solver that uses all your cores, not just one. I wrote it as a Koji plugin for the cases the built-in routing couldn't handle; on 100k-plus points it drops from minutes-plus to seconds.
Browser automation in Rust, driving Chrome over the DevTools Protocol. Async, built on Tokio, no webdriver.
$ cargo add zendriverInternationalization for the Bevy game engine: localized text that swaps the moment you change locale, wired in with about as little boilerplate as I could get away with. My most-used Bevy crate.
$ cargo add bevy_simple_i18nPokémon GO game data compiled into Go, Rust, and TypeScript bindings, so you don't have to parse the raw files by hand. The multi-language codegen was the reason I built it. It keeps itself current, too: an hourly job watches upstream, regenerates all three languages when the data moves, and ships new versions to npm, crates.io, and the Go proxy. Nobody in the loop.
$ npm i pogo-masterfile$ cargo add pogo-masterfile$ go get github.com/Hazels-Lab/pogo-masterfile/packages/go-apiCustom skills I've written for AI coding agents. Half of it is useful tooling, half is me seeing how far they'll go.
$ npx skills add turtiesocks/agent-skillsType-level dot-notation paths for TypeScript: one type lists every path into a shape, another grabs the value at any of them. All compile-time, no runtime, and built to stay cheap for the compiler. About 40% faster to type-check than the usual keyof cascade, and the gap grows the bigger your types get.
$ npm i -D dot.pathsAn async Rust wrapper around the curl-impersonate CLI: it shells out to the curl_chromeNNN binaries so each request carries a byte-exact Chrome TLS and HTTP/2 fingerprint, the kind anti-bot vendors check against. Pure-Rust clients only approximate that handshake; here the browser's own stack sends it. No native build dependencies either, since it spawns a subprocess instead of linking BoringSSL.
$ cargo add curl-impersonate-cli