// writing
Posts on development — Page 3
A mix of technical deep-dives, career reflections, and dispatches from the road.

developmentJul 6, 2026· 4 min
URLPattern: The Browser Finally Has a Built-In Router
URLPattern went Baseline in late 2025, giving the platform a native, framework-free way to match and parse URLs. Here is how it works and where it earns its place.
read more →

developmentJul 5, 2026· 4 min
CSS Grid Lanes: Native Masonry Has Finally Landed
Masonry layout is coming to CSS as grid-lanes, and Safari shipped it first. Here's how the new display value works, why it beats the JavaScript libraries, and what it fixes for keyboard users.
read more →

developmentJul 2, 2026· 4 min
Invoker Commands: Wiring Buttons to Dialogs and Popovers Without JavaScript
The Invoker Commands API lets a button declare what it controls with command and commandfor, replacing modal and popover glue code with plain HTML.
read more →

developmentJul 2, 2026· 4 min
CSS field-sizing: Auto-Growing Textareas Without a Line of JavaScript
The auto-growing textarea has been a JavaScript rite of passage for years. A single CSS declaration now does the whole job, and it works on inputs and selects too.
read more →

developmentJul 1, 2026· 4 min
Fallow: A Codebase Truth Layer for Agent-Written Code
Fallow is a Rust-native tool that maps your whole TS/JS codebase to catch dead code, duplication, and architecture drift. Here's how it fits alongside ESLint, Prettier, and agent guidelines when you're reviewing PRs you didn't write.
read more →

developmentJun 29, 2026· 4 min
Building a Claude Code Status Line With Usage Bars and a Clickable Repo
A walkthrough of a custom Claude Code status line that renders context and rate-limit usage as colored bars and turns your repo name into a clickable link.
read more →

developmentJun 29, 2026· 4 min
The Navigation API: Stop Wrestling with history.pushState
The Navigation API hit Baseline in early 2026, giving SPAs a single, purpose-built place to intercept and manage routing. Here's why it finally replaces the History API.
read more →

developmentJun 28, 2026· 4 min
Grimicorn Neon: When a Calm Theme Goes Loud
The high-voltage variant of Grimicorn keeps every semantic role and swaps in eight electric hexes. Here's what changes, what doesn't, and the contrast tradeoff that makes neon-on-black a deliberate choice.
read more →

developmentJun 28, 2026· 4 min
scheduler.yield(): The One-Liner That Fixes Your INP
A practical look at scheduler.yield(), the browser API that breaks up long tasks and keeps the main thread responsive without the setTimeout penalty.
read more →
// the newsletter