$ cat ~/blog/*
Notes from the workshop.
Paper notes, technical investigations, and lessons from building systems by hand.
Building a container runtime from raw syscalls in Go
There is no such thing as a container in the Linux kernel — only namespaces, cgroups, and a swapped-out root filesystem. Notes from building one by hand in Go, with zero dependencies.
Building an LSM-tree storage engine in Rust
Every database eventually faces the same fight: random writes are slow. Notes from rebuilding the LSM-tree — memtables, WAL, SSTables, bloom filters, and compaction — from first principles.
Building an API gateway from scratch in Go
A reverse proxy is the easy part. The real work starts when traffic needs to be shared fairly, failures contained, and every request made explainable.
Raft, explained by building it
Reading the Raft paper is one thing. Watching your own leader election flap because of a heartbeat bug is another. Notes from implementing consensus in Go, section by section.
What a binary wire protocol taught me about API design
When every byte is yours to define, you start seeing REST APIs differently. Framing, versioning, and backwards compatibility — lessons from building Flume's protocol.
Learning notes: the log at the heart of every system
Kafka, Raft, write-ahead logs, event sourcing — the same data structure keeps showing up. Notes on Jay Kreps' essay and why the humble append-only log runs the world.