← Kyle Cho

Notes.

Notes from building and operating production systems: Node.js under load, GraphQL platforms, autoscaling, and the real-time collaboration running on them.

August 2026 · Kubernetes, Node.js

half idle, fully busy.

A Node pod saturated at 100% event-loop utilization reads 49% CPU, so the autoscaler never fires. What to scale on instead, and two fleets you can watch disagree.

August 2026 · React, performance

not everything belongs in state.

A drag handle that updates React state on every pointermove re-renders the layout at input speed. Three tiers of state, and a side-by-side divider you can drag.

July 2026 · Real-time, data structures

no one has to agree.

How two people can edit the same document with no server deciding the order. Operational transform, CRDTs, and a live two-replica demo you can type into.

July 2026 · Real-time, networks

smoothness is latency.

Why remote cursors feel broken, and the ~100ms of deliberate delay that fixes them. Includes a playground that runs your own cursor through a simulated network.

July 2026 · Node.js, GraphQL

await isn’t free.

Awaiting cached DataLoader hits looks harmless in code review. Under load, the microtask hops, promise allocation, and graphql-js’s async path add up.