Updated

Colophon

How waltspence.com works: the stack, the open-web features, and the design decisions.
2011Publishing history, charted as a night's sleep · 2026

This site is a publishing server. The web page you are reading is one of its interfaces.

Stack

Vue 3 (JavaScript, Vite)      islands on server-rendered pages
    ↓
Ruby on Rails                 system of record, HTML, JSON, text, feeds, API
    ↓
PostgreSQL                    content, relationships, full-text search
Redis                         cache, Sidekiq queues, Action Cable, rate limiting
Python / Node workers         feed normalisation, transcripts, analysis (as needed)

Rails renders a complete document for every public URL. Vue mounts small islands — the search palette, the live Thoughts stream, keyboard navigation, the theme toggle, chapter jumping in the player — only where they add something. Turn JavaScript off and the site still reads.

Objects and connections

Notes, Thoughts, Projects, episodes, Goodies, pages and topics share one vocabulary: topics and tags, typed relationships between any two objects, revision history, and one search table. Links inside a body automatically become “mentions” relationships, so every page can show what points at it.

Open-web features

  • Atom and JSON Feed for everything and for each section; a feed per topic; RSS 2.0 with the podcast namespace for the show.
  • Every object as .json, .txt and, for long-form, .md with front matter. Accept headers work too.
  • A read-only JSON API at /api/v1 that describes itself.
  • llms.txt, humans.txt, robots.txt, a sitemap, JSON-LD, OpenGraph, microformats2 (h-entry, h-card, h-feed).
  • A Webmention receiver. Verified mentions appear under the page they point at.
  • Stable permalinks. A URL only goes away if I take the post down.

Design

The site is set like the chart from a sleep study: a warm graphite ground that darkens down the page, warm white text, one amber accent. The chart at the top of every page is a hypnogram of this site’s own publishing dates. Anybody sets the name and the headings, Public Sans the reading text, and IBM Plex Mono every label, date and line of code. There is no serif anywhere on the site. All three are self-hosted. The edition number counts everything ever published. Light mode is warm paper; add ?theme=light to any URL to force it. Type does not move: hover changes colour and nothing else, and the one chart reveal stands down under prefers-reduced-motion.

Keyboard

/ search, ⌘K palette, j/k through lists, t theme, g n notes, ? help.

Terminal

See /cli. curl waltspence.com/now.txt is the short version.

Source

The site’s code is on GitHub. Content is CC BY-SA 4.0 unless a page says otherwise.