Builder · Team player · Shipper

I build things
people actually
use.play.pay for.rely on.love.

Thirty years of helping teams take ideas from napkin to production — network software in the '90s, a texting app that hit millions of users, and a connected pool chemistry monitor with thousands of customers. Lately I've been shipping a new web product about every month. Here they are.

11products shipped in 12 months
6,000+paying customers supported
30years building with great teams
1very deep voice

Recent work

Every one of these went from idea to something you can click on. Most are live right now — go poke at them.

Live3DShapeShop

3DShapeShopDesign things to 3D print, in plain English

Say what you want — "a 40mm cube with a 10mm hole through the middle" — and get a printable model. No CAD, no jargon. Runs entirely in the browser, with an undo history, a guided tour, and engraved or raised text on any face.

JavaScript3D geometrySTL exportZero backend
LiveCloudMPH

CloudMPHA free, honest internet speed test

Download, upload, latency, jitter and bufferbloat graded A–D — measured properly (trimmed means after warm-up, not peak bursts). No ads, no upsell. A rebuild of a site I first launched in the late '90s, now with server-side network tools and shareable results.

FastAPISupabaseRenderWebSockets
LiveMy Crystal Clear Pool

My Crystal Clear PoolDiagnose pool problems & learn pool care, free

Green pool? Cloudy pool? Upload a photo and your test readings and get a step-by-step fix, written by someone who is actually a certified pool operator. Plus free homeowner lessons, flashcards, and a full CPO exam prep course.

GeminiStatic + APIEducationSEO
LiveSportspool

SportspoolSquares pools for football & baseball, done right

Run a squares pool with friends without the spreadsheet chaos. Pick your squares, the app pulls live scores, figures out the winners, and emails everyone reminders and results. Built for the whole season, not just the big game.

React + TypeScriptViteFastAPISupabaseResend
S N A TC H ! PrototypeSnatchWord

SnatchWordReal-time multiplayer word racing

Up to 20 players stare at the same 12 tiles. First to submit a valid word claims it — and locks everyone else out. Three-minute rounds, auto-starting countdowns, a 370,000-word dictionary, and bots to fill the table when it's quiet.

WebSocketsFastAPIGame engineBots
v1PoolRescue

PoolRescuePhoto + readings in, rescue plan out

Snap a photo of the pool, type in whatever chemistry readings you have, and PoolRescue combines a deterministic chemistry engine with an AI photo diagnosis to hand back prioritized fix steps. The engine behind the free diagnosis on My Crystal Clear Pool.

FastAPIGemini VisionSupabaseMobile-first
LiveECHO Alliance

ECHO AllianceA command center for a 100-player gaming alliance

Public wiki, member roster, rules of engagement, and a members-only area with private discussion boards and an AI tactical assistant that answers strategy questions for Last Z: Survival Shooter. Survived a full rebrand mid-season with zero downtime.

Supabase AuthNetlifyGeminiCommunity
$ SatireThe Bill of Rights

The Bill of RightsPay the bill, get the rights

A political satire microsite: until you pay your own cell phone bill, you don't get to vote. Take the eligibility quiz. Everyone fails. Then it points you to a real voter-registration link. Comes with a full set of shareable social cards.

SatireSocial cardsSingle-page
InternalSingle-Solution

Single-SolutionAI support copilot inside the helpdesk

A Chrome extension that lives inside a support agent's helpdesk. It reads the ticket, checks the customer's data, and drafts a reply grounded in a vector-searched knowledge base of industry standards — so the first response is the right response. Built for a hardware company's support team.

Chrome extensionFastAPIpgvectorDocument AI
InternalPO Label Desk

PO Label DeskFrom purchase order to printed label in one click

Wholesale orders arrive as POs with the address buried in the CRM. This little local app looks up the buyer, compares USPS and FedEx rates, buys the label, and prints it on a 4×6 thermal printer — so nobody retypes an address again. Autostarts on Windows and Mac.

PythonEasyPostFreshsales APIThermal printing
PrototypeLane-Side Captain

Lane-Side CaptainA bowling ball carrier, designed in code and printed at home

A physical product, not a web app. A carrier system for bowling balls modeled entirely in OpenSCAD — every dimension a parameter — and refined through round after round of 3D-printed prototypes. Designed by a competitive bowler for the walk from the car to the lane. Currently back on the bench for a redesign.

OpenSCAD3D printingParametric CADBowling

The story so far

Short version: I've been building software and companies since dial-up, and I still get a kick out of it.

I got started in the mid-'90s writing network management software at CoroNet Systems, where an idea I pushed — passively capturing traffic from the desktop to show who was using what — changed the company's direction and led to its acquisition by Compuware.

Later I was part of the founding team behind Textfree at Pinger, a free texting app that grew to millions of users. That's where we learned viral growth, A/B testing, and freemium monetization the hard way — including the lesson that your users are not you.

Today I'm part of the founding team at Crystal Water Monitor, a connected pool water-chemistry device sold on Amazon with thousands of subscribers. I'm a certified pool operator, so when I build pool-care tools, the chemistry is right. And in the past year I've used that same startup toolkit — plus a lot of AI-assisted development — to ship the products above.

Off the clock: I'm a competitive bowler, a grandfather, and the owner of a voice that gets me asked to do voiceovers whether I planned to or not. More on that here →

CoroNet Systems → CompuwareNetwork management software · passive traffic capture · acquired
Third VoiceRan customer service for a web-annotation startup
AlphaSmartEdTech · trained schools nationwide · product feedback shipped
Textfree at PingerFounding team · scaled free texting to millions of users
Crystal Water MonitorFounding team · connected pool chemistry hardware + subscription
2025–26: the shipping streakTen-plus web products, games and tools, live

How I work

Whether you're bringing me onto your team or hiring me to build something, this is what you get.

1Ship first, polish second

A working v1 in days, in front of real users, beats a perfect plan in a deck. Every project above started as a weekend build that earned its next feature.

2Boring, reliable stack

FastAPI on Render. Supabase for Postgres, auth and vectors. Static front ends on Netlify. Gemini where AI actually helps. Resend for email. It just works, and it's cheap to run.

3Customer support is product

I've run support orgs and still answer tickets. I build analytics into support, write the knowledge base, and design products so the ticket never happens.

4Fun is a feature

People remember products that made them smile. I try to sneak a little personality into everything — including this page.

Got something worth building?

I'm open to consulting, fractional product leadership, and the right full-time role. If you'd rather hear from me than read from me, the voiceover page is one click away.