Interactive experiments
These are not articles. They are things that actually run in your browser — real data, real code. Each one states what it genuinely computes, and what it cannot.
scroll timeline
The 1.07 seconds of one request
A real `curl -v` as a timeline that lights up as you scroll. Zero JavaScript — pure CSS `animation-timeline: view()`.
interactive
A real protocol, byte by byte
Click any byte to see which field owns it, and why it matters.
playable
The bead-lens optics lab
A real ray-tracing shader ported to WebGL2: drag to orbit, turn the knobs, watch it recompute.
playable
The TCP congestion-control lab
A live simulation of the congestion window and the bottleneck queue: a sawtooth on top, the queue below.
data
The open ledger
This site’s own numbers, computed from the repository at build time.
There are also 8 client-side tools (subnet, IPv6, bases, endianness, CRC, chmod, encoding, cron). See the tools →
How these are checked
Every component went through a screenshot → vision-model review → fix → re-screenshot loop. It has caught real defects, not ceremony:
The byte cells had no colour at all — the cells are created by JavaScript, so Astro’s scoped-style attribute never landed on them and my CSS silently did nothing; they fell back to the browser’s default button styling. `:global()` fixed it.
Every page scrolled sideways on a phone — eight non-wrapping header links gave the nav a 492px minimum and forced the whole document to 631px inside a 390px viewport.
The home hero sat 32px out of alignment — `.hero`’s `padding: … 0 …` shorthand zeroed the inline padding `.wrap` had just set.
Layout claims are not decided by eye: a DOM probe measures `documentElement.scrollWidth` against `innerWidth`, and Range rects measure text extents. Pixel inference got this wrong, confidently.