Colophon
This site is static HTML, generated at build time with Astro and served from Netlify. Nothing runs on a server after the build.
What it loads
Every page loads from this domain and nowhere else: no font service, no analytics, no embeds, no cookies. The type is Newsreader for display and Inter for text, both self-hosted. Dark mode follows the system setting, and the toggle in the corner stores an override. That toggle is the only JavaScript these pages run; everything else is HTML and CSS. The one exception is The Line, which is a game and so is a program. It is built from a private repository and published here as a single file, served from this domain like everything else, and it runs entirely in the browser without asking anything of the network.
Where the publications come from
The publications list is a snapshot of my ORCID record, fetched from ORCID's public API and rendered as is. Nothing is added by hand; a missing paper is fixed in ORCID, not here. Shared first and last authorships come from a separate hand-kept file that may only annotate works the snapshot holds. The build checks every DOI and author name in it against the snapshot and fails on a mismatch, so a typo cannot quietly mark nobody. Last synced on .
Holding up
The layout is fluid from 320 pixels wide and sized in rem, so it follows the browser's font size and survives 400% zoom without scrolling sideways. Pinch zoom is never disabled. On paper, navigation is dropped and the contact icons print as the addresses they carry.
Netlify serves the pages with a same-origin Content-Security-Policy, so no script, style or request can come from anywhere but this domain, and the site cannot be framed. A security.txt is regenerated on every build with a fresh expiry.