When a WebSocket Outlives Its Token

After the 101 response, no request carries credentials: the server remembers a verdict, not the evidence. This article follows one token through a browser handshake, shows what a page can and cannot see, and compares three ways to renew it (reconnect, in-band, out-of-band) with a runnable server, tests, and a headless-Chrome check.

August 21, 2026 | 20 min

Replace Polling with Change Subscriptions, and Keep the Poll as the Fallback

How a mobile client moved from timer-driven polling to shared change subscriptions over a per-message-billed relay. The subtle part is not the stream. It is deciding honestly when the fallback poll may stand down.

August 20, 2026 | 10 min

Batching and Bounded Frames on a Metered Relay

When every WebSocket message costs money and every frame has a hard cap, you need batching with independent flush triggers, a single-frame threshold below the cap, bounded chunking, and capability flags that survive mixed-version rollouts. The sharp edges are ordering on shutdown and a zero value that disappears from the wire.

August 19, 2026 | 12 min

Liveness Without Pings, and Idle Sleep

A fixed-interval keepalive costs a message in each direction even when the connection is busy. Treating every inbound frame as proof of life, probing only quiet connections, and letting an existing heartbeat tell an idle host when to disconnect removes most of that traffic, at the price of a bounded wake-up delay.

August 18, 2026 | 9 min

When the Close Event Never Comes

A client that waits for its own socket’s close event before cleaning up can stall silently when that event never arrives. Settle your state when you decide to end the connection, make the cleanup idempotent, and keep the event for closes you did not start.

August 17, 2026 | 8 min

Separate the Live Document from the Saved Copy

Designing collaborative document editing with conflict-free synchronization, saved snapshots, and safeguards against overwriting content before initial sync.

August 13, 2026 | 12 min

One Open Admission While a Start Is Unfinished

Controlling distributed task starts with one unfinished admission per workspace surface, a fixed destination, and idempotent retries during machine outages.

August 12, 2026 | 13 min

Separate Authentication from What an Actor May Do

Designing API authentication and role-based authorization with actors, route permissions, and separate credentials for people and machines.

August 11, 2026 | 14 min

Do Not Load the Whole Past into the Model

Designing AI agent memory with retrieved context, durable task records, and evidence-based create or update decisions that tolerate search index lag.

August 6, 2026 | 11 min

A Transcript Is Not a Task List

Designing a meeting AI pipeline with separate transcription, summarization, and task extraction, preserving evidence and resolving deadlines from meeting time.

August 4, 2026 | 11 min