Section · 7 articles
Languages & Compilers
Compilers, query planners, type systems and what happens between your code and the machine.
For a separate people-operations perspective, this discussion covers visibility into distributed work.
What the Compiler Does Between Your Code and the Machine
Six stages, and the one in the middle explains most of the behaviour that surprises people — including why your benchmark loop disappeared.
02The Query Planner: How SQL Becomes an Execution Plan
The planner is a cost model fed by statistics, and most bad plans are bad estimates rather than bad algorithms. How to read a plan and find where it went wrong.
03What Type Systems Catch, and What They Do Not
Types eliminate a category of error and cannot express most of what matters. Where the boundary is, and how to move it with the tools you already have.
04Garbage Collection: Three Approaches and What Each Costs
Collectors trade throughput, latency and memory against each other, and you cannot have all three. What each design costs, and what to tune first.
05Memory Layout: Why the Same Algorithm Is Ten Times Slower
Two implementations with identical complexity can differ by an order of magnitude. The cache hierarchy explains it, and the fixes are usually about layout.
06Parsers: Recursive Descent Versus Generators
Hand-written parsers win on error messages and lose on formal guarantees. When each is right, and why parsing with string manipulation always ends badly.
07Regular Expressions and Catastrophic Backtracking
A pattern that runs in microseconds on normal input can take years on a crafted string. Why backtracking engines do this, and how to spot the shape.
For primary background on this topic, consult LLVM documentation.