Notes, projects and other thoughts
I went looking for how pirate streaming sites and Android apps actually serve the World Cup. The DRM keys were in the HTML, the app encryption was AES-ECB, and the ’license server’ was a URL with the key in the query string.
Functions are a great shape for request/response. They’re a terrible shape for a database. This is the part of fastfn where long-lived services joined the gateway — native docker, native process, Firecracker microVM — all behind one workload config.
How building a personal FaaS turned into a rhyme with FastCGI — polyglot runtimes, a Lua gateway, and a JSON wire protocol. Part 1 covers the function side; Part 2 covers services.
A Gigabyte Aero RGB keyboard, /dev/hidraw, a non-XOR checksum, and one udev rule that turns ‘sudo every time’ into ‘it just works’.
The whole gocracker story in one sitting: why Go, how KVM actually works, the concurrency bugs that nearly killed it, the performance work that brought cold boot under 200ms, and the production layer above it that almost killed itself silently.
Why concatenating chat transcripts doesn’t scale, and how I built a local-first, probabilistic long-term memory system on top of SQLite.
1 The comfortable lie about containersThere is a polite fiction in modern development that everyone accepts because it is convenient: we pretend Docker containers are fast and lightweight. And they are, if your reference point is provisioning bare metal in 2005. But as my tools needed to isolate workloads more frequently — and more dynamically — I started feeling the drag of depending on a giant external engine sitting between me and what I actually wanted.