01 / Data
Data & systems.
Schemas, migrations, integrations. The long-lived layer: domain models, the contracts between services, the data that outlasts whatever UI sits on top of it.

Full-stack software engineer at Herzog Railroad Services. I started out on ballast-train integrations and now work across the enterprise systems that keep rail operations running. On the side I build T5, a developer-tools organization where we ship our own projects. Outside work: hiking, climbing, tinkering. Most of my learning goes to AI right now. It's the biggest shift to the craft I've seen, and one I'd rather lead than chase.
Disciplines
01 / Data
Schemas, migrations, integrations. The long-lived layer: domain models, the contracts between services, the data that outlasts whatever UI sits on top of it.
02 / Interfaces
Web, desktop, and hardware-adjacent apps. Angular in the office, MAUI and WPF trackside, whichever environment the work actually lives in.
03 / Tooling
On the side I build T5, a developer-tools organization where we create different projects. It's also the bench where I experiment with AI as a craft shift: what sharpens us, what doesn't, what deserves to be kept.
View on GitHub
Featured projects
All workiOS app for remembering where you parked. Meter reminder, photo of the spot, walks you back.
Live
2026
A native iOS app built on nights and weekends and shipped to the App Store. Fully offline by design: no accounts, no servers, no tracking. State and photos live on the device, where they belong. Now on version 1.3, past 100 downloads on the App Store.
This site, designed and built from scratch and self-hosted out of my home.
Live
2026
Next.js portfolio with a typographic editorial feel, blur-in animations on every masthead, and a static-export build so there's no Node runtime to run. Self-hosted on a Raspberry Pi 4 over a Cloudflare Tunnel with no port forwarding, no inbound exposure, TLS terminated at Cloudflare's edge and plain HTTP inside a Docker network. Two containers on the Pi: Caddy serves the built `out/` folder, cloudflared keeps an outbound tunnel open. Updates are one `npm run build` and an `scp -r out` away.
Full-stack feature work on a maintenance platform spanning invoicing, assets, scheduling, and reporting.
2026
Tablet-and-laptop solution for two-operator field work in low-signal environments.
2025
A real storefront built to take money: product catalog, cart, and Stripe checkout on Next.js and Supabase.
In progress
2026
A full e-commerce build that goes all the way to a paid order: product catalog, cart, and Stripe checkout, with session-based auth and transactional order email on top. Postgres on Supabase with Drizzle handling the schema and migrations, Zod validating every boundary, and the whole thing deployed to Cloudflare Workers via OpenNext. In progress.