tags
Browse by tag
Every post has a few tags. Pick one to see the posts that share it. The address changes with it, so you can link straight to a tag.
All posts
14 posts
Vacuum, seen from the page
Dead tuples, the free space map and why VACUUM almost never gives disk space back.
Reading a B-tree page by hand
Open an index with pageinspect, walk from the root to a single row and see what an index actually promises.
The flaky test was a time zone
A test that only failed after 5 pm, and the one-line date parse behind it.
What actually happens on INSERT
From the parser to the write-ahead log: following one row into a Postgres table.
A build system in 200 lines: the graph
Topological order, cycles that explain themselves and running independent steps in parallel.
Make your errors boring
A good error says what happened, where, and what to do next. Everything else is decoration.
A build system in 200 lines: hashing inputs
Timestamps lie and content hashes don’t. Deciding when a step is really out of date.
A build system in 200 lines: why bother
Writing a tiny build tool is the fastest way to understand the big ones.
A build system in 200 lines · part 1tooling
Notes from a year of on-call
What forty-one pages at 3 am taught me about alerts, runbooks and sleep.
SQLite is my favourite queue
For most side projects, a table and a transaction beat a message broker.
CSS for backend people: layout without tears
Flexbox for one dimension, grid for two, and the three properties behind most layouts.
CSS for backend people · part 2css
CSS for backend people: the cascade
Specificity, order and inheritance, explained as a merge conflict.
CSS for backend people · part 1css
Profiling a slow endpoint with nothing but logs
No tracing, no flame graphs: timestamps, awk and a hunch.