§B
Colophon
Technology
This site is a Next.js 16 app running on Cloudflare Workers through OpenNext. Every page is HTML built ahead of time; the pages with outside numbers are built again at most once an hour, when someone visits. Notes are MDX files in the repo, and projects are a list in a data file. The source is on GitHub, MIT licensed.
Tools
I write it in PhpStorm on a MacBook Pro 14" (M4, 2025), with pnpm as the package manager.
Search and Ask
Press ⌘K (Ctrl K off a Mac) to search the site. The search runs in your browser, so typing sends nothing. Press Enter with nothing selected and the question goes to an AI model (Claude Haiku, through OpenRouter), which answers from this site's pages and numbers. The question and the conversation so far go to OpenRouter and Anthropic to write the answer; this site stores nothing. Your browser keeps the conversation for a week, and Cloudflare Turnstile checks each question for bots. The box is @perxel/spotlight, a package I built for perxel.com and this site.
Type
- Source Serif 4 for the name and section titles.
- Source Sans 3 for reading text, with old-style figures.
- IBM Plex Mono for numbers, dates and IDs.
All three are self-hosted and cut down to the characters the site uses (latin and Vietnamese).
Data
The numbers in Table 1 and on Stats are never typed by hand. The site fetches them again about once a day, after someone visits: contributions and stars from GitHub, downloads from npm and jsDelivr, books from my Goodreads shelf, and references from the Discord channel I bookmark into. If a source fails, the last good value stays. The plots are SVG drawn on the server with matplotlib's default style; Figure 1 is the only one you can pluck.