Colophon

How this site is built, and what it cost. Numbers below are measured rather than claimed — the font weight is read off the built files each time the page is generated, so it cannot drift out of date.

Static, on purpose

Next.js exported to plain files and served from Cloudflare's edge. No server runs my code when you load this page — the HTML was written once, at build time, and handed to you. It is the cheapest thing to host and the least there is to break.

Measured Lighthouse 99 / 100 / 100 / 100 · 2026-08-27

Chinese fonts, cut to size

Serving Chinese means serving thousands of glyphs. The upstream families are around 125MB. A build script reads every Chinese character this site actually uses, subsets the fonts to exactly those, and a checker fails the build if new copy introduces a glyph the subsets do not carry. It has caught that four times.

Measured 124.7 MB → 1387 KB

A megabyte I shipped by accident

The language switcher sits in the sticky header, so it is on screen at all times. Next prefetches links by default, which meant every English visitor quietly downloaded both Chinese routes and their fonts — a megabyte of glyphs for a page with no Chinese on it. Source inspection could never have found it; the requests only appear in a real browser after hydration. One property fixed it.

Measured 1716 KB → 700 KB

Three languages that disagree on purpose

The Hong Kong and mainland versions are not the same text in different characters. Hong Kong writing code-switches — job listings there print 前端(Frontend)— so the Traditional version keeps English technical words inline. Mainland technical writing translates them, so the Simplified version says 后端, 微前端, 事件驱动. Identical wording would have read as foreign in one of the two.

What this page knows about you

No cookies, no fingerprinting, no third-party embeds, and no advertising or social scripts. A strict content-security policy names every origin allowed to run anything, which is short: this one, plus Cloudflare's privacy-preserving visitor counter. That policy blocked the counter itself for the first weeks, silently, until it was measured.

Motion you can turn off

The cursor, the dot grid, the radar sweep and the section reveals all check whether your system asks for reduced motion, and render statically when it does. That is not a toggle buried in a menu — it follows the setting your operating system already has.

Everything here is a static file. There is no server, no database, and no account system, because a personal site needs none of those and each one would be something else to keep patched.

ryanxu.dev