How this site is built and checked

Plain data files go in, Eleventy turns them into static pages, and Netlify serves them. Before anything goes live, 23 checks read the finished site, and 20 of them first prove they still catch a planted mistake. The lines quoted from me are mine, and a check fails the build if one of them changes.

Last real change: Rebuilt this site around the people who actually look me up, Oct 11, 2026.

  1. Netlifyserves the pages, Node 22
  2. 23 checksread the built site
  3. Eleventy 3.1.6builds static pages
  4. TemplatesNunjucks, plain CSS, small JavaScript
  5. Data filesone fact, one file

The ideas it's built on

IdeaWhat it means here
One home for every factA job title, a date or a click count is written down once, with its source and date, and every page reads it from there. Fix source files, never generated output.
Plain pagesEvery page is ready-made HTML that reads fine with JavaScript off. The game, Bella and the menu are extras on top.
Phone firstEvery page is designed on a phone-sized screen first, then checked on bigger ones.
Private by defaultAnalytics count visits and clicks so I can improve the site, and nothing you type is sent. The privacy page lists everything.
Old links still workThe site used to run on WordPress. Every old post address sends you to its new home.

What gets checked before anything goes live

A page that fails a check doesn't publish. The checks test themselves on a planted mistake first, so one that quietly stopped working can't report a pass.

  • Facts

    Every number has a source and a date, and the answers Bella gives match the pages she cites.

  • Privacy and discretion

    Nothing about the companies I work with, and no tracking beyond what the privacy page lists.

  • Reading on a phone

    No sideways scrolling, buttons big enough to tap, text with enough contrast, and the answer on the first screen.

  • Links and search basics

    No broken links, one clear title and description per page, and every old address landing somewhere useful.

Who does what

I decide what gets built, who each page is for, what it says and the standard it has to meet. AI speeds up the building: the templates, the scripts and the checks come together far faster than I could manage alone, and I check what comes back. How I put it in March 2026: “I could audit structured data but couldn't fix the JSON-LD template myself.”

Wherever this site quotes me, the line is copied word for word from something I published. 96 of them are locked in a file, and the build fails if one is changed on a page or drifts from where I first wrote it. Everything else is a draft until I rewrite it.

What I kept from the old site

  • “I keep URL structure boring on purpose.”

    Short paths, no dates, every address listed in one registry file.

  • “If there is no true equivalent, I would rather return a clean 404 than create a misleading redirect.”

    Every old address is listed with its new home, and a check fails any redirect that lands on a missing page or chains through another redirect.

  • “I treat page speed as a usability problem before an SEO metric.”

    Static pages, two fonts served from this site, and only two outside scripts, both for analytics, loaded after the page.

From my February 2026 post, how I structured the old site for search.

About the block game

The block game has its own look and music. The seven piece colors are this site's own, the music is an original chiptune, and it stays off until you turn it on.

Ask Bella

Ask Bella Hayden's corgi. Answers from this site, every fact sourced.

BELLA

WOOF. I'm Bella, Hayden's corgi, and he's my human. Ask me about him: what he does, how he works, what he's built. Every answer here was written ahead, checked against this site, and cites numbered sources you can tap.

How it works: answers written ahead and checked against this site's pages, plus a search of the site that quotes it word for word. Every claim has a numbered source you can tap. Nothing is generated while you wait, nothing is made up, and nothing you type leaves your browser. Every answer, in plain HTML

Top