auto: 2026-03-24T12:57:08Z
This commit is contained in:
parent
4111eaddc3
commit
9626f6795a
|
|
@ -10,10 +10,8 @@ abstract: On the design, tools, and philosophy of this site — and by extension
|
||||||
::: dropcap
|
::: dropcap
|
||||||
A personal website is not a publication. It is a position. A publication presents work
|
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!";
|
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
|
a position is something you inhabit, argue from, and continuously
|
||||||
revise in public. Every design decision on this site — the typeface, the build system,
|
revise in public. This page explains the design decisions forming my broader **position** and why they took the form they did.
|
||||||
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,
|
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
|
recording how it was made, who made it, etc. The difference: here, the
|
||||||
|
|
@ -26,29 +24,23 @@ of argument, but *the only* form of argument permitted.
|
||||||
## Typography
|
## Typography
|
||||||
|
|
||||||
::: dropcap
|
::: 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.
|
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. [OpenType]{.smallcaps} features — `smcp`, `onum`, `liga`, `calt` are used throughout the website, which necessitates our self-hosting setup.^[Google Fonts strips OpenType features during
|
||||||
:::
|
|
||||||
|
|
||||||
[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
|
subsetting for bandwidth. Self-hosting with `pyftsubset` preserves `smcp` (small
|
||||||
capitals), `onum` (old-style figures), `liga` (common ligatures), and the full optical
|
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
|
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
|
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*.]
|
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
|
The UI and headers are Fira Sans. Variation is good, and moreover, humanist sans are rather ubiquitous (we have Frutiger to thank for this fact!) - perhaps I am making some type of statement by not choosing one of the more corporation variations of it, like the dreaded Calibri and Tahoma you might recognize from Microslop (formerly known as *Microsoft*) products. Code uses Jetbrains Mono, which is simply the font that I use within my editor. Code should look like code, simple as that.
|
||||||
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
|
The monochrome palette is an application of restraint grounded in my studies of Tools for Thought.
|
||||||
should do: distinguishing hierarchy, marking emphasis, signaling state. When those
|
Color is often used to do work that typography
|
||||||
functions are handled by weight, size, and spacing instead, color becomes available
|
should do, such as demonstrating hierarchy, creating emphasis, etc. When those
|
||||||
for the things it cannot be substituted for — and on a site with no data visualizations
|
functions are handled by weight, size, and spacing instead^[Color and saturation/hue are actually well known to be less effective than other means of distinguishment. I refer you to Tufte's *The Visual Display of Quantitative Information* for more.], 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
|
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 heatmap on the statistics page, which uses a four-step greyscale scale. Even there,
|
||||||
the encoding is luminance rather than hue.]
|
the encoding is luminance rather than hue.]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## The Build
|
## The Build
|
||||||
|
|
@ -118,25 +110,12 @@ architectural one.]
|
||||||
## [AI]{.smallcaps} and This Site
|
## [AI]{.smallcaps} and This Site
|
||||||
|
|
||||||
::: dropcap
|
::: dropcap
|
||||||
This site was built in collaboration with Claude. The Pandoc filters, the [CSS]{.smallcaps},
|
I will never use AI to write, whether for my personal communications with anyone or for pieces on this website. I take this extremely seriously - writing is religious in severity to me. The writing on this website is wholly human and wholly my own, to the extent that any writing can be.
|
||||||
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
|
Much of the code that comprises the build system of this website was created in collaboration with AI. Rather than "vibe coding" proper, this was the result of an intensive engineering process where AI and I were equals in collaboration. Notably, all of the major architectural choices, design decisions, idiosyncracies, and elements of the tech stack were chosen entirely by me, and AI systems were only used to automate production of some (but not all) of the code that was required.
|
||||||
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 commit history, of course, is available for you to view and licensed accordingly - see **No Tracking** for more.
|
||||||
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.]
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -144,6 +123,9 @@ records what was changed when, which is a more honest account than any prose sum
|
||||||
|
|
||||||
### Sidenotes
|
### Sidenotes
|
||||||
|
|
||||||
|
The sidenotes are provided by a JavaScript file that was forked from the website of Gwern Branwen and authored by
|
||||||
|
Said Achmiz; I have simplified the script to fit the needs of this website and made some minor modifications.
|
||||||
|
|
||||||
[TODO: The Tufte influence — *Envisioning Information*, the three-column layout, the
|
[TODO: The Tufte influence — *Envisioning Information*, the three-column layout, the
|
||||||
argument that footnotes interrupt reading in a way that marginalia does not. 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
|
sidenote as a first-class typographic element rather than a concession to citation
|
||||||
|
|
@ -155,10 +137,10 @@ implementation used here is a simplified fork).]
|
||||||
The site has no analytics, no visit counters, no fingerprinting, and no third-party
|
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
|
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
|
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
|
from executing. The whitelist is short.] The Hetzner VPS that provides this content runs
|
||||||
is sufficient. The deeper reason is that knowing your readership changes what you write
|
only open source software, and my machines use *almost exclusively*^[It is nearly impossible to run an entirely free system, but in approximation, it is actually wonderfully easy.] the same. The code is licensed under MIT and hosted
|
||||||
for it — gradually, invisibly, in the direction of whatever the metrics reward. A site
|
on a public repository at this domain with a [GitHub mirror](https://github.com/levineuwirth/levineuwirth.org); you are welcome
|
||||||
without metrics cannot optimize for them. This is a feature.
|
to inspect it, fork it, or, more broadly, do whatever you please with it.
|
||||||
|
|
||||||
### Living Documents
|
### Living Documents
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue