immutable.build
Projects
immutable.build
Technical depth

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.

Open source · Live
branch: (01)

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.

ReactPythonDockerCI/CD
Self-hosted · Live
branch: (02)

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.

AstroSelf-hostedCI/CD
Self-hosted · Live
branch: (03)

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.

LinuxSelf-hostedAnthropic API
Personal infra
branch: (04)

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.

LinuxVirtualizationNetworking
Personal tooling
branch: (05)

Obsidian Plugins & Skills

Custom plugins and skills extending an Obsidian-based knowledge system, automating capture, synthesis, and retrieval across a large personal wiki.

TypeScriptObsidian API
// directed decisions
DEC: the daily node — architecture

Single-file React over a full build toolchain.

// constraint

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.

// options considered
Standard Vite/CRA — toolchain runs on target, node_modules on a display
Vanilla JS — no React ergonomics, harder to maintain complex UI state over time
Single-file React + custom esbuild — React DX, one JS output file, deploy = copy
// the call

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.

DEC: immutable.build — design

One warm token. Everything else is cold.

// constraint

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.

// concept

“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').

// accessibility

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.

// next — Want the producer who speaks engineering?
Get in touch