Home8 posts

Blog

Writing about creative coding, web internals, and the craft of building things for the screen.

I Reinvented .env for the AI Era01
I Reinvented .env for the AI Era

What if environment variables were encrypted, typed with Zod, and invisible to AI agents — all in one file you commit to git?

Mar 28, 20265 min read
Read
How I Made VS Code Explain Code Out Loud02
How I Made VS Code Explain Code Out Loud

I built a coding agent skill that turns any codebase into a narrated audio walkthrough — scout agents, parallel generation, and local TTS running at 200ms.

Mar 8, 20269 min read
Read
How I Rebuilt JFLAP for the Browser03
How I Rebuilt JFLAP for the Browser

Porting a 30-year-old Java automata simulator to a modern web app with URL sharing and step-through algorithm visualization.

Feb 22, 202610 min read
Read
Anonymous Votes with Nothing but Math04
Anonymous Votes with Nothing but Math

How I built a trustless voting system where no one (not even the organizer) can see your ballot, using a 1988 cryptography trick and wallet signatures.

Feb 14, 202612 min read
Read
Why None of My Apps Have a Database05
Why None of My Apps Have a Database

Many of my hobby projects have zero databases — how URLs, browsers, and other people's infrastructure replaced Postgres in my hobby stack.

Feb 10, 20268 min read
Read
How I Squeezed Drum Beats into URLs06
How I Squeezed Drum Beats into URLs

Fitting an entire drum machine's state into a shareable URL with adaptive arithmetic coding. No database, no server, no accounts.

Feb 9, 202610 min read
Read
How I Made Table Rows Clickable Without Breaking Buttons07
How I Made Table Rows Clickable Without Breaking Buttons

A two-component CSS pattern for making entire table rows navigable in Next.js, while keeping nested buttons and links fully functional.

Apr 13, 20254 min read
Read
How I Turned mailto Links into a Template Engine08
How I Turned mailto Links into a Template Engine

Building Mailspread — a two-page vanilla JS app that turns email templates into shareable links, no backend required.

Feb 6, 20224 min read
Read