Skip to content
// writing

Posts tagged #tooling

A mix of technical deep-dives, career reflections, and dispatches from the road.

Svelte Error Boundaries: Contain the Crash Instead of Losing the Page thumbnail
developmentOct 15, 2026· 4 min
Svelte Error Boundaries: Contain the Crash Instead of Losing the Page
One flaky widget shouldn't blank your whole app. Here's how Svelte's boundary element walls off failures, shows loading UI for await, and now works during server rendering too.
read more →
Dependency Cooldowns: Make Your Package Manager Wait Before It Trusts New Code thumbnail
developmentOct 12, 2026· 4 min
Dependency Cooldowns: Make Your Package Manager Wait Before It Trusts New Code
npm, pnpm, Yarn, and Bun can all refuse package versions that are only hours old. Here's how each one's release-age gate works, why the units don't match, and where it bites in CI.
read more →
Your tsconfig Is Still Written for TypeScript 5. Here's the Cleanup TS 7 Forces thumbnail
developmentOct 1, 2026· 4 min
Your tsconfig Is Still Written for TypeScript 5. Here's the Cleanup TS 7 Forces
TypeScript 6 flipped half a dozen compiler defaults and TypeScript 7 deleted the options it deprecated. Here's the tsconfig audit that gets you onto the native compiler without a wall of red.
read more →
Node.js Type Stripping: Run TypeScript Without a Build Step thumbnail
developmentSep 28, 2026· 3 min
Node.js Type Stripping: Run TypeScript Without a Build Step
Node.js now runs .ts files out of the box by erasing types, not compiling them. Here's what that buys you, what it refuses to do, and the tsconfig that keeps you honest.
read more →
Compression Dictionaries: Ship Only the Diff When Your Bundle Changes thumbnail
developmentSep 27, 2026· 4 min
Compression Dictionaries: Ship Only the Diff When Your Bundle Changes
Compression Dictionary Transport (RFC 9842) lets the browser tell your server which cached file it already has, so a redeployed bundle can arrive as a few-kilobyte delta instead of a full download.
read more →
import defer: Lazy Modules Without Going Async thumbnail
developmentSep 21, 2026· 3 min
import defer: Lazy Modules Without Going Async
ES2026's import defer evaluates a module the first time you touch its namespace, not at startup, so you can move heavy work off the cold path without turning half your call stack async.
read more →
Turbopack's Persistent Build Cache Only Helps If Your CI Keeps It thumbnail
developmentSep 20, 2026· 4 min
Turbopack's Persistent Build Cache Only Helps If Your CI Keeps It
Next.js 16.3 turned on Turbopack's persistent build cache by default and published numbers as high as 5.5x. Most CI pipelines will see exactly zero of that, because the cache is a directory and containers start empty.
read more →
GraphQL @oneOf: Exactly One Input, Enforced by the Schema thumbnail
developmentSep 13, 2026· 3 min
GraphQL @oneOf: Exactly One Input, Enforced by the Schema
OneOf Input Objects landed in the September 2025 GraphQL spec, which means the exactly-one-of-these-arguments rule you've been enforcing in resolver code is…
read more →
node --test: The Test Runner You Already Have Installed thumbnail
developmentSep 10, 2026· 3 min
node --test: The Test Runner You Already Have Installed
Node's built-in test runner has been stable since v20 and now handles mocking, coverage, watch mode, and TypeScript files.
read more →
Trusted Types Is Baseline: DOM XSS Is Now a Type Error thumbnail
developmentAug 10, 2026· 3 min
Trusted Types Is Baseline: DOM XSS Is Now a Type Error
Firefox 148 shipped Trusted Types in February 2026, making it Baseline. Here's how to turn every dangerous innerHTML assignment in your app into a TypeError…
read more →
// the newsletter
Don't miss the next one