colophon

how this site is made

No framework, no build step, no tracking. Three files, one binary, and a lot of stubbornness about details nobody asked for.

the stack

It's static HTML. There is no generator, no bundler and no node_modules — what's in the repository is exactly what the browser receives. The whole site is a handful of pages sharing one stylesheet and one small script.

That's a deliberate choice rather than a purist one. Frameworks earn their keep on sites with state and data. This site has neither; it has text, a colour scheme, and a terminal that needed to be fun. Every dependency I didn't add is a dependency that can't break.

type & colour

Inter for everything readable, JetBrains Mono for anything that should look like a computer typed it — the code samples, the dates, the file sizes. Icons are Font Awesome, which is the one third-party request the page makes that I could probably remove.

The palette is one accent on a near-black, and the same six values flip in light mode:

background#0e0e10
surface#17171a
border#292930
text#f3f3f5
muted#a4a4ad
accent#f0a13a

The theme toggle follows your operating system the first time and remembers your choice after that. The preference is applied by a script in the <head> before anything paints, which is the only reason there's no flash of the wrong colour on load.

every image is generated

This is my favourite part. Nothing here was drawn in a design app. The marks next to each project, the social preview card and the icons were all produced by swiss, a Rust binary I wrote — the same one that unlocks stubborn files and edits PDFs.

swiss brand og mark.png \
  --title "swiss" \
  --subtitle "one small binary, three small jobs" \
  --size 1280x720

There's a longer version of this story in the notes, including why the cards are 1280×720 when every guide on the internet says 1200×630.

the terminal

The prompt in the hero is real. It's a couple of hundred lines of vanilla JavaScript that knows about the projects and sections already on the page — so ls, open swiss and goto projects work, and theme flips the colours. It renders into a live region so a screen reader announces the output rather than silently swallowing it.

It is a small joke that costs nothing to load and is the thing people actually mention. Worth it.

hosting

GitHub Pages serves it straight from the repository over HTTPS, and the DNS lives at Porkbun. The 404 page is a real file rather than a redirect, so a wrong URL stays on the site instead of dumping you on a GitHub error page. There's a full write-up about getting the certificate to issue in the notes.

on the "vibecoded" thing

Almost everything on this site was built with an AI in the loop, and I'd rather say that plainly than pretend otherwise. What I'll say for it: I review what ships, I know why each piece is there, and I've written up the parts that were genuinely hard so the next person hitting the same wall finds it in one search instead of an afternoon.

The fun is the point. The site looking good is a side effect of caring about the details.


Spotted something broken? Tell me — or open an issue on GitHub, which is also the entire source of this site.