Colophon

What this site
is made of.

A studio that sells engineering judgment should let its own website be read as evidence. Every number below was measured by the build that produced this page, and what stops flattering it publishes anyway.

Built with

Framework
Astro, static output. No client framework, no hydration, no islands: four runtime dependencies, three of them Astro's own.
Hosting
Cloudflare Workers serving pre-built assets. One Worker route, for the contact endpoint; everything else is asset-first and never invokes it. Apex only, www redirects.
Type
Inter Variable, self-hosted. System monospace for figures and labels, rather than shipping a second face to set a date.
Content
MDX files in the repository. Drafts render only on the dev server; publishing one is an edit and a deploy. No queue, no CMS, nothing to log into.
Method
Built with AI in the loop, code as well as writing. Dante Lee directs, reviews and ships; the gates behind this site catch what a review let through. Where a post says "I" about work here, it means decided, reviewed and shipped, not necessarily typed.

What it weighs

Measured after pruning unreferenced assets, which changes the answer. Both figures are given because brotli makes any site look about a third as heavy, and only the single Inter subset an English page fetches is counted.

PageUncompressedKBBrotliKBRequests
Lightest page/contact/sent/76.055.76
Home/90.659.69
A post/writing/ci-gate-failed-on-success/92.759.56
Heaviest page/work/newtonslasertag/218.2186.910

What it refuses

  • No 'unsafe-inline' for scripts. The Content-Security-Policy is generated from the built output every build, with a SHA-256 hash read off each inline script that exists. A hand-maintained one drifts silently.
  • No third-party fonts, scripts, or trackers beyond Cloudflare's analytics and the contact form's bot check, both named in the policy rather than waved through.
  • No second copy of the site. Cloudflare serves a *.workers.dev hostname by default; until 2026-07-29 every page here was also crawlable on one nobody chose.
  • No motion that ignores being asked to stop. Every effect, including the page-to-page morph, is inside a prefers-reduced-motion query.

How it is checked

9 gates stand between a change and this domain. The two that describe rendering: 476 combinations of page × viewport × engine asserting no horizontal overflow and no page errors, and 180 page renders inspected for text drawn over text, tap targets under 24×24, and contrast below WCAG AA, in Chrome and in Safari's engine, from 320px to 2560px. Each gate's own run wrote its number.

See what every gate last reported →

Compromises

Typography is Latin-only. Text outside that range falls back to a system sans: the right trade for a site whose every word is English, and the wrong one the day that stops being true.

The policy forbids inline script but permits inline style attributes, narrowed from allowing inline style entirely once only the attributes proved load-bearing: the page morph names each title through one, and browsers do not reliably hash style attributes. Inline <style> elements are blocked.

What actually asks for this site

Every request to this domain for one ordinary day: the quietest of the last ninety, with none of our own detectable traffic in it. Not a visitor count. A small site's traffic being mostly automated is simply what the web is now, so the composition is the part worth publishing.

The day
2026-07-28, 470 requests in twenty-four hours.
Probing
46% of them asked for things that have never existed here: /wp-login.php, /xmlrpc.php, /.env, /database.sql. This site has never run WordPress or PHP; each one is somebody checking whether it does.
Tools
75% came from scripts, crawlers, and clients sending no user-agent a browser would send.
Browsers
5% reported themselves as an ordinary browser. A further 19% reported as Safari, which is indistinguishable from the WebKit half of this site's own test harness, so that share is stated rather than claimed.
2026-08-18 · 1,511 requests2026-08-19 · 1,367 requests2026-08-20 · 1,178 requests2026-08-21 · 2,740 requests2026-08-22 · 1,967 requests2026-08-23 · 1,318 requests2026-08-24 · 2,655 requests2026-08-25 · 1,180 requests2026-08-26 · 7,100 requests2026-08-27 · 1,809 requests2026-08-28 · 7,150 requests2026-08-29 · 6,881 requests2026-08-30 · 7,780 requests2026-08-31 · 1,390 requests
2026-08-182026-08-31
How this is counted

Fourteen days on one scale, one bar per day, blank where nothing was recorded. Grays run darkest for this site's own harness, through Safari-or-WebKit, to scripts and declared bots. The accent is the sliver reporting as an ordinary browser.

Aggregates only: no addresses, no user-agent strings, nothing per-visitor is recorded or kept, because a request log is personal data. Classification comes from the path and the reported client, a per-request bot score being a paid Cloudflare feature on a free zone. Written by the daily rebuild; 38 days are on record.

This connection

Facts about the request that fetched this page are read from Cloudflare's edge when JavaScript is available. Nothing is stored, and nothing is shown if the reading fails.

The console

Open DevTools on any page. The console is part of the site and introduces itself. These are its commands, minus the keyboard shortcuts.

  • actium.grid()Toggle the 12-column Swiss spec grid
  • actium.invert()Toggle the Printed Swiss light edition
  • actium.ping()Measure edge latency, colo, and your TLS handshake
  • actium.stats()Inspect page DOM, fonts, and render mode
  • actium.contact()Route to the studio contact form
  • actium.lost()Get lost on purpose; the 404 has its own commands
  • actium.gates()What has to pass before this site ships
  • actium.help()Reprint this command index