--- title: Colophon date: 2026-03-21 modified: 2026-03-21 status: "Draft" tags: [meta] abstract: On the design, tools, and philosophy of this site — and by extension, its author. --- ::: dropcap A personal website is not a publication. It is a position. A publication presents work in a finalized, immutable state, and carries with it some sort of declaration - "this is my most polished and prized work!"; a position is something you inhabit, argue from, and occasionally revise in public. Every design decision on this site — the typeface, the build system, the absence of tracking, the presence of confidence scores — encodes a value. This page explains those values, and why they took the form they did. What follows is a colophon in the grand old sense: a printer's note at the end of the book, recording how it was made, who made it, etc. The difference: here, the printer and the author are the same person, and the process of making is itself not only *a* form of argument, but *the only* form of argument permitted. ::: --- ## Typography ::: dropcap You are reading this sentence in SPECTRAL, which is not only a font with particular personal importance to me, but also an exceedingly pleasing font to read. ::: [TODO: The [OpenType]{.smallcaps} features — `smcp`, `onum`, `liga`, `calt` — and why self-hosting is required to use them.]^[Google Fonts strips OpenType features during subsetting for bandwidth. Self-hosting with `pyftsubset` preserves `smcp` (small capitals), `onum` (old-style figures), `liga` (common ligatures), and the full optical size range. The difference is visible: old-style figures sit on the baseline rather than hanging above it, small capitals are drawn to match the x-height rather than being shrunken full caps, and ligatures prevent collisions in letter pairs like *fi* and *fl*.] [TODO: Fira Sans for [UI]{.smallcaps} and headers. What humanist warmth means in a sans-serif and why it pairs well with Spectral. JetBrains Mono for code — code should look like code.] The monochrome palette is a discipline. Color is often used to do work that typography should do: distinguishing hierarchy, marking emphasis, signaling state. When those functions are handled by weight, size, and spacing instead, color becomes available for the things it cannot be substituted for — and on a site with no data visualizations requiring color encoding, those things turn out to be very few.^[The one exception is the heatmap on the statistics page, which uses a four-step greyscale scale. Even there, the encoding is luminance rather than hue.] --- ## The Build ::: dropcap [TODO: Hakyll and Pandoc. Why Haskell. The compile step as philosophy — this site is a program and the content is the source code. The analogy to compiled software: readers receive a deterministic artifact, not a runtime rendering decision.] ::: [TODO: What Pandoc [AST]{.smallcaps} filters do. The filter chain: wikilinks → preprocessor, then sidenotes, smallcaps, dropcaps, links, images, math. All transformation before the reader arrives.]^[The full pipeline: Markdown source → Pandoc [AST]{.smallcaps} → citeproc → filter chain (sidenotes, smallcaps, dropcaps, wikilinks, external link classification, responsive images) → HTML. Complex math goes through a second pass: KaTeX renders server-side at build time, producing static [HTML]{.smallcaps}+MathML. No math rendering happens in the browser.] [TODO: The semantic search model — self-hosted [ONNX]{.smallcaps} weights served same-origin, no external [API]{.smallcaps} calls. Why this matters for the site's privacy posture.] [TODO: Build telemetry — pointer to `/build/` and `/stats/` for the empirical picture. This section covers intent; those pages cover state.] --- ## The Computing Environment ::: dropcap [TODO: The organizing principle for this section: configuration is code, privacy is a first principle, tools should be earned rather than merely used. These are not preferences but positions, and this site is downstream of them.] ::: ### Desktop [TODO: Gentoo Linux, Hyprland, Levshell (custom shell via Quickshell). Why Gentoo: compilation for performance, fine-grained [USE]{.smallcaps} flag control, the community. Why Hyprland: tiling window management as a productivity commitment. [AMD]{.smallcaps} hardware throughout.]^[The personal computing setup is documented in greater depth on the [[Me]] page. This section focuses on what is directly relevant to how this site is built and maintained.] ### Laptop [TODO: Arch Linux on ThinkPad P-series. Why Arch rather than Gentoo on battery- constrained hardware. The continuity of the Hyprland environment across machines — the same keybindings, the same visual language, the same muscle memory.] ### Editor [TODO: Emacs. Everything written and coded in Emacs. The relationship between the editor and the content — writing Markdown in Emacs with a Hakyll watcher running is as close to a [WYSIWYG]{.smallcaps} experience as the workflow gets.] ### Privacy-First Computing [TODO: Self-hosted email and [VPN]{.smallcaps}. LibreWolf over Firefox (the Chromium monopoly and Mozilla's drift). GrapheneOS. The principle: privacy as a first principle means building the infrastructure first, not bolting on settings after. The same principle applies to this site — no tracking is not a policy decision, it is an architectural one.] --- ## [AI]{.smallcaps} and This Site ::: dropcap This site was built in collaboration with Claude. The Pandoc filters, the [CSS]{.smallcaps}, the JavaScript, the Hakyll build system — much of the infrastructure emerged from an iterative dialogue between author and model. This is worth stating plainly, because the site's content argues for a specific position on [AI]{.smallcaps} use, and that position is most legible when the colophon is honest about where it was and was not applied. ::: [TODO: The augmentation/automation distinction made concrete. Building the infrastructure that hosts original thought is different from generating the thought. The Pandoc filter that transforms footnotes into sidenotes was written with Claude; the footnotes themselves were not. The CSS that sets the typeface was written with Claude; the prose set in that typeface was not. The distinction is the point.] [TODO: What this means for the site's claims to originality. The content — the essays, the compositions, the poetry, the research — is entirely Levi's. The medium was built collaboratively. This is the same relationship a writer has with an editor, a compositor, or a press operator: the vehicle is shared work; the voice is not.]^[The model used throughout is Claude (Anthropic). The full git history is publicly available and records what was changed when, which is a more honest account than any prose summary.] --- ## Design Decisions ### Sidenotes [TODO: The Tufte influence — *Envisioning Information*, the three-column layout, the argument that footnotes interrupt reading in a way that marginalia does not. The sidenote as a first-class typographic element rather than a concession to citation convention. Credit: Said Achmiz for the sidenote positioning [JS]{.smallcaps} (the implementation used here is a simplified fork).] ### No Tracking The site has no analytics, no visit counters, no fingerprinting, and no third-party scripts.^[This is enforced at the nginx level via [CSP]{.smallcaps} headers, not just by omission. The Content Security Policy prevents any script not explicitly whitelisted from executing. The whitelist is short.] The reason is not only privacy, though privacy is sufficient. The deeper reason is that knowing your readership changes what you write for it — gradually, invisibly, in the direction of whatever the metrics reward. A site without metrics cannot optimize for them. This is a feature. ### Living Documents [TODO: The epistemic metadata system — `status`, `confidence`, `modified`, `importance`. What each field means. Why marking `status: Ongoing` on a document matters: it is an honest claim about the document's relationship to the author's current thinking, rather than the implicit permanence that publication usually signals. The modified date is not decorative; it is the reader's primary signal for whether to treat a document as settled or in flux.] --- ## Influences [TODO: gwern.net — the primary architectural and philosophical ancestor. What was taken (sidenotes, living documents, epistemic metadata, semantic zoom, the long-form personal essay as the primary unit). What was changed (visual register — gwern's monochrome is denser; this site is more spacious — and scope).] [TODO: Tufte — *Envisioning Information* and *The Visual Display of Quantitative Information*. The three-column layout, the sidenote tradition, the principle that good typography is invisible.] [TODO: The personal website tradition more broadly — the early web's culture of idiosyncratic personal pages before social media collapsed everyone into the same templates. This site is partly an argument that that culture was worth having.] --- ## The Future This site is unfinished. Several portals have no content yet. The annotated bibliography is sparse. Some pages are marked `status: Stub` for good reason. This is acknowledged rather than concealed, because a site that presents itself as complete when it is not is making a false claim about the relationship between the author and the work. [TODO: Specific things that are in progress — content migration, the library portal, the fiction and research portals as the corpus grows. The Recently section on the homepage, deferred until the corpus supports it.] The colophon itself is a living document. When the site changes substantially, this page will change with it. The git history is the authoritative record; this page is the annotated summary.