Archived from Informatikr (originally published January 18, 2012). Describes how the Haskell Redis client Hedis achieves automatic and optimal pipelining by combining lazy I/O with a synchronous-looking API, getting the best of both synchronous and asynchronous approaches.
Local benchmarks revealed HTTP/3 can be 50-100x slower than HTTP/2. QUIC's userspace implementation loses to decades of kernel TCP optimizations on high-bandwidth, low-latency networks.
Type systems verify properties of programs. Production correctness is a property of systems. The gap between these is where the interesting failures live.
Some engineering decisions punish you for being wrong. Most don't. Learning to tell the difference and calibrate your deliberation accordingly might be the most valuable skill your team never explicitly develops.
The control plane pattern (a coordinator that tells workers what to do) shows up everywhere good infrastructure exists. The concept is simple. Naming it is useful.
A comprehensive guide to CRDTs and their tradeoffs, from counters to sequences. Written in the spirit of the Typeclassopedia, exploring how different CRDTs solve the distributed consensus puzzle.
An accessible guide to understanding the confusing terminology around JSON Schema. What are schemas, dialects, vocabularies, and metaschemas, and how do they all fit together?
An exploration of how institutional decisions and systemic policies can cause widespread harm with less accountability than direct violence, examining cases from healthcare to education where bureaucratic choices have life-altering consequences despite being treated as mere business decisions.
We often need to make and manipulate derived types that are similar to each other, but not quite the same. Higher-kinded records provide a way to do this in a generic way, but are clunky. We\
A lot of the Rust <-> Haskell interop examples out there are for small, synchronous libraries. They also tend to omit how to actually package the Rust library. We\
Typical serialization libraries in the Haskell ecosystem target a single format. We explore how to provide composite serialization for data types that chooses the best format for each data type.
We struggled for several months with a mysterious tracing issue in our production environment. Unrelated web requests were being linked together in the same trace, but we could never see the root trace span. This is the story of how we found and fixed root cause.