Notebook · Jul 2025 to now

An engineering notebook. Whatever's on the workbench.

Fifteen years across production engineering, written down as it happens.

In the notebook

All posts → /blog
  • Series · 5 parts

    Tail Latency & System Behavior

    Runnable Java experiments on the failure patterns that show up under real load: tail latency, queueing, hedged requests, coordinated omission, backpressure, and SLO engineering. Deterministic outputs, checked-in CSVs, reproducible on any machine.

    • 05
      Part
      Backpressure Design Patterns

      A deterministic Java comparison of five admission strategies under identical 2x overload. Reject-fast policies (token bucket, rate limiter) hold p99 at 10ms; a bounded queue accepts fewer requests at a 500ms p99, because under sustained overload a buffer is the worst of both.

      28 Jun 2026
      7 min
    • 04
      Part
      The Coordinated Omission Problem

      A deterministic Java measurement harness where a closed-loop benchmark reports a whole-run p99 of 10ms for a service that froze for 500ms, while open-loop scheduling and HdrHistogram's coordinated-omission correction both report 460ms from the same samples.

      21 Jun 2026
      6 min
    • 03
      Part
      Hedged Requests & Speculative Execution

      A deterministic Java hedging simulation where a p95 threshold cuts p99 from 200ms to 43ms for 3.7% extra load, while a p99 threshold improves nothing and burns the most wasted work. Hedging is a latency technique you buy with capacity.

      14 Jun 2026
      7 min
  • Series · 9 parts

    Structured Concurrency

    Nine posts written through a fan-out service rollout. Cancellation, timeouts, and what to do when a subtask outlives the request.

    • 09
      Part
      Migrating our fan-out service from Java 21 to Java 25

      Most of the migration was mechanical. ShutdownOnFailure became a Joiner, throwIfFailed disappeared, and StructuredTaskScope.open replaced the constructor. Two things were not mechanical, and those are the ones worth reading.

      17 May 2026
      12 min
    • 08
      Part
      Four operational checks we run on every StructuredTaskScope

      Before a fan-out service can be trusted under load, four things need to be true: outcomes counted per scope, deadlines propagated, bulkheads in place, and pinning watched in JFR. What each one looks like in code.

      10 May 2026
      10 min
    • 07
      Part
      Three structured-concurrency patterns we run in a fan-out service

      Structured concurrency patterns are worth the complexity only when the cancellation policy is decided before the first fork, not after the first timeout. The three we run: aggregation on quorum, bulkheading per tenant, and a deadline shape that protects against one slow upstream.

      04 May 2026
      8 min
  • Series · 9 parts

    Project Loom

    Expert guide to Java's Project Loom. Learn virtual threads, structured concurrency, and scoped values to build highly scalable, efficient Java applications. Complete tutorials and best practices.

    • 09
      Part
      Migrating Project Loom Code from Java 21 to Java 25

      The Loom migration from Java 21 to Java 25 is one real change plus two cleanups: Joiner-based scopes replace ShutdownOnFailure, scoped values lose the preview flag, and virtual threads stay exactly where you left them.

      31 Aug 2025
      16 min
    • 08
      Part
      Future Directions and Migration Planning

      Loom roadmap planning is mostly a timing problem: adopting preview features too early and waiting until they settle both ship nothing in the end.

      24 Aug 2025
      15 min
    • 07
      Part
      Production Readiness, Monitoring, and Debugging

      Most thread-pool dashboards go quiet once a service moves to virtual threads, because a small carrier count hides millions of virtual threads and high CPU usually means pinning, not business load.

      17 Aug 2025
      14 min

Read alongside

Ask the post.

Built with one rule: it won’t answer unless it can show you the paragraph.

Open on a post