Category

Web Performance

Performance engineering for the modern web: Core Web Vitals, asset pipelines, caching strategies, and frontend optimization.

9 posts in this category.

A self-contained steampunk brass inspection machine in a dimly-lit workshop, scrolls of data feeding through an internal mechanism of gears and calibrated gauges that stamps each scroll with an emerald verification seal, all mechanisms internal with no external wires or cables leading outside the machine, amber furnace glow from within, reflective wet stone floor with faintly glowing circuit-pattern grouting in teal and amber, atmospheric purple fog filling the background, cinematic shallow depth of field, moody editorial composition, no text, no people
Signal vs Noise Developer Experience (DX) Web Performance Static Architecture

You Don't Need a Form Library

HTML5 has had client-side validation for over a decade. :user-invalid, setCustomValidity(), and the novalidate pattern cover 95% of what React Hook Form does — and the last CSS gap closed in late 2023.

A towering brass and copper steampunk lighthouse on a dark rocky promontory at night, its rotating beam a focused shaft of teal neon sweeping across a procession of small mechanical clockwork ships approaching through purple fog, a heavy gear-driven gate-arm lowered across the narrow channel to block one ship while a glowing green signal lamp waves another through, the lighthouse self-contained and powered by its own visible furnace of amber gears with no cables or wires running off to the distant dim shore, reflective wet stone and black water below catching the neon reflections, cinematic shallow depth of field, moody editorial composition, no text, no people
DevOps Web Performance Automation Signal vs Noise

Lighthouse CI Without a SaaS

Performance-monitoring SaaS sells you a wrapper around a tool you already have. GitHub Actions and Lighthouse CI fail the build on regressions for free.

A vast dark steampunk type foundry at night, a single self-contained brass workshop in the foreground glowing with its own amber furnace and rows of movable-type cases being assembled into a clockwork printing press, severed copper data pipelines hanging loose where they used to stretch out toward a distant cathedral-sized brass font factory receding into atmospheric purple fog, the distant factory now dim and unplugged, the local workshop's furnace humming and casting warm reflections across a reflective wet stone floor with circuit-pattern grouting glowing faintly teal and amber, cinematic shallow depth of field, moody editorial composition, no text, no people
Signal vs Noise Web Performance Developer Experience (DX)

Stop Loading Google Fonts

Google Fonts is a tracker that happens to also serve fonts. Self-hosting is faster, more private, and a one-afternoon migration in 2026.

A vast dark steampunk surveillance chamber at night, towering brass observation racks holding hundreds of glass camera-eye lenses receding into atmospheric purple fog, most of the lenses now dim and dark with only a few still flickering faint teal; in the foreground a single solid copper workbench under a fading amber lamp where a heavy brass lever has been pulled all the way down to the OFF position, severed copper data cables hanging loose and unplugged from a tarnished switchboard, a small pile of inert glass eyes set aside beside the lever, reflective wet stone floor with circuit-pattern grouting glowing only faintly amber, cinematic shallow depth of field, moody editorial composition, no text, no people
Signal vs Noise Web Performance Developer Experience (DX)

Why I Deleted Google Analytics

Google Analytics is slow, GDPR-hostile, undercounted by ad blockers, and answering questions you mostly aren't asking. Here's why I removed it from every site I run, and what I use instead.

A vast dark steampunk warehouse filled with rows of towering brass shelving units, each shelf holding hundreds of glowing glass jars connected by tangled copper wiring; in the foreground a single workbench under a hanging amber lamp where a brass-handled magnifying lens hovers over an open ledger, with several jars set aside in a small crate marked for removal, the rest of the warehouse fading into atmospheric fog and neon teal accent lighting along the floor tracks, cinematic shallow depth of field, moody editorial composition, no text, no people
Node.js Developer Experience (DX) Web Performance Signal vs Noise

The Dependency-Count Audit: Every Package Is a Bet, Not a Free Tool

Most JS projects have never had their dependency list audited line by line. Doing it once — with a real method instead of vibes — usually halves the count and exposes which packages were doing nothing in the first place.

A vast steampunk type foundry with two opposing chambers — on the left, blocks of code being cast in glowing molten brass at a single calm forge with neon teal flames, finished pages stacked in orderly piles; on the right, a chaotic backroom of frantic clockwork typesetters scrambling to assemble identical pages by hand under harsh amber gaslight, brass gears and copper pipes throughout, atmospheric fog, dark industrial lighting, no text, no people
Developer Experience (DX) Static Architecture Web Performance Web Architecture

Code Highlighting at Build Time: Shiki vs Prism and the Death of Runtime Tokenizers

Shipping a tokenizer to the browser to color code blocks made sense in 2014. It doesn't now. Build-time highlighting is faster, cheaper, and produces better-looking output — and the tradeoffs are smaller than you think.

A vast brass observatory hall plunged in darkness, with a single mechanical lens flipping a glowing teal day-sigil to a deep purple night-sigil mid-rotation, copper pipework channeling the change instantly across rows of identical static windows, no flicker between them, dark steampunk theme engine
Static Architecture Web Performance Developer Experience (DX) Signal vs Noise

Dark Mode Without the Flash

The white-flash-on-load that ruins half the dark-mode implementations on the web is preventable in about twelve lines of code. CSS variables, a render-blocking script, and one localStorage read — that's the whole trick.

A vast brass darkroom filled with framed glowing rectangles being stamped into existence by clockwork arms, neon copper light pouring through translucent stencils, dark steampunk image foundry
Next.js Static Architecture Web Performance

OpenGraph Images at Build Time: Why Static Sites Win Social Cards

Generating social card images on demand from a serverless function feels modern. It's also slow, expensive, and fragile. Static sites can pre-render every OG image at build time, cache it forever, and never pay for it again.

A shattered speedometer pinned at 100, surrounded by floating performance metric icons on a dark purple background
Signal vs Noise Web Performance Web Architecture

Your Lighthouse Score Is a Lie

A perfect 100 in Lighthouse means your test environment is fast. It says almost nothing about whether real users on real networks are having a fast experience.