I build for the web, then I make it survive production. My day-to-day is TypeScript end to end — React and Next.js on the front, Prisma and Postgres behind it, deployed to the edge. Everything I ship is written to be tested, typed, and readable six months later.
What I'm chasing right now is the layer under the app: system engineering, Docker, CI/CD, and Linux internals — because I don't want to just ship features, I want to understand exactly how they run.
A local-first SEO inspector for Chrome, Edge, and Firefox. No account, no server, no page URL ever leaves your machine.
- Audits titles, meta descriptions, canonicals, indexability, Open Graph / Twitter cards, heading order, links, and word count — with a live SERP preview.
- Site mode discovers pages from
sitemap.xml(internal-link crawl as fallback), then scans up to 1000 in the background with a progress bar that survives a service-worker restart. - Polite by design:
robots.txtandCrawl-delayare respected, 4 parallel requests, hard page cap. Reports export to CSV/JSON. - One self-contained DOM extractor is shared between the live tab and the crawler, so a page is never audited twice by two different sets of rules.
Every US state and territory flag as code — because no Unicode/emoji equivalent exists for them.
- Ships as raw SVG, React components, JS strings, and CSS classes from one generated source of truth.
- Preserves each flag's native aspect ratio — state flags are not uniform (Ohio is a swallowtail pennant, Rhode Island is nearly square). 16 distinct ratios, handled correctly by every entry point.
- A build pipeline that goes from curated source SVGs → optimized assets → generated React/CSS/string bundles → a validated
exportsmap. - Ships behind a real quality gate: unit tests,
publint, Are The Types Wrong, and an install-the-tarball test — all wired intoprepublishOnlyand CI.
open-editor — a local-first video editor. No account, no upload, no render farm. Planning the architecture: one Canvas 2D + WebCodecs renderer shared by preview and export, flat-JSON projects instead of a compiler, and FFmpeg scoped to decode only so an LGPL build never poisons the license.
| Languages | TypeScript · JavaScript · PHP · Python · SQL · Bash |
| Frontend | React 19 · Next.js · Vue · Astro · Tailwind CSS v4 · Vite |
| Backend | Node.js · Laravel · Django · Flask · Prisma · PostgreSQL · REST & background workers |
| Edge & Infra | Cloudflare · Docker · GitHub Actions · GitHub · Linux |
| Quality | Vitest · Oxlint · typed public APIs · CI gates before publish |
- 🔧 Learning system engineering properly — processes, signals, networking, and what actually happens between
npm run devand a running container. - 🐳 Getting hands-on with Docker: multi-stage builds, slim images, compose, and why your image is 1.2 GB.
- ⚙️ Building CI/CD pipelines that actually gate: tests, lint, typecheck, build, publish.
- 🐚 Deepening Linux fundamentals — because debugging at 3 a.m. is easier when you know what the kernel is doing.
- 📐 Reading and planning around
open-editor, a local-first video editor built on WebCodecs.
"Ship it local-first, test the parts that scare you, and never make the user wait on a server they didn't ask for."

