Colophon
This site is itself a small engineering artifact, not just a container for one. Here's how it's actually built.
Built with Zola, a Rust static site generator — content in Markdown/TOML, templates in Tera. No JavaScript framework, no bundler, no build step for the frontend beyond Zola's own Sass compilation — no npm dependency tree to audit or update either, since Zola's own pipeline (Sass, cache-busted asset URLs) already covers what a bundler would otherwise be for. Every script under static/js/ is plain vanilla JS, self-guarding (if (!el) return;) so it's safe to load unconditionally on every page rather than being conditionally included per page type.
Deployment is a GitHub Actions workflow: push to main, it installs Zola, runs zola build, and FTP-deploys the output. No manual step, no server to manage beyond that. The source — every template, Sass partial, and static/js/*.js file behind this page — is public: github.com/rinekri/blog.
Every fingerprint-like mark on this site — the flat scatter on post/project/tag cards, the wide banner on a post's own header, the composite strip on each archive year, the polar ring around the photo on /about/, the flow-field on the home page — comes from one small shared PRNG core: an FNV-1a string hash feeding a mulberry32 generator. The same seed always produces the exact same mark, deterministically, with no server round-trip and no stored image — it's drawn fresh on every page load from a few bytes of seed text.
Different contexts use different drawing functions tuned for their shape and density (a 200×88 card mark reads very differently than a full-width hero banner drawn with the same technique), but they all share the same PRNG core and the same "seed in, deterministic mark out" contract.
Five seed strings, one drawing function (drawFingerprint() in static/js/fingerprint.js). Reload this page and every one of them redraws pixel-identical — the seed text is the only input.
The exact same core, live: type anything below and drawFingerprint() redraws the canvas from your text as you go — client-side, no server round-trip, no image stored anywhere.
The same core also draws the polar portrait ring on /about/ — angle and radius around a fixed center instead of scattered x/y, a different drawing function for a deliberately different subject, but the same PRNG underneath.