Blog

tagshift: from <template> to a component

A small library that turns a plain <template> into a class: ${props} placeholders in text and attributes, slots that follow the Shadow DOM rules, and a render() that updates the same element in place. No dependencies, no build step, no virtual DOM.

Passkeys: a seal instead of a password

How passkeys work, and why a phishing page has nothing to sign. Registration and sign-in step by step, plus a working minimum on SimpleWebAuthn: four endpoints on the server, autofill in the browser, and a passkey either instead of a password or as the step after it.

The request ended, the connection didn't

`rack.hijack` looks like a way to do streaming. It's really a way out of the Rack contract: the application takes the socket, and with it all the bookkeeping the server was doing on its behalf. Two kinds of hijack, and only one of them frees a thread.

How a folder of SVGs becomes a font

icofon takes a folder of SVGs and builds an icon font, a stylesheet and a preview page. What happens to a drawing on its way from SVG to glyph, where the tool runs into the limits of the format, and why codepoints can't be handed out fresh on every build.

The Theory of Constraints

Lifting a constraint costs almost nothing; adding one after the fact is expensive — first an investigation, then a placeholder that outlives everyone. On starting narrow and widening on demand.