Beyond Production.
Side builds and shipped tools. Signal over noise: only what’s live or actively maintained.
I’ve directed and shipped real builds: enough hands-on to follow the engineering, smell a soft estimate, and know what “done” actually means.
The Daily Node
A single-file React dashboard with a custom esbuild step (no runtime build), a Python proxy backend, Docker deployment, and GitHub Actions CI/CD, pulling live market, network, weather, and self-hosted data onto a wall-mounted display. Shipped to v1.3.0 with ~280 automated tests and a hardened security posture: CodeQL, an SSRF allowlist, and XSS and CORS defense.
immutable.build
This site. Designed and directed by me end to end, built in Astro with AI as the implementation partner; every architecture and design call was mine. Version-controlled and self-hosted with auto-deploy on push; the live build hash in the footer is the current commit.
OpenClaw
Self-hosting OpenClaw, the open-source personal-AI-assistant by @steipete, on a personal Linux VM, run as always-on infrastructure wired into everyday messaging. Hands-on proof of the deployment, Linux, and AI-tooling fluency I bring to production.
Self-Hosted Infrastructure
Personal infrastructure built and operated from scratch: custom hardware, virtualization, networking, and self-hosted services running real workloads. The same ownership-of-the-stack discipline applied to my own systems.
Obsidian Plugins & Skills
Custom plugins and skills extending an Obsidian-based knowledge system, automating capture, synthesis, and retrieval across a large personal wiki.
Single-file React over a full build toolchain.
The display target (wall-mounted, always-on) shouldn’t need a build toolchain to run or update. That was the whole design problem. Lock that constraint and the right answer follows.
node_modules on a display Custom esbuild step compiles the entire UI to one JS file. Update = push the file. The Python proxy enforces the SSRF allowlist at the network boundary; rate limiting and XSS defense live there, not scattered across the front end. Solve for the real constraint; the architecture falls into place.
One warm token. Everything else is cold.
The entire interface is cool-steel monochrome, except the accretion disk, the “available” dot, and primary CTAs. That’s --cta: #f0a33c. One fire in the dark. When everything could be amber, nothing is. Restraint is the design decision, not the default.
“Immutable” means the standard doesn’t move. The whole IA uses version-control as metaphor: sections numbered (01)–(05), work rendered as a commit spine with FNV-1a hashes per title, the footer stamped with the live build hash injected at build time via execSync('git rev-parse HEAD').
The spectacle should never cost a user their experience. Reduced-motion and coarse-pointer preferences gate every animation (prefers-reduced-motion, pointer:fine); elements that go illegible during the consume scroll are hidden from assistive tech until scroll-up (aria-hidden); and with JavaScript off, everything renders visible by default.