The Library
Software Engineering
Everything Nullhaus has published in this pillar. Free, open, no login. Back to the library
-

An error message is an interface, not a log line
Error text gets written by whoever was closest to the failure, at the moment they were most irritated by it. That is why it reads like…
-

Latency is an interface problem
Your p50 server time is 90ms and users still call the product slow. Perceived duration is constructed in the interface, and it is measured from the…
-

Your pipeline has a dashboard, not tests
Software fails loudly. Data fails politely: the job succeeds, the dashboard renders, the numbers are wrong, and the first person to notice is someone making a…
-

Evals are a test suite, not a leaderboard
A single accuracy number tells you almost nothing about whether your change was safe to ship. What you need is the same thing every other engineering…
-

The authorization bugs your scanner will never find
SAST finds injection because injection has a shape. Broken object-level authorization has no shape, only a missing comparison. Here is why the tooling cannot see it…
-

Bisect first: find the change before you read the code
When a thing used to work and now doesn’t, the fastest path to the cause is almost never the code. It is the history. A disciplined…
