207 lines
9.7 KiB
Markdown
207 lines
9.7 KiB
Markdown
---
|
|
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
|
|
finished and sealed; 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 old sense: a printer's note at the end of the book
|
|
recording how it was made, who made it, and with what. The difference is that here the
|
|
printer and the author are the same person, and the process of making is itself a form
|
|
of argument.
|
|
|
|
---
|
|
|
|
## Typography
|
|
|
|
::: dropcap
|
|
[TODO: Spectral as body typeface. Open with the observation the reader is already
|
|
inside — they are reading Spectral right now. History: Production Type, 2017, designed
|
|
for screen. Why a humanist serif rather than a geometric or transitional. The optical
|
|
size range and why it matters at small sizes.]
|
|
:::
|
|
|
|
[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.
|