Systems I've Built

Each of these taught me something about how systems break. Here's what.

PodScene — Browser-based remote video podcast studio

Built a studio for recording remote video podcasts entirely in the browser. Guests join by link with no install. Each participant is recorded on their own device and uploaded in small chunks, then the server composites the finished episode in the host's layout and delivers a separate MP4 track per person. The same scene runs as an OBS browser source for live streaming.

What this taught me: How to record and compose video in code. Capturing media, moving it reliably off each participant's device, and assembling it into a single finished video turned an abstract pipeline into a concrete set of problems to solve — layouts, screen-share switching, and keeping the live scene and the final render in agreement.

Visit podscene.app →

Site Auditor — Free SEO & GEO audit

Built a free tool that scans any URL server-side and scores it on SEO (titles, meta descriptions, sitemaps, canonicals), GEO (llms.txt, structured data, semantic HTML, AI-crawler access), and basic performance. Every scan produces a permanent, shareable report. It runs on Redline, my Rust web engine.

What this taught me: How AI actually finds a website and decides what information on it is relevant. Search engines and AI crawlers read different signals, and a site that ranks fine can still be invisible or misunderstood by AI. Getting it right is a matter of structure — clear metadata, structured data, and explicit crawler access — not volume of content.

Run a free audit →

JustHTML.dev — No-npm developer community and methodology

Built a community platform and resource hub around a single premise: the browser's native platform — HTML, CSS, and JavaScript — is sufficient for most web applications. The site features a project showcase, technical guides, and a growing community of developers building without npm or frontend frameworks.

What this taught me: Dependency risk is an architectural decision that most developers never consciously make. The npm ecosystem accumulated over 3,000 confirmed malicious packages in 2024 alone. The September 2025 Shai-Hulud worm self-propagated through 500+ packages with 2.6 billion combined weekly downloads — autonomously, because the architecture allowed it. Every dependency your system takes on is a trust decision you are making on behalf of your users. Most systems make that decision carelessly, at volume, because the tooling makes it frictionless. Frictionless is not the same as safe.

The architectural response is not paranoia — it is deliberate minimalism. Build with what the platform provides. Add dependencies only when the platform genuinely cannot do the job. Treat your dependency tree as part of your attack surface, because it is.

Visit JustHTML.dev →

Retired Projects

These products have been sunset. The lessons haven't.

Retired 2026

Billivio — Usage metering and entitlement system

Built a system to track and enforce usage limits for pay-per-use products. Users purchase credits through their payment processor (Stripe, PayPal, etc.), receive an invoice number, redeem it in the app, and the system meters their usage against what they paid for.

What this taught me: Entitlement systems are deceptively complex. The gap between "user paid" and "user can use" creates race conditions most developers don't anticipate. Invoice redemption needs idempotency. Usage tracking needs atomic operations. The payment processor succeeds, but the user's network fails before they get the invoice—now what? These edge cases define the system's reliability.

Retired 2026

Daklens — CSV data cleaning tool

As a demo for Billivio, I built a web-based tool to clean and transform messy CSV files. Users upload broken exports, apply transforms (remove duplicates, fix formatting, standardize columns), and download clean data.

What this taught me: Data import is where most systems break. The gap between "what the system expects" and "what users actually upload" is vast. Character encoding issues, inconsistent delimiters, malformed rows—these aren't edge cases, they're the norm. Building a reliable CSV parser means assuming the data is wrong until proven otherwise.

These aren't just portfolio pieces—they're proof I understand how systems break, scale, and drift from their original intent. Each one taught me something that informs how I analyze other people's systems.

Work with me