Skip to main content

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

6 min

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.

rustcrosswordswasmclaude

Rebuilding My Portfolio in Astro

3 min

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.

astroweb-developmentportfolio

The Smartest App on My Phone

4 min

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.

product-engineeringarchitecturemobilekotlin

CribScore 1.2: Leagues, Skunks, and One-Tap Scoring

3 min

Introducing league standings with match points, head-to-head records, and a simpler tap-to-score interface in the latest CribScore update.

iosswiftuiapp-developmentcribbage

What Ultramarathons Taught Me About Building Software

3 min

Running 62 miles through the desert teaches you things about pacing and ignoring small problems. Turns out those lessons apply to code too.

ultrarunningsoftware-engineeringcareer

From Dusty Raspberry Pi to Full-Stack Enlightenment

4 min

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.

raspberry-piesp32pythonfastapihardware

Hello World

1 min

Welcome to my blog. A space for thoughts on software engineering, MarTech, and the occasional ultrarunning tangent.

meta