Colophon
What this site
is made of.
How this site is built, what it weighs, and the trade-offs it makes.
Built with
- Framework
- Astro, static output, with no client-side framework. Four runtime dependencies, three of them Astro's own.
- Hosting
- Cloudflare Workers serving pre-built assets. The Worker runs only for the contact endpoint,
/.well-known/, and requests for/404itself. The rest is served as static files without invoking it. Apex only,wwwredirects. - 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, and publishing one is an edit and a deploy. There's no CMS to log into.
- Method
- Built with AI, for the code and the writing. Dante Lee directs and reviews the work, and he decides what goes live. How the posts are written is on the writing page.
What it weighs
Measured after unused assets are pruned, and compressed the way Cloudflare sends each file. Both sizes are shown because compression makes a site look about a third as heavy. Only the one Inter subset an English page fetches is counted.
The figures include the analytics script Cloudflare adds to each page as it serves it: 31.3 KB, 10.3 KB compressed. That was measured from the live site on 2026-10-11.
| Page | UncompressedKB | CompressedKB | Requests |
|---|---|---|---|
Lightest page/contact/sent/ | 111.8 | 68.3 | 8 |
Home/ | 124.9 | 72.3 | 10 |
A post/writing/ci-gate-failed-on-success/ | 125.0 | 72.3 | 8 |
Heaviest page/work/hillcrest/ | 250.7 | 198.2 | 11 |
What it leaves out
- No
'unsafe-inline'for scripts. The Content-Security-Policy is generated from the built output on each build, with a SHA-256 hash read off each inline script that exists. A hand-written policy goes out of date when the scripts change. - No third-party fonts, scripts, or trackers beyond Cloudflare's analytics and the contact form's bot check, both listed by name in the policy.
- No second copy of the site. Cloudflare serves a
*.workers.devhostname by default. Until 2026-07-29, this site was crawlable there too. - No motion that ignores being asked to stop. Every effect, including the page-to-page morph, is inside a
prefers-reduced-motionquery.
How it is checked
Ten automated checks can stop a change from going live. Two of them test rendering, in Chrome and in Safari's engine, at widths from 320px to 2560px. The visual matrix checks 532 combinations of page, viewport and engine for sideways overflow and page errors. The layout audit inspects 276 page renders. It looks for text drawn over text, tap targets under 24×24, contrast below WCAG AA, clipped text, narrow measures, and links drawn like their sentence.
Compromises
Typography is Latin-only. Text in other scripts falls back to a system sans. That's fine while the pages are in English.
The policy blocks unhashed inline scripts but allows inline style attributes. Three things in the build can only be written that way. The page-to-page morph names each title in a style attribute. The code blocks set each token's color in one, and the bar figures set their measured widths in one. A browser can't hash an attribute. Inline <style> elements are blocked.
What sends requests to this site
Every request to this domain on one day: the quietest of the last 42 days, with no detectable test traffic from this site. It counts requests, not visitors. Most requests to a small site come from scripts and bots, so this shows the mix.
- The day
2026-09-12, 707 requests in twenty-four hours.- Probing
- 7% of them asked for things that don't exist 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. Probes are counted by path, so this share overlaps the groups below. - Tools
- 79% came from scripts, crawlers, and clients that don't send a browser's user-agent.
- Browsers
- 10% reported themselves as an ordinary browser. Another 11% reported as Safari. This site's own WebKit tests also report as Safari, and the data can't tell them apart, so that share isn't counted as people.
How this is counted
14 days on one scale, one bar per day, blank where no day was recorded. Grays run from strongest to faintest: this site's own tests, then Safari or WebKit, then scripts and declared bots. The accent is the sliver reporting as an ordinary browser.
The daily rebuild sorts each request by its path and its reported client, and keeps only the totals. It records no addresses, user-agent strings or other per-visitor details, because a request log is personal data. Cloudflare's own short-lived logs are described on the privacy page. Per-request bot scores are a paid Cloudflare feature, and this site is on the free plan. 83 days are on record.
This connection
Facts about the request that fetched this page are read from Cloudflare's edge when JavaScript is available. The page stores no reading, and shows none if the read fails.
Most requests here run no server code. Static files are served straight from the edge, and the Worker runs for only a handful of paths.Three samples each, interleaved, so drift hits both equally.
The console
Open DevTools on any page to use these commands. The console lists them too, with their keyboard shortcuts.
actium.grid()Toggle the 12-column Swiss spec gridactium.invert()Toggle the light editionactium.ping()Measure edge latency, colo, and your TLS handshakeactium.stats()Inspect page DOM, fonts, and render modeactium.contact()Open the contact formactium.lost()Get lost on purpose; the 404 has its own commandsactium.gates()See every check and its last resultactium.help()Reprint this command index