Eight sites I founded, and design, build, and operate end to end — every one of them running on my own hardware, from the Apache vhost up. The oldest domains date to 1997, the newest to 2026; years below are domain registration dates.
They sort into four families by what the site is actually about. How each one is built cuts across those families, so it is set out separately at the bottom.
Guides to somewhere real: what is there, and how to actually go.
Asia-Pacific travel guides across eight countries and sixty-nine cities, fronted by departure boards for the ten airports that matter for the region.
An independent visitor's guide to Southern California's wine country — fifty-odd wineries on decomposed granite, dawn balloon flights, and how to plan the day properly.
Discover Slovakia. A long-form editorial journey through castles, the High Tatras and a precision economy — written end to end in both English and Slovak.
A body of knowledge laid out so it can be learned in order — each with something interactive, because some things only make sense once you can break them.
A working map of artificial intelligence in fifteen sections, from foundations to policy, with sixteen interactive instruments you can drive in the browser.
A plain-language health-education library — diseases, vitamins, minerals, herbs, remedies, foods and lab tests — with 137 interactive biology visualizations you can press play on, break on purpose, and watch respond in real clinical units.
You sign in, and there is somebody on the other side.
My Web-Based Social. Online since November 1999 — ten thousand friends before the world had a name for social networking — and rebuilt from the ground up today around stories, photos, friends, groups, audio rooms and games.
A real-time chat room where every message disappears within 24 hours — so the room is always a conversation happening now, never an archive.
Machine reading, where the answer is worthless unless you can check where it came from.
AI-powered legal document intelligence: clause extraction across 40+ named clause types, risk scoring against a configurable playbook, and audit-ready output that cites the page and paragraph it came from.
Three patterns cover all eight. The rule is the same every time: static by default, and dynamic only where the feature genuinely cannot work without it.
| Pattern | Sites | Why |
|---|---|---|
| Static HTML, served straight off disk | PacificAir, Pacific-Design, MyHealthcare, TemeculaWineTasting, Nitra | 14,177 pages between them and no database on the request path. Search is built offline; the interactive parts run in the visitor's browser, not on my server. |
| Python CGI and MariaDB, with Go for anything heavy | MyWBS, ProtonChat | Accounts, sessions, moderation and real-time need state. Games compile to WebAssembly and run in the member's own browser; the audio-rooms and chat daemons are native Go on loopback behind an Apache proxy. |
| FastAPI on AWS, with frontier/local model routing | MyDocumentIntelligence | The only one that needs a GPU budget and per-tenant isolation: pgvector on RDS, documents in S3 under per-tenant prefixes, and a routing layer that keeps sensitive documents on local models. |
That is not nostalgia. It is what lets one person run eight production sites, several of them in the thousands of pages, on a single box without a platform team.