I build software and look after the machines it runs on. This is where I write about it.
Posts
2026
Starting over
This site used to be a Svbtle blog with four posts from 2014, none of which I still stand behind.
Projects
Ends and Means
Political, economic, and social ideas in theory and practice, explored through explanations, historical cases, comparisons, and evidence.
AirHound
An open WiFi and Bluetooth surveillance detection toolkit, with a portable Rust library, shared device signatures, and ESP32 firmware.
gas-tools
Google Apps Script tooling: typed sheet-as-database helpers, runtime utilities, test mocks, and a local dev server.
katana-openapi-client
Python and TypeScript clients for Katana MRP, with automatic retries, rate limiting, and pagination.
katana-sheets-toolkit
Katana MRP API access and Google Sheets integration for Google Apps Script, built on gas-tools.
harness-kit
A self-improving agent harness for auditing and evolving a project's AI tooling.
gdub
A Gradle wrapper wrapper: gw picks the right gradlew or system Gradle for each project.
solarized-ui
The design system behind this site and my résumé: exact Solarized, light and dark.
site-analytics
Privacy-respecting Umami analytics for static sites, with guarded tracker loading, interaction events, and a matching privacy notice.