-
AV2's reference encoder
shipped 1.0.0 in May, and no browser decodes it yet. Built locally and scored against the AVIF this site ships, at matched bytes, it wins 28 of 38 whole-frame thumbnails by ssimulacra2 and loses all 32 calls on dense detail crops, and bits per pixel decides which. Per-segment quantization matrices, which AV1 has no syntax for, widen the win.
AOM's own report puts it 18 to 24% ahead with video metrics, and the page shows where each number comes from. It also catches a trap: behind a
<picture> source typed
image/avif, an AV2 file draws broken in Chrome and the fallback never loads. Your browser runs that test when the page opens.
-
In workerd,
node:zlib's zstd accepted a
dictionary option and dropped it. That's why the 13 pages this site's Worker still writes per request ship as plain brotli, while the other 53 arrive as shared-dictionary deltas. The fix is
cloudflare/workerd#7106, written here and waiting on review. Measured against production, a runtime delta would take 21.9% off those 13 pages for about 0.2 ms of CPU each. Each page sheds a near constant 1.3 KB, because what the delta removes is the shell. The page fetches itself a second time in your browser to show the gap. It also names what the fix can't reach, and weighs it against the baked-shell route the site took for two pages the same week.
shape: a runtime gap, its upstream fix, and what the fix is worth · added 2026-09-25
-
htmx shipped
4.0 and it is a real improvement on 2.x, so this site built it onto the one page whose shape it was designed for: the coffee booking form, two plain POSTs and a full-page reload. The wire-size diff says client assets go from 86.35 to 97.81 KiB Brotli for one new file, and the confirmation response drops 95%, from 4,187 Brotli bytes to 219. Those two numbers divide into a break-even at 2.96 submits per visitor, and a booking form is submitted once. Carries the arithmetic as a slider so you can find the region where htmx wins, plus the three reasons the rest of the site is a worse fit than the page that lost.
shape: a library priced per visitor · added 2026-08-28
-
A Worker config is data, so every binding name in it is a string nothing checks. Wrangler hides a flag that makes the config a TypeScript program, Cloudflare's cf CLI loads the same file without one, and both infer Env from it. Measured in August on wrangler 4.125.0 and again in October on 4.147.0: the upload is still byte-identical, a self-bound Durable Object still types as undefined, and a binding through a second Worker's definition now carries the class. The re-run also corrects an August claim, since wrangler types already wrote a variable's value into its type. With a three-pane explorer: toggle bindings, watch the config, the resolved JSON, and the inferred interface move together.
shape: a conversion, measured on both sides · added 2026-08-24 · re-measured 2026-10-05
-
Nineteen flags in one CLI are marked hidden, so they appear in no help output. Reading them is the easy part. The hard part is that an option a tool silently ignores and an option it honours give back the same exit code, so the ordinary check cannot separate them. Four cases from this site where that mattered: a closed payload schema that answers acceptance for free, a compression option
three runtimes disagree about in silence, a flag whose own source comment proves a limit lives on the server, and one that reads like a fix and is wired to a subsystem this site does not run. Ends on a control picker: name the shape of your doubt, get the experiment.
shape: an inventory + the controls that read it · added 2026-08-24
-
A user-agent string costs nothing to type and nothing verifies it. Sixteen identities fetched the same eleven sites, three times each: nytimes.com refused four documented crawler tokens and served the full paper to two names invented on the spot, theatlantic.com billed four of them 402, and en.wikipedia.org served curl while refusing six crawlers whose identity it could actually check. The strongest row runs the other way, with reddit.com serving a browser one word and a link-preview bot 1,640, which turns out to be a rendering path rather than a favour. Ends on
Web Bot Auth and the awkward fact that this site's own crawler signs and has never registered.
shape: crawler-identity survey + measurements · added 2026-08-21
-
A dyno tells you what an engine actually puts down. This one straps the site to the rollers every night: a GitHub Action builds main, weighs the worker bundle, all 46 pages and the client assets, and records a pull. The chart is the part no threshold check could draw. This worker went 86 → 129 → 204 → 262 KiB gzip and every one of those numbers got found by somebody tripping over a stale constant, because nothing was watching the slope. Server-rendered SVG, no client JavaScript, and the hand-entered prefix is drawn dashed so the page never passes a typed number off as a measured one.
shape: nightly wire-size trend + chart · added 2026-08-08
-
Nextane rebuilds the Next.js Pages Router on
Octane and ships 60.9% less client JavaScript than Next.js 16. The claim holds: the deployed demo measures 43,384 bytes gzip against a published 43.0 KiB. Every row of that benchmark is a framework though, so it fixes an order without ever fixing a zero. This page adds the missing row, measures where the homepage you came from actually sits, and argues about what the distance proves.
shape: benchmark re-measurement + baseline · added 2026-07-31
-
The edge was handing browsers
more bytes than its own second choice, and compressing at about a third of the effort brotli can reach offline. Fixing it took four rounds, three of them spent blaming the platform for a one-line bug in my own code (
encodeBody is write-only Response init, so rebuilding a response drops it silently). Ends at ~19% off the shell for every browser and 116 bytes for a returning Chromium visitor, via
RFC 9842 zstd shared-dictionary deltas. Keeps the wrong turns, since those transfer.
shape: measured teardown + shipped fix · added 2026-07-27
-
This site's TLS key agreement went post-quantum on its own; its signatures did not. What ML-DSA-44 and both SLH-DSA parameter sets actually cost on the one signature a personal site controls, measured on the real signature base through
@noble/post-quantum: header bytes, signing time, and why hash-based lost twice (22,784 bytes of header one way, 2.5 seconds per signature the other). Ships ML-DSA as a second
Signature-Input label, retires it 19 days later on CPU, then reprices it once workerd signs natively in 0.12ms.
shape: measurements + a shipped migration · added 2026-07-27
-
ismy.blue keeps asking where green becomes blue until it has your personal boundary. This does the same for image compression. Each call shows the same photo squeezed two or three ways; you pick the best on instinct, over and over, and it profiles what your eye is quietly tuned to. Every tile is a real encode (zenc, jpegli, mozjpeg, sips; honest 4:2:2 vs 4:2:0 on the 4:2:2-native Fuji files), scored offline by
ssimulacra2 and
butteraugli. The twist: the two metrics are rival models of human vision that disagree, so the end reads which one your eye sides with. Closes with an understanding check.
shape: blind A/B/C compression test + metric-alignment read · added 2026-07-21
-
The performance pass outlined with 5.6 Sol this morning, translated into the work that actually made it onto the lift: first-paint geometry, immutable photo bytes, a shared Luna sheet, explicit Worker boundaries, and deploy-time proof. The local workbench toggles between the three checks; the trace readout is honest about what is local and what still needs field data.
shape: performance field note + local workbench · added 2026-07-10
-
The
teardown's sequel. Fable 5 read every file in the repo and drew the rebuild drawing: the boutique tricks worth keeping (the two-key SWR quartet, the Temporal wall-clock discipline, the earn-it
will-change), the Pages-era scar tissue a Workers-native design would remove (denylist routing, SPA-fallback sniffs), and the consolidation sketch, before and after. Ends with the longer list: what a rewrite must never touch.
shape: architecture review + rebuild sketch · added 2026-07-01
-
The site's first build step, and the brotli rabbit hole that led there. Where Cloudflare actually compresses (edge quality vs q11, with the four roads to q11 that all closed), deploy-time minification with readable
/<name>.src.js twins (nav.js went ~33KB to 20.4KB on the wire; sw.js turned out to be 64% comments), whether the CSS deserves the same treatment (measured: brotli voted no), an
esbuild vs
Oxc head-to-head, and the Cache API layer that finally made
s-maxage true. With a live edge-cache prober.
shape: measurements + the build's reasoning · added 2026-07-01
-
Why this site left Cloudflare Pages for Workers with static assets: same bytes, but an atomic deploy and the whole config (bindings, routing, the Durable Object) as one checked-in wrangler.jsonc instead of dashboard clicks. What that opened up (edge-direct avif thumbnails, an in-house counter DO, cron in reach) with a live routing prober that reads production headers in your browser.
shape: platform migration + live prober · added 2026-07-01
-
iroh hit 1.0: you dial a machine by its public key rather than its IP address. I went looking for a way to use it here. The page has a native in-browser NodeId generator you can run, no library and no wasm, plus the honest reason a megabyte-class wasm blob, a Rust build step, and a relay do not belong on a lean static site. The garage rule: an experiment that would make every other page heavier does not ship.
shape: evaluation + native demo · added 2026-06-15
-
A multi-agent audit, eight finders sweeping in parallel with one adversarial verifier per finding, went over the whole site. Two things were actually broken: a live cache-poisoning hole serving homepage HTML at thumbnail URLs, and a popover fallback that stacked the
/writing notes in any browser without the Popover API. The rest made it feel faster. Every finding, with the code before and after, side by side.
shape: audit writeup · added 2026-06-11
-
CSS Grid Lanes lays columns on a grid and stacks the rows masonry-style, and it shipped in Safari 27. The homepage grid crops every photo to a 1:1 square, so this page tries
display: grid-lanes for a ragged-height contact sheet where portrait and landscape sit at their true heights, no JS. EXIF pins each photo's aspect ratio up front, so nothing reflows; a toggle A/Bs it against the squares, and browsers without Grid Lanes fall back to the squares.
shape: layout prototype · added 2026-06-09
-
WebKit's Safari 27 beta notes count ~58 new web features in macOS 27 Golden Gate. I pulled the "platform caught up" cut:
appearance: base-select going stable, transform-aware anchor positioning, scroll anchoring, the
:heading pseudo-class, and mapped each one to what this site already ships, with live per-browser support chips.
shape: platform tracker · added 2026-06-09
-
Durable Objects (an atomic counter), Workers AI (it captions a real grid photo), and Workers Logs (structured observability): one live demo each, behind a tiny worker at /garage/cf/*. The free Workers plan quietly bundles them; all three work the moment you click. A fourth, Browser Rendering, is wired but parked on the free tier's 10-min/day cap.
shape: platform-feature demos · added 2026-06-06
-
A one pixel checkerboard reduces to sRGB 188, and
sips, ffmpeg, the Rust
image crate,
fast_image_resize and your browser's own canvas all say 128. Their kernels agree with each other to seven decimal places, so what is left is the colour space they average in, a defect
documented in 2007 that the defaults outlived. Runs the measurement in your browser, strips the resampler to the fifteen lines that carry the idea, and lists the five other defects that survived measurement because the instrument agreed with them.
shape: a defect, its controls, and what the correct version costs · added 2026-08-26
-
ig-prep does the destructive work before the upload, so the platform arrives with nothing left to resample: a portrait cropped to 4:5 loses height only, so a frame delivered at the target width is already the right width after any crop dragged in the app. Why no decoder is trusted about rotation when a HEIF states it twice, what 4:4:4 chroma costs on an upload nobody sees, and an
MCP mode that lets a model convert photographs that never leave the machine they are on.
shape: a tool, its measurements, and the three constants still guessed · added 2026-08-24
-
jpegli and
zenjpeg both promise real JPEG wins over the system encoder, so one photo went through every thumbnail choice (AVIF / WebP / JPEG, chroma subsampling, quality, resolution) with real byte counts. Why the pipeline built
cjpegli from source for ~47% smaller JPEGs at the same quality, how zenjpeg's hybrid trellis then beat it by another ~4% at matched size and took over, why grayscale drops to 4:0:0, and what the grid actually ships.
shape: encoder benchmark + the pipeline's reasoning · added 2026-06-06
-
chenglou/pretext measures multiline text with the canvas as ground truth instead of the DOM, so asking "how tall at 320px?" never forces a reflow. A from-scratch re-creation of the technique (drag-to-rewrap, plus a 2,000-re-layout race vs
offsetHeight), where it'd help the site, and why it's "watching" not "shipped."
shape: technique study + benchmark · added 2026-06-01
-
mkit names every chunk of a file by its content hash, so a sync ships only what changed. That is the quiet engine under the photo grid too, made visible here: FastCDC content-defined chunking + content-addressing, live in the browser (pure JS +
crypto.subtle). Snapshot a file, edit a byte, and watch fixed-size chunks re-send the whole thing while content-defined chunks barely flinch, plus a drop-a-file dedup demo.
shape: interactive systems demo · added 2026-06-01
-
Scroll-driven animations hand CSS a timeline made of scroll position, with no listener anywhere. Here they are in a period-correct Luna idiom: the green file-copy progress bar that fills as you scroll, windows that maximize-open as they enter the viewport, and the blue gradient scrollbar. All
animation-timeline, no scroll listeners, reduced-motion respected.
shape: visual + interaction · added 2026-05-29
-
Test-driving features before they touch the homepage: text-box-trim for optical centering, contrast-color() for the OKLCH palette, and interestfor + anchor positioning as the someday-native tooltip. Live support chips per browser, honest cross-engine status, what each would replace. Nothing ships until it's in more than one engine.
shape: capability dashboard · added 2026-05-29
-
Cursor-following tooltips for the photo grid and tracklist. The XP-skinned camera readout shipped on photo hover and the album cover-at-cursor on track hover; CSS anchor-positioning shipped too, as the keyboard-focus path. Also here: the Fuji LCD variant it beat, a polaroid flip that didn't survive review, and a Luna balloon still in the wings. Built on the
Popover API,
@starting-style, and two custom-property writes per move. No rAF, no layout reads.
shape: visual + interaction · added 2026-05-22