Writing
Long-form explainers and shorter notes— tech insights, performance, accessibility, product craft, AI-assisted development, and more.
- Latest
- Cursor
- Developer experience
- AI tooling
Subagents let Agent delegate heavy or parallel work to focused assistants—each with a clean context—so exploration, shell output, and browser noise do not bloat your main chat. Here is how they work, when to use them instead of skills, and how to add your own.

- Next.js
- Performance
- CSS
An experimental next.config flag puts your CSS in a style tag in the head instead of separate link requests—good for first paint on slow networks and small atomic CSS, less ideal for repeat visitors and huge style bundles. Here is the trade-off in plain language.
- React
- Learn React
- JavaScript
State can feel like a normal variable, but each render gets a frozen picture of it. Here is why setState triggers new renders, why triple setNumber(number + 1) often only adds one, and why alerts and timeouts still “see” the old value—in plain English.
- Cursor
- Developer experience
- AI tooling
Hooks are small programs Cursor spawns around Agent and Tab—JSON in, JSON out—so you can format edits, audit tool use, block risky shell commands, or inject context. Here is the mental model, where configuration lives, and what to read next in the official docs.
- Web platform
- Security
SharedArrayBuffer, fine-grained memory measurement, and high-resolution timers sit behind a safety gate. Here is how Spectre, COEP, and COOP fit together—and what to send on the wire.
- AI
- GPU
- Hardware
Why graphics processors became the engine of modern AI—from silicon to parallelism—and how they accelerate both training and inference.
- Performance
- Lighthouse
Speed Index captures how fast your page becomes visually useful—not just when the network goes quiet. Here is how Lighthouse computes it, how to read the score, and what usually moves it.