pieterpel
About

I build systems, then write down what building them taught me.

I'm Pieter Pel. I spend my time on declarative infrastructure, agents that play games, and the plumbing in between — and this is where I write it down.

What this site is

An engineering notebook, not a publication. Most writing about systems stops at the diagram; here the story is on the surface and the config is underneath, pulled from the repositories at build time. That means a claim on a page and the code behind it can't drift apart.

The dead ends stay in: the setting that silently did nothing, the alert that never fired, the place where I picked one reasonable option over another — and why.

What it runs on

Everything here is grounded in a system I actually run: NixOS on a Raspberry Pi 400 under the TV and a Hetzner box that holds the services, a tailnet between them, and whatever I'm currently trying to make work. When a post says "this is how it is wired up", the wiring is in the repo it links to.

How it is built

Hand-written Astro, static HTML, near-zero JavaScript, no trackers, self-hosted fonts, one accent colour. Sources are read out of the repositories during the build, so a quoted config block is never a paraphrase.

Where the code is

Two repositories hold all of it:

  • private-mono (Codeberg) — The monorepo this site is built from: the NixOS flakes, the services, the agent code, and these posts.
  • dotfiles (GitHub) — Machine-level config — the pieces that follow me from one box to the next.

Contact

Email [email protected], or find me on Codeberg. If something here is wrong, or you run something similar and got further with it, I'd like to hear about it.