24 years. Full stack. Still shipping.

I ship products, not status updates. Available.

Ocean Pines, MD
See the work

Projects

Web Apps

Full-stack applications with auth, real-time data, and AI.

Mileweave trip planner interface

Mileweave

Active

Multi-day road trip planner with intelligent day segmentation.

AI Claude API Google Maps Supabase Node.js Stripe JavaScript Vite Tailwind
whoami.fyi search collision detection tool

whoami.fyi

Active

Search collision detector. See what recruiters find when they Google your name. Free preview, $3 AI audit.

AI Claude API Stripe Serper Node.js JavaScript Vite
Picweave photo timeline interface

Picweave

Active

Collaborative photo timeline. Upload photos separately, see them merged by timestamp and location.

Google Maps Supabase Node.js Stripe JavaScript Vite Tailwind
Doomscrolling anonymous text sharing interface

Doomscrolling

Active

Anonymous text sharing. No accounts, no tracking, just words on a page.

Supabase Node.js JavaScript Vite
Propdock property maintenance dashboard

Propdock

Active

Property maintenance tracker. Vendors, appliances, and service history in one place.

React TypeScript Dexie Vite Tailwind
The Helm fleet dashboard

Helm

Active

Open-source fleet dashboard for indie developers. Uptime, deploys, databases, and git activity on one screen.

Express HTMX SSE EJS Node.js Tailwind
Thoughtstream idea capture interface

Thoughtstream

Active

Voice-powered idea capture. Speak to Siri, review on the web.

Supabase Node.js Stripe JavaScript Vite
Dipshit.fyi message sharing interface

Dipshit

Active

The app that tells you if you're being one.

Astro Supabase Node.js Resend TypeScript
Verbatim public data explorer interface

Verbatim

Active

Public data, made explorable. Thirteen datasets, one interface, zero editorial.

Astro TypeScript JSON
PAUSED Thoughtframe AI thinking partner interface

Thoughtframe

AI thinking partner. Capture fuzzy thoughts, get the right questions, find clarity.

AI Claude API Supabase Node.js JavaScript Vite
Splitsmart expense splitting interface

Splitsmart

Active

Split shared expenses and settle up with no awkward math.

React TypeScript Dexie Vite Tailwind
Yappyhour dog park meetup interface

Yappyhour

Active

Dog park event coordination. Find meetups, organize walks, connect with local owners.

Supabase Node.js Stripe JavaScript Vite

Reference Sites

Spec databases built on Astro and TypeScript.

Content Sites

Voice-forward guides celebrating things that endure.

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

Frankie the Border Collie

Chief Morale Officer and walking alarm clock.

Have a project?

I typically respond within a day.