Crash Test Dev
Engineering judgment, tested against reality.
From the series
Your CI passed. Your tests passed. The build cache said nothing changed. It was wrong. You shipped a broken build to production because a cache returned stale output from three weeks ago. The bug took two days to find. The fix was one line. The root cause was not your code. It was your build system's trust model.Read "Your Build Cache Is Lying to You" →
Rage: Rebuilding the Build System
A six-part investigation into rage, a Rust monorepo build system that fuses BuildXL's provable correctness with lage's ergonomics. From syscall sandboxing to content-addressed storage.
01
Your Build Cache Is Lying to You The silent stale cache problem. Every JS monorepo build cache shares this flaw.
Read · 12 min
02
How We Made the Cache Stop Lying Weak fingerprints find candidates. Strong fingerprints verify them. The pathset is the bridge.
Read · 15 min
03
Zero-Config File Watching Across Three Operating Systems Three operating systems. Three interception mechanisms. macOS interpose, Linux eBPF, Windows Detours.
Read · 16 min
04
TypeScript 7 Is 10x Faster. Your Builds Aren’t. Counter-intuitive: tsgo’s 10x speedup makes distributed coordination more important, not less.
Read · 9 min
05
90 Seconds to 300 Milliseconds: Fixing CI Install Times Per-package content-addressed storage. The unsexy problem that kills CI build times.
Read · 11 min
06
The Architecture Mistake I Made in Lage Personal narrative. From lage maintainer to Rust rewrite. The architecture’s original sin.
Read · 12 min
Cloudpack: The Module Graph Is the Software
A six-part investigation into cloudpack, a Rust-based bundler where the bundle is a query against a continuously-maintained module graph. 604ms rebuilds at 50k modules. 50% less CDN bandwidth per deploy. Dead code that actually stays dead.
01
604ms Rebuilds at 50,000 Modules The outcome: 604ms warm rebuilds. The insight: the bundle is a query, not a file.
Read · 10 min
02
50KB Down to 2KB: Why We Stopped Parsing Source Files 25x compression. Module summaries replace full parsing. 50k modules fit in L3 cache.
Read · 12 min
03
We Shipped 40% Less JavaScript and Nobody Noticed Two-layer tree-shaking. Module-level conservative. Function-level aggressive via call-edge graph.
Read · 15 min
04
50% Less Bandwidth Per Deploy Delta manifests. Browser says what it has, server returns what's missing. 47 GB/week saved.
Read · 9 min
05
Your Users Are Already Telling You How to Bundle Real browser sessions drive chunk grouping. No rebuild required. C³ clustering from live traffic.
Read · 11 min
06
A Compromised Server Can't Inject Code Ed25519 signing. The threat model: ABS compromise ≠ code injection. Two breaches required.
Read · 9 min