24 years. Full stack.
Still shipping.
I ship products, not status updates. Available.
Projects
Sites
Mileweave
Full-stack app in production: auth, Stripe subscription, Postgres on Neon, Claude API.
reductio.us
Every question graded against the statute it cites. 471 citations verified at the evidence level.
Verbatim
Primary-source data explorer. Thirteen public datasets, one interface, zero editorial.
Helm
Readable open-source code: an Express 5, EJS and HTMX fleet dashboard. MIT, with a live demo.
whoami.fyi
A paid AI product in production: a $3 Claude-run audit behind Stripe checkout.
Picweave
Collaborative photo timeline. Upload photos separately, see them merged by timestamp and location.
Curios
priors
Give four Claude models a black circle and one word, “improve,” 2,608 times, each in a fresh session. Nobody says what better means, so what each one reaches for is its prior.
Geigensatz
A keyboard instrument that never existed: eighty-eight strings, a rosined bow beside each, and every bow on one rack driven back and forth by a single crank.
CRANK
An engine’s voice is timing. Give CRANK the geometry (cylinders, stroke cycle, bank angle, crank throws, firing order) and hear the engine purr or hum or thump.
Tide Machine
Lord Kelvin’s machine printed the world’s tide tables until 1965. This one isn’t made of brass, just pixels.
Incognita
A world that exists only while someone is looking at it. The first visitor wakes a sleeping server, the ground is decided at the moment somebody looks at it, and when the last person leaves the machine shuts itself off and the world is gone for good.
Goalposts
Built end to end by an AI: A record of every time the Turing Test was redefined after something passed it, and an instrument that gives any version of the test a number. The machine made the case for the machine, which is either the interesting part or the disqualifying one.
Tools
Invoisaurus
Invoice generator. Web UI in, PDF out. Try the demo, or run it yourself.
clrk
A drop folder that files itself. Reads each document, files it by your rules.
Liberator
Removes paste-blocking, sticky headers, and selection restrictions.
rtfm
Local markdown documentation server. Zero network dependencies.
arcweave
Text config → SVG line chart generator.
whyis
CLI etymology reference.
Client Work
247wallst
2025Custom WordPress for a high-traffic financial news site. Theme, live blog tooling, real-time stock charts. Publishing under deadline pressure.
Muck Rack
2023–2025Marketing engineering with Wagtail and Django. Full stack work on the public-facing site.
Motley Fool
2006–202317 years building the systems behind fool.com. CMS infrastructure, SEO tooling, lead gen platforms that drove $100M in revenue.
Background
Every project in this portfolio started the same way — I needed something, it didn't exist (or existed badly), and I built it. Not business plans. Scratched itches.
I've been building for the web since tables were for layout. Along the way: a FEMA contract building an accessibility-focused GIS application, 17 years at Motley Fool, and marketing engineering at Muck Rack.
I know what works at scale, and I still get excited about building things.
Primary stack
Python, Django, Wagtail
Also fluent in
WordPress (themes, plugins, editorial workflows)
How I work
Remote, async-first, minimal meetings.
The Sidekick
Chief Morale Officer and walking alarm clock.
Have a project?
I typically respond within a day.