$ cat colophon.md
Colophon · How this site is made
About this site
Every site is a small machine. This one is wound around a single idea — time — and built by hand, in plain HTML, CSS and JavaScript, with no framework anywhere in sight.
v2 · Knipsel TTYThe name
The site is called )It's About Time( — the brackets deliberately reversed, closing before they open, like a watch read back to front. The design is Knipsel TTY: a CRT terminal-noir base (phosphor green on true black, scanlines, $ prompts, man-page sections) with an Afrikaans-zine collage layer (kraft-paper clippings, oxblood stamps, handwritten margin notes, tape strips). The landing page is a terminal that boots — it types ls ~/projects/ and reveals the project directory listing, one entry at a time. It is, after all, about time.
What's inside
🖼 A gallery
AI-generated art and a shelf of research documents, with an "Ask my documents" RAG chat widget bolted to the page.
🧰 Projects
A portfolio of things built and shipped end to end — AI, systems, security tooling and scientific computing.
🕹 Two arcades
A JavaScript canvas arcade with accounts and a live leaderboard — and a No-Script arcade of games with zero JavaScript.
⏱ A visitor log
A live, 90s-style hit counter — per-page counts and a rolling log of throwaway visitor handles, no IPs stored.
The look
One small tokens.css file is the single source of truth for the palette; every other stylesheet imports it. Three typefaces do the work: Fraunces for display, JetBrains Mono for terminal chrome and labels, and Spectral for body text on the zine-paper clippings.
The machinery
- Front end: hand-written static HTML, CSS and vanilla JavaScript — no build step, no framework, no bundler. Scroll reveals use a tiny
IntersectionObserver; the terminal boot sequence is a few dozen lines of plain JS. - Back end: the arcade accounts, score sync and visitor counter run on free PHP + MySQL — PDO, bcrypt password hashing, a CSRF header and a per-IP login throttle.
- Installable: a web manifest plus a full icon set (favicon, Apple touch, maskable) generated by rasterising an SVG of a neon clock dial, so the site installs as a PWA.
- Deploy: a single shell script ships the whole tree over FTP to InfinityFree — the static pages refresh instantly, while CSS/JS carry a
?v=cache-buster.
:target, :checked, :has(), :valid). Not one <script> tag. Open the arcade →Credits
- Built by
- Thomas Verhave, with Claude Code
- Type
- Fraunces · JetBrains Mono · Spectral (Google Fonts)
- Hosting
- InfinityFree (static + PHP/MySQL)
- Source
- github.com/Thom4sss