// THE WORKBENCH
Things I've built — public, private, in progress. Tinkering made visible.
LETTERS FROM PAUL
A slow daily walk through the apostle Paul's letters, in his own voice — a passage each morning, plus a place to write to him and receive a real letter back. ESV-clean readings, illustrated voyage maps, generated on Claude. Flask + SQLite on Fly.
ENDPAPER
A multi-lens writing system. Capture in any shape — journal, snapshots, scholarly drafts — then search across everything you've ever written and publish to any blog. My main personal tool, dogfooded daily.
ENDPAPER
A multi-lens writing system. Capture in any shape — journal, snapshots, scholarly drafts — then search across everything you've ever written and publish to any blog. My main personal tool, dogfooded daily.
THE SLOT
A calm editorial planner for writers who publish across more than one place. Four-column kanban — idea → draft → review → published — with an optional BYOK AI layer. Sibling to Endpaper.
LETTERS FROM PAUL
A slow daily walk through the apostle Paul's letters, in his own voice — a passage each morning, plus a place to write to him and receive a real letter back. ESV-clean readings, illustrated voyage maps, generated on Claude. Flask + SQLite on Fly.
ONE THING
Email-first daily intention setter. Email a single focus to a magic address; receive a short reminder at your chosen morning time. No app, no login — anti-productivity-theater.
MADE MY DAY
Email-first positive-moments journal. Send short notes about good things to a magic address; once a month, receive a recap of everything. No accounts, no app.
MISSION LOG
Personal tasks out of my head.
ASTROMECH // AUDIO LAB
Browser-based synthesizer and sound design tool. 30 sounds across 5 categories, live oscilloscope, pitch and decay controls. Export Jekyll-ready snippets. Web Audio API — no dependencies, no server.
ASTROMECH // BREW LAB
French press calculator and steep timer. Set your coffee weight, pick your ratio, and let R2 whistle when the brew is ready. Web Audio API — no dependencies, no server.
ASTROMECH // DOMAIN SCANNER
Bulk domain availability checker. Paste a list or sweep a name across TLDs. DNS first, RDAP fallback, honest UNKNOWNs when CORS blocks the truth. Self-contained, client-side only.
BEST CIGAR MATCHES
A direct-to-consumer storefront for hand-made cedar cigar matches and leather goods. Jekyll storefront, custom Flask admin, Stripe for payments. Real customers, real revenue. My wife runs fulfillment.
PLINK
Self-hosted tip jar for indie creators. Embed it on your site, visitors send tips directly via Stripe, no middleman skim. FastAPI + SvelteKit on Fly.io. See it in action on my own page.
THE COCKPIT
Private Flask web app that runs my publishing pipeline plus Below Deck, Command Deck, Today, time tracking, mileage, meetings, tickets, reports, and an LLM companion. The bridge of the ship. This is the technical manual.
THE LEDGER
Private Cockpit-sibling for debt elimination and cash runway. Avalanche-snowball projection, payday session, leak-hunt CSV imports, milestone map, optional AI assistant. The chart room of the ship. This is the technical manual.
THE DISPATCH
Private Flask app handling all site communication — contact form forwarding, tools update signups, and a double-locked Markdown newsletter sender. One app, three jobs. This is the technical manual.
THE CREED
A daily-reflection app I built for my son Mozzie. PIN-locked sign-in, daily virtue missions, XP and credits, Mandalorian character customization. Lindsay and I get the dashboard. This is the technical manual.