Colophon

How this site is put together, for the three of us who care.

Two sites, one design system. mcallister.ws is the front door and changes about once a quarter; Logical Disconnect is the blog and changes most weeks. They share every token, component and typeface, which is why moving between them should feel like staying put.

Type

Source Sans 3
Headings and all running copy, at 19px. A humanist sans with real letterform character, and deliberately not Inter.
Source Serif 4
Blockquotes and one pull quote per article. Same superfamily, so the second voice is related rather than contrasting.
IBM Plex Mono
Code, dates, badges, status — every piece of metadata. If a string is a fact about a thing rather than the thing itself, it is mono.

Build

Generator
A static site generator I wrote in Go. It exists because I wanted one, which is the only honest reason anybody writes another static site generator. It builds both sites from the same content tree and the same design system, which is why they agree with each other.
Deploy
Push to main, a GitHub Action builds both sites and syncs them to S3, and the CDN in front of it gets an invalidation. About ninety seconds from commit to live, most of which is the invalidation.
Posting from the road
A small iPhone app that began life as a pile of Shortcuts and got out of hand. It writes the front matter, resizes the photograph, and opens a pull request; the Action does the rest. I would call the internals arcane if I had not written them myself. Nearly every postcard here was posted from a train.
Pages
Static HTML, generated at build time. No client-side framework; the only JavaScript is the theme switcher, the mobile menu and the stream filter.
Styling
One stylesheet of design tokens and one of components, shared by both sites. Breakpoints are container queries.
Fonts
Self-hosted woff2. Nothing is requested from a third party on any page.
Analytics
None. No cookies, no tracking, nothing to consent to.

Feeds