Home/Writings/Systems Design

The Hidden Cost of Abstractions

Why every layer leaks eventually, and why backend engineers should care.

Figure 1A working loop for technical inquiry: observe the system, reason about its constraints, and build to test the model.

Abstractions are how we build systems larger than one person can hold in memory. They compress detail, name a useful interface, and let teams move without re-solving the same problem every day.

The cost is that compressed detail still exists. Network calls fail differently from local function calls. ORMs do not erase query plans. Container limits do not remove memory pressure. A queue does not make work disappear; it changes where waiting happens.

Good engineering is not anti-abstraction. It is abstraction with an escape hatch, a mental model underneath it, and enough instrumentation to notice when the layer below starts speaking through the one above.

Continue reading
Engineering · 7 min read

Observability vs Logging

Why logs are useful, but not enough to understand a running system.

Read note
Distributed Systems · 8 min read

Emergence in Complex Systems

Why distributed behavior can surprise you even when every local rule is simple.

Read note
Programming · 8 min read

Why Rust for Systems

A practical note on why Rust changes the shape of low-level engineering work.

Read note