Writing
Software engineering, marketing technology, side projects, and occasionally what it's like to run very long distances.
Generating Crosswords with a Rust Solver and an LLM Judge
Building Klew meant generating a good crossword every single day. I wrote a constraint solver in Rust to fill the grids, then handed the output to Claude to tell me which ones were any good. Here's how both halves work.
Rebuilding My Portfolio in Astro
I swapped out Create React App for Astro. Not because anything was broken, but because I wanted to try something new. Here's what I found.
The Smartest App on My Phone
Down Dog generates a unique yoga class every time from just 18 hours of recorded content. Here's the engineering that makes it feel like magic.
CribScore 1.2: Leagues, Skunks, and One-Tap Scoring
Introducing league standings with match points, head-to-head records, and a simpler tap-to-score interface in the latest CribScore update.
What Ultramarathons Taught Me About Building Software
Running 62 miles through the desert teaches you things about pacing and ignoring small problems. Turns out those lessons apply to code too.
From Dusty Raspberry Pi to Full-Stack Enlightenment
How a simple e-ink calendar project turned into my own mini data center. Building an ESP32 weather station, FastAPI backend, and always-on e-ink display.
Hello World
Welcome to my blog. A space for thoughts on software engineering, MarTech, and the occasional ultrarunning tangent.