Engineering

Technical writing on software engineering, programming languages, distributed systems, and building reliable software.

TIL: HTTP/3 Is Not Always Faster Than HTTP/2

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.

Your Best Thinking Is Wasted on the Wrong Decisions

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.

Hi, Barbie! Higher kinded records made easy(er)

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\

One Serialization Class to Rule Them All

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.

OpenTelemetry Gotchas– Phantom Spans

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.

Using React with GHCJS

Early explorations in data-driven Haskell applications in the browser.