---
title: "aadhar.sh/garage"
description: "Prototypes, experiments, and work-in-progress for aadhar.sh. Stuff that hasn't made it to the homepage yet, or won't."
path: "/garage"
section: "garage"
kind: "section"
updated: "2026-06-07"
source: "https://aadhar.sh/garage"
---

> Site index: https://aadhar.sh/llms.txt
> Section index: https://aadhar.sh/garage/llms.txt
> This is the Markdown twin of a page on aadhar.sh. The HTML at the source
> URL below is the original, and is hand-written and unminified on purpose.

# Garage

Development mules for [aadhar.sh](https://aadhar.sh/): deliberately rough rigs where I run a tool or an idea under real load before any of it touches the production car. Some graduate to the homepage, some get scrapped (and stay parked here as data points), some still sit on the dyno. Most run live, so poke around. And as of July 2026 every mule ends with an **understanding check**: a few questions before you close the hood, because a demo you poked is easy to mistake for a mechanism you understood. The idea is [Geoffrey Litt’s](https://www.geoffreylitt.com/2026/07/02/understanding-is-the-new-bottleneck).

Carmakers learn the good cars on mules first: McLaren developed the [F1](https://en.wikipedia.org/wiki/McLaren_F1) in two Ultima kit cars nicknamed *Albert* and *Edward*; the mid-engine Corvette hid its chassis under the bones of a Holden HSV ute (and came out better-looking than the real C8). A few more in the hall of fame below. Same spirit here, fewer cones.

![Gordon Murray Automotive T.50 development mule, an Ultima GTR nicknamed George](https://aadhar.sh/cars/t50-mule.jpg?v=1)

GMA developed the T.50, the F1's spiritual heir, in Ultima GTR mules, this one nicknamed *George*. (Murray ran the same play on the F1: *Albert* & *Edward*.) Photo [Calreyn88](https://commons.wikimedia.org/wiki/File:Ultima_GTR_T50_Test_Mule_George.jpg), [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).

![Saab 99 test mule the Paddan, beside a regular Saab 96](https://aadhar.sh/cars/saab-paddan.jpg?v=1)

Saab's 99 mule, the *Paddan* ("toad"): Saab grafted the new car's body onto a 96 (right) so it could test on public roads without tipping the design. Photo [Jelger Groeneveld](https://commons.wikimedia.org/wiki/File:Saab_Paddan_and_regular_Saab_96.jpg), [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/).

The mule hall of fame: nine that hid in plain sight

1. **HSV 'Corvette'**: the mid-engine C8's chassis wrapped in the bones of a Holden HSV ute. Accidentally better-looking than the real C8.
2. **McLaren F1, 'Albert' & 'Edward'**: two Ultima kit cars. Albert ran a Chevy V8 to mimic the BMW V12's torque, Edward bedded in the real V12. Both crushed afterward. Murray rebooted the trick for the T.50, an Ultima called *George*.
3. **Lotus Esprit '458'**: Lotus reportedly bolted its homegrown V8 into a salvaged Ferrari 458 and prowled Norfolk in it, until the company canned the project.
4. **Ferrari 348 'Enzo'**: a 348 stretched 250mm to swallow the Enzo's 6.5-litre V12. A proper Franken-rarri.
5. **Rolls-Royce Phantom 'high-rider'**: Rolls honed the Cullinan SUV inside a jacked-up, shortened Phantom, a rear wing loading the suspension to dial in spring and damper rates.
6. **MG Maestro Freelander**: Land Rover hid the Freelander under a tall MG Maestro van. One survives at the Dunsfold Collection.
7. **Porsche 918 Spyder**: a naked 918 powertrain mule wearing 991-era 911 panels; Porsche let journalists ride it at Nardo. (918 units, production from 9/18.)
8. **Jaguar XJ220 'van'**: Jaguar plumbed 542bhp into a Ford Transit's load bay. Nobody suspects a white van.
9. **Lamborghini Countach Evoluzione**: a carbon/Kevlar Countach that Lamborghini crashed once the autoclave got too dear. Its young engineer left to start his own marque: Horacio Pagani.

Lore via Top Gear, ["Nine weird secret test mules"](https://www.topgear.com/car-news/top-gears-top-9/nine-weird-secret-test-mules-youve-never-heard) (Ollie Kew). The two photos above are the only ones in the set that exist under a free license; the rest are best enjoyed at the source.

---

- [Break-even at three submits](https://aadhar.sh/garage/htmx)
  
  [htmx](https://github.com/bigskysoftware/htmx) shipped [4.0](https://four.htmx.org/announcements/2026-08-28-htmx-4.0.0-is-released) 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
- [The config that types itself](https://aadhar.sh/garage/typed-config)
  
  A Worker config is data, so every binding name in it is a string nothing checks, and this site's own `env` is typed `any`. Wrangler hides a flag that makes the config a TypeScript program and infers `Env` from it, so one Worker here was converted to find out what that buys. The upload came out byte-identical, a plain-text variable arrived in the type as the literal `"default"`, and the Durable Object type went backwards to `undefined` under both entrypoint forms. Migration tags become a state on an export, and the one step a dry run structurally cannot check is named rather than glossed. 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
- [Flags the docs don't list](https://aadhar.sh/garage/hidden-flags)
  
  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](https://github.com/oven-sh/bun/pull/34427) 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
- [What a crawler name is worth](https://aadhar.sh/garage/useragent)
  
  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](https://datatracker.ietf.org/doc/draft-meunier-web-bot-auth-architecture/) and the awkward fact that this site's own crawler signs and has never registered.
  
  shape: crawler-identity survey + measurements · added 2026-08-21
- [Dyno](https://aadhar.sh/garage/dyno)
  
  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
- [Octane, priced against no framework](https://aadhar.sh/garage/octane)
  
  [Nextane](https://github.com/southpolesteve/nextane) rebuilds the Next.js Pages Router on [Octane](https://github.com/octanejs/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
- [Compression teardown](https://aadhar.sh/garage/compression)
  
  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](https://www.rfc-editor.org/rfc/rfc9842.html) zstd shared-dictionary deltas. Keeps the wrong turns, since those transfer.
  
  shape: measured teardown + shipped fix · added 2026-07-27
- [Post-quantum signatures, priced](https://aadhar.sh/garage/pqc)
  
  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](https://github.com/paulmillr/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). Ends with the migration shipped, since `Signature-Input` is a dictionary and a second label costs a verifier nothing to ignore.
  
  shape: measurements + a shipped migration · added 2026-07-27
- [Pixel Peeper: whose eye do you have?](https://aadhar.sh/pixel-peeper)
  
  [ismy.blue](https://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
- [5.6 Sol's performance pass](https://aadhar.sh/garage/gpt56)
  
  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
- [Blueprint: how Fable 5 would rebuild it](https://aadhar.sh/garage/blueprint)
  
  The [teardown](https://aadhar.sh/garage/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
- [Bytes on the wire](https://aadhar.sh/garage/wire)
  
  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](https://github.com/evanw/esbuild) vs [Oxc](https://github.com/oxc-project/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
- [Off Pages, onto Workers](https://aadhar.sh/garage/workers)
  
  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, and why it stays across the room](https://aadhar.sh/garage/iroh)
  
  [iroh](https://github.com/n0-computer/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
- [Teardown: what Fable 5 found](https://aadhar.sh/garage/teardown)
  
  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](https://aadhar.sh/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
- [A masonry contact sheet](https://aadhar.sh/garage/masonry)
  
  [CSS Grid Lanes](https://drafts.csswg.org/css-grid-3/) 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
- [Safari 27, through this site's lens](https://aadhar.sh/garage/safari27)
  
  [WebKit's Safari 27 beta notes](https://webkit.org/blog/17967/news-from-wwdc26-webkit-in-safari-27-beta/) 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
- [Three free Cloudflare features, live](https://aadhar.sh/garage/cloudflare)
  
  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
- [Half the light](https://aadhar.sh/garage/resample)
  
  A one pixel checkerboard reduces to sRGB 188, and `sips`, ffmpeg, the Rust [image](https://github.com/image-rs/image) crate, [fast\_image\_resize](https://github.com/cykooz/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](http://www.ericbrasseur.org/gamma.html) 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
- [Pixels Instagram has no reason to resample](https://aadhar.sh/garage/ig-prep)
  
  [ig-prep](https://github.com/oddharsh/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](https://modelcontextprotocol.io) 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
- [Thumbnail encoding study](https://aadhar.sh/garage/encoding)
  
  [jpegli](https://github.com/google/jpegli) and [zenjpeg](https://github.com/imazen/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
- [pretext: text measurement off the DOM](https://aadhar.sh/garage/pretext)
  
  [chenglou/pretext](https://github.com/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
- [Content-addressed chunking](https://aadhar.sh/garage/chunks)
  
  [mkit](https://github.com/officialunofficial/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, the XP way](https://aadhar.sh/garage/scroll)
  
  [Scroll-driven animations](https://drafts.csswg.org/scroll-animations-1/) 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
- [Horizon: upcoming web platform](https://aadhar.sh/garage/horizon)
  
  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
- [Tooltip experiments](https://aadhar.sh/garage/tooltips)
  
  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](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API), `@starting-style`, and two custom-property writes per move. No rAF, no layout reads.
  
  shape: visual + interaction · added 2026-05-22

More to come. Mules that graduate get the  tag; the ones that don't stay parked here tagged . Scrapping a rig still leaves a data point; I never delete one. This is a motor pool, so the failures stay parked next to the wins.

← back to [aadhar.sh](https://aadhar.sh/)

© 2026 Aadharsh Pannirselvam · built in the open

Source: https://aadhar.sh/garage
