Colophon
How this site is built.
Made to be read, and to be checked. No build magic, nothing phoning home, and the whole thing open to inspect.
The build
A static site generated by Jekyll and served from GitHub
Pages — no JavaScript framework, no client-side rendering, no build
step beyond Jekyll itself. The moving parts are few: the
github-pages gem plus jekyll-feed,
jekyll-seo-tag, and jekyll-sitemap; one
hand-written stylesheet built on design tokens; and about 500 lines
of vanilla JavaScript across six small files. Every line of that
JavaScript is progressive enhancement — each page works with it
switched off.
Set in
EB Garamond for display type, falling through to Noto Serif SC (or a system serif) for Chinese; a system sans-serif for body text; and IBM Plex Mono for the small technical labels. The Latin faces are self-hosted from this origin — no font CDN, no Google Fonts request. Chinese glyphs are served by your own system.
How to audit it
That nothing here tracks you isn't a promise — it's enforced. A
strict Content-Security-Policy pins script-src
to this origin (plus the two inline theme and motion scripts, by
hash) and sets connect-src 'self', so the page can't
fetch from anywhere else: no analytics, no CDN, no remote calls.
Every change is checked by a post-build validator
(scripts/validate_site.rb) that CI runs on each pull
request and push to main — it verifies metadata, bilingual
hreflang parity, the security policy, and asset
integrity. And the source is public: read it, clone it, open an
issue.
Privacy
No analytics, no cookies, no third-party resources — no tracking. There's no contact form and no email collected; the way to reach me is a public GitHub issue or discussion, where the conversation stays next to the code.
- GeneratorJekyll only
- HostingGitHub Pages
- TypeEB Garamond & IBM Plex Mono
- JavaScript~500 lines, progressive enhancement
- AnalyticsNone
- SourceView on GitHub