Budgets

Every page has a budget. A change that breaks one fails the build, so it never reaches this site. Each page is measured as a first visit, with nothing cached.

Measure Budget
Everything a first visit downloads 150 KB
Fonts 120 KB
JavaScript 5 KB
Largest Contentful Paint, on a phone with slow 4G (simulated) 1.5 seconds
Cumulative Layout Shift under 0.05
Lighthouse performance score 98 or more
Lighthouse accessibility score 100
Lighthouse best practices score 100
Lighthouse SEO score 100

Built with

The pages are written with Astro, which turns them into plain HTML and CSS when the site is built. The only JavaScript fetches the next page while your pointer rests on its link, opens the header’s menu while your pointer rests on it, and runs the copy button on the contact page.

Cloudflare serves the files from its data centre nearest each visitor, through a small program of our own that adds the security headers and keeps one address for each page. Everything is compressed ahead of time, so on each visit the server only has to send files.

Type and colour

Text is set in Inter by Rasmus Andersson, headings in Schibsted Grotesk by Schibsted, and code in JetBrains Mono by JetBrains. All three are open source, under the SIL Open Font License, trimmed to the characters we use and served from this site.

The colours are the Millwright family’s: Mill green and brass on warm paper. The favicon and the social cards are drawn from the same fonts and colours by the site’s own scripts.

Security and privacy

A strict Content Security Policy tells browsers to run only the scripts and styles this site ships, each matched to a fingerprint, with Trusted Types enforced. Every response carries the same security headers, error pages included, and the site is served only over HTTPS. To report a problem, see our security.txt.

There are no cookies, no trackers, and nothing loaded from anyone else’s servers. Our privacy policy has the detail.

Checked on every change

Before anything is published, the build checks the code, validates the HTML, and holds the copy to our house style (Australian spelling, typographic quotes, no em dashes). Then it compares every page with approved screenshots, scans each for accessibility problems, and tests the server’s headers, redirects and links, as a browser would meet them.

Last updated .