index / essays · 31 entries

Essays

Longer-form, opinionated writing across engineering, personal reflections, and cooking.

2026

  1. What's in the Box? A Field Guide to AI Models

    A beginner-friendly tour of parameters, quantization, MoE, context windows, and other LLM jargon.

    engineering stable
  2. Stealing from Biologists to Compile Haskell Faster

    The trick that makes GHC’s ApplicativeDo optimization faster is structurally identical to how biologists predict RNA folding.

    engineering stable
  3. Making Haskell Talk to PostgreSQL Without Suffering

    How to eliminate the three performance taxes that make database queries slow: encoding overhead, round-trip latency, and N+1 query patterns.

    engineering stable
  4. Archive: Automatic Optimal Pipelining of Redis Commands

    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.

    engineering stable
  5. 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.

    engineering stable
  6. What Functional Programmers Get Wrong About Systems

    Type systems verify properties of programs. Production correctness is a property of systems. The gap between these is where the interesting failures live.

    engineering stable
  7. In Praise of Control Planes, or: Why You Need a Place to Stand

    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.

    engineering stable
  8. 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.

    engineering stable
  9. No, Really, Bash Is Not Enough: Why Large-Scale CI Needs an Orchestrator

    A deeper dive into why shell scripts cannot replace a proper CI control plane, drawn from years of building and operating CI systems at scale.

    engineering stable
  10. GitHub Actions Is Slowly Killing Your Engineering Team

    Why GitHub Actions is the Internet Explorer of CI, and why Buildkite offers a better path forward for teams that care about developer experience.

    engineering stable

2025

  1. Punycode: My New Favorite Algorithm

    A deep dive into how Punycode works, and why I think it's so neat.

    engineering stable
  2. The CRDT Dictionary: A Field Guide to Conflict-Free Replicated Data Types

    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.

    engineering stable
  3. JSON Schema Demystified: Understanding Schemas, Dialects, Vocabularies, and Metaschemas

    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?

    engineering stable
  4. Event Design for Streaming Systems: A Primer

    How to use event streams in an effective, scalable, future-proof way.

    engineering stable
  5. Accidental or Essential? Understanding Complexity in Software Design

    Understanding the difference between essential and accidental complexity in software design.

    engineering stable
  6. What You Need to Know About Trump\

    A look at the Trump administration\

    personal stable
  7. Actuarial Murder and Other Diffuse Acts of Violence

    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.

    personal stable
  8. The Cadence of Salting

    When you salt matters as much as how much you salt. Understanding the timing changes everything.

    cooking provisional

2024

  1. Embracing Flexibility in Haskell Libraries: The Power of Records of Functions

    Improve the robustness and flexibility of your Haskell apps by changing how you design your libraries.

    engineering stable
  2. 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\

    engineering stable

2023

  1. Haskell Best Practices– Wildcards aren\

    An argument for using really exhaustive pattern matching.

    engineering stable
  2. There and Back Again: Turning Haskell functions into RPC calls- Part 2

    In the last post, we figured out an interface for the RPC caller to invoke remote Haskell functions. In this post, we\

    engineering stable
  3. There and Back Again: Turning Haskell functions into RPC calls- Part 1

    In

    engineering stable
  4. Integrating a large Tokio-based Rust library with Haskell

    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\

    engineering stable
  5. 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.

    engineering stable
  6. 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.

    engineering stable
  7. The Cruel Part Is

    A poem

    personal stable
  8. Vignettes

    A collection of memories

    personal stable

2021

  1. Garbage in, Never out

    Adventures in streaming algorithms.

    personal stable

2014

  1. Using React with GHCJS

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

    engineering stable
  2. Introducing Growler, a simple HTTP server toolkit

    Sinatra-esque Haskell web apps.

    engineering stable