Updates

Folders before features

I spent an evening building a listing system for this archive before there was anything to list. The listing system now does almost nothing, and the three rules it assumed are the only reason this site has no broken pages.

There is a specific kind of procrastination that looks like work: inventing the tool before making the thing. I wrote a script that scans folders and generates a catalog, and the catalog it generated was empty for three weeks.

Rule one: a post is a folder

Every post lives in its own directory with an index.html inside. The directory name is the slug. This means a post is portable, diffable, and can be moved without touching a single link.

Rule two: category folders hold nothing

Group folders exist to make browsing easier, never to hold content. A post that lives directly in a category folder is a bug, because the moment someone adds a second post the structure becomes guesswork.

journal/                       <- category, no posts
  folders-before-features/
    index.html                 <- the post

Rule three: the index is the source

The listing page is written by hand, and hand-written means wrong sometimes. Wrong is fine — a stale entry is a two-second fix, while a generated entry is a mystery. Generators are for when the content outgrows the typing.

Boring structure is not a lack of ambition. It is ambition spent on the writing.

What I would add later

  1. Tags, once there are more than about thirty posts.
  2. An RSS file, written by hand, updated when I remember.
  3. Nothing else, until something actually breaks.