Software · systems · practice

Notes from maintaining small systems.

A working record of measurements, infrastructure choices, and the reasoning that is easiest to lose once something starts working.

Read the latest note

Notebook log

Recent notes

Short records of what worked, what did not, and which details are likely to matter again.


  1. Operations

    An alert needs a next action

    A response contract for user-visible symptoms, deliberate interruptions, clear ownership, safe first moves, and tested notification delivery.

    →

  2. Release safety

    A rollback needs compatible data

    A staged field migration with compatible reads and writes, concurrency-safe backfills, mixed-version tests, and an explicit rollback boundary.

    →

  3. Asynchronous work

    A queue needs an age limit

    A contract for useful queued work: waiting-time measurements, expiry decisions, revision checks, recovery budgets, and deliberate replay.

    →

  4. Verification

    A green check needs a scope

    An evidence record for naming what passed, defining when it expires, and repeating only the checks a change invalidates.

    →

  5. Reliability

    A timeout leaves the outcome unknown

    How to recover from a lost response: inspect operation state, preserve intent, bound retries, and test for duplicate work.

    →

  6. Recovery

    A backup is a recovery claim

    A recovery contract for consistent backups, independent access, clean restores, service checks, timed drills, and deliberate retirement.

    →

  7. Delivery

    A cache key is part of the release

    A release contract for versioned assets, deliberate cache rules, atomic publishing, multi-origin checks, and complete rollback.

    →

  8. Networking

    Closed by default, open on purpose

    A practical lifecycle for short-lived access: explicit leases, verified activity, fail-closed expiry, and outside checks.

    →

  9. Infrastructure

    A preflight for a small public service

    A repeatable check for DNS, TLS, external behavior, monitoring, and recovery before a service becomes public.

    →

  10. Systems

    Keeping small systems legible

    A one-page service record and a five-minute check for keeping a small system understandable.

    →

  11. Software

    Measure before tuning

    A measurement record for preserving conditions, raw observations, variation, and the decision behind a result.

    →

  12. Practice

    Reducing moving parts

    An operational inventory and retirement checklist for removing responsibilities without leaving stale obligations.

    →

Quick reference

Three checks worth repeating

Short enough to use during ordinary work, specific enough to catch the detail that usually gets skipped.

Before a public change

Capture the outside contract

  • Save the current DNS, TLS, redirect, status, and body marker.
  • Write the expected result and the last known-good version.
  • Repeat the same check from outside after the change.
Use the service preflight →

Before tuning

Make the result comparable

  • Name the decision the measurement is meant to change.
  • Fix the input, environment, warm-up, run count, and metric.
  • Keep raw values beside the conclusion and its limits.
Use the measurement record →

Before removing a component

Retire its obligations too

  • Map consumers and stop new writes before deletion.
  • Preserve required state and keep a short reversal window.
  • Revoke identity, routes, checks, alerts, and stale documents.
Use the retirement checklist →

Publishing method

A notebook, not a feed.

Entries are added when a measurement, failure, or design decision is worth preserving. The site has no analytics, comments, or newsletter—just pages that can be read without a client-side application.

How the notebook is kept
Focus
Software, systems, networking
Cadence
Irregular, by design
Delivery
Static files, no tracking