the notebook of imke vos
Notes from the machine room.
I’m Imke, a backend engineer in Rotterdam. This is where I write down what I learn about databases, build tools and the bugs in between, usually with a terminal still open.
now: reading the Postgres source, one page at a time. What else
Latest posts
-
Postgres from the inside · part 3
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.
Postgres from the inside · part 2
-
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.
Postgres from the inside · part 1
-
A build system in 200 lines: the graph
Topological order, cycles that explain themselves and running independent steps in parallel.
A build system in 200 lines · part 3
-
Make your errors boring
A good error says what happened, where, and what to do next. Everything else is decoration.
Series
3 parts · 27 min
Postgres from the inside
A slow walk through the storage layer, with pageinspect open the whole time: heap pages, B-tree indexes and vacuum.
- 01What actually happens on INSERT
- 02Reading a B-tree page by hand
- 03Vacuum, seen from the page
3 parts · 23 min
A build system in 200 lines
Writing a small, correct build tool in Rust, one idea per post: why, content hashing and the dependency graph.
- 01why bother
- 02hashing inputs
- 03the graph
2 parts · 16 min
CSS for backend people
The parts of CSS I wish someone had explained to me in terms I already knew: precedence rules and layout algorithms.
- 01the cascade
- 02layout without tears
newsletter
New posts, by email
One email when a post goes up, about twice a month. Plain text, no tracking pixels, one-click unsubscribe. Prefer a feed reader? There’s RSS.