<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Alvin's Notebook</title>
  <link href="https://www.5457090.xyz/"/>
  <updated>2026-11-12T09:00:00Z</updated>
  <author><name>Alvin</name></author>
  <id>https://www.5457090.xyz/</id>
<entry>
  <title>A minimal open platform for self-hosted services</title>
  <link href="https://www.5457090.xyz/posts/openapi-guide.html"/>
  <id>https://www.5457090.xyz/posts/openapi-guide.html</id>
  <updated>2026-11-12T09:00:00Z</updated>
  <summary>The services on this network needed one API entry point: notes on auth, error-code conventions and the smallest workable gateway.</summary>
</entry>
<entry>
  <title>Dotfiles, with discipline</title>
  <link href="https://www.5457090.xyz/posts/dotfiles-discipline.html"/>
  <id>https://www.5457090.xyz/posts/dotfiles-discipline.html</id>
  <updated>2026-10-06T09:00:00Z</updated>
  <summary>Fifteen years of dotfiles taught me that the repo matters less than the rules for what never enters it.</summary>
</entry>
<entry>
  <title>Fan curves and PWM: the non-linear parts nobody mentions</title>
  <link href="https://www.5457090.xyz/posts/fan-curves-and-pwm.html"/>
  <id>https://www.5457090.xyz/posts/fan-curves-and-pwm.html</id>
  <updated>2026-07-22T09:00:00Z</updated>
  <summary>Tuning NAS fans: PWM duty vs actual RPM is not what the datasheet implies, and hysteresis matters more than the curve.</summary>
</entry>
<entry>
  <title>Server initialization checklist (2026 edition)</title>
  <link href="https://www.5457090.xyz/posts/server-init-checklist-2026.html"/>
  <id>https://www.5457090.xyz/posts/server-init-checklist-2026.html</id>
  <updated>2026-05-02T09:00:00Z</updated>
  <summary>The checklist every new box goes through, updated this year in the SSH and kernel-parameter sections.</summary>
</entry>
<entry>
  <title>SQLite notes from the trenches</title>
  <link href="https://www.5457090.xyz/posts/sqlite-notes.html"/>
  <id>https://www.5457090.xyz/posts/sqlite-notes.html</id>
  <updated>2026-03-14T09:00:00Z</updated>
  <summary>WAL mode, busy timeouts and the pragmatics of using SQLite for services people assume need Postgres.</summary>
</entry>
<entry>
  <title>Rewriting this blog: from Hexo to 300 lines of Python</title>
  <link href="https://www.5457090.xyz/posts/blog-rewrite-2026.html"/>
  <id>https://www.5457090.xyz/posts/blog-rewrite-2026.html</id>
  <updated>2026-01-08T09:00:00Z</updated>
  <summary>After three years on Hexo, the blog moved to a hand-written generator. The migration notes and the trade-offs.</summary>
</entry>
<entry>
  <title>2025 in review: the measurement year</title>
  <link href="https://www.5457090.xyz/posts/2025-in-review.html"/>
  <id>https://www.5457090.xyz/posts/2025-in-review.html</id>
  <updated>2025-12-28T09:00:00Z</updated>
  <summary>Governors, DNS samples, power fingerprints: most posts this year were experiments. What they changed in practice.</summary>
</entry>
<entry>
  <title>Appliance fingerprints: teaching software to read a power meter</title>
  <link href="https://www.5457090.xyz/posts/home-energy-fingerprints.html"/>
  <id>https://www.5457090.xyz/posts/home-energy-fingerprints.html</id>
  <updated>2025-10-05T09:00:00Z</updated>
  <summary>Fourteen months of plug-level power samples turned into a tiny classifier that flags the kettle pretending to be the AC.</summary>
</entry>
<entry>
  <title>Go concurrency notes: channel and context boundaries</title>
  <link href="https://www.5457090.xyz/posts/go-concurrency-notes.html"/>
  <id>https://www.5457090.xyz/posts/go-concurrency-notes.html</id>
  <updated>2025-09-18T09:00:00Z</updated>
  <summary>Notes from re-reading on concurrency: when to reach for a channel, when for context, and when for neither.</summary>
</entry>
<entry>
  <title>How I sample DNS latency without lying to myself</title>
  <link href="https://www.5457090.xyz/posts/dns-sampling-setup.html"/>
  <id>https://www.5457090.xyz/posts/dns-sampling-setup.html</id>
  <updated>2025-07-08T09:00:00Z</updated>
  <summary>Method notes for the DNS comparison experiment: sampling design, clock discipline and the bias traps I fell into.</summary>
</entry>
<entry>
  <title>CPU governors on an always-on home server: measured, not guessed</title>
  <link href="https://www.5457090.xyz/posts/cpu-governors-home-server.html"/>
  <id>https://www.5457090.xyz/posts/cpu-governors-home-server.html</id>
  <updated>2025-05-11T09:00:00Z</updated>
  <summary>powersave vs schedutil vs performance on a 1-core box: watts, latency and the one workload where it mattered.</summary>
</entry>
<entry>
  <title>Three reasons I moved from cron to systemd timers</title>
  <link href="https://www.5457090.xyz/posts/systemd-timer-over-cron.html"/>
  <id>https://www.5457090.xyz/posts/systemd-timer-over-cron.html</id>
  <updated>2025-03-12T09:00:00Z</updated>
  <summary>After a decade of cron, the move to systemd timers came down to logging, dependencies and missed-run recovery.</summary>
</entry>
<entry>
  <title>2024 in review: boring systems, quietly compounding</title>
  <link href="https://www.5457090.xyz/posts/2024-in-review.html"/>
  <id>https://www.5457090.xyz/posts/2024-in-review.html</id>
  <updated>2024-12-31T09:00:00Z</updated>
  <summary>A year of maintenance-heavy work: backups, drive health, and writing down procedures so 3am me does not improvise.</summary>
</entry>
<entry>
  <title>RSS is still alive, and it is quietly winning</title>
  <link href="https://www.5457090.xyz/posts/rss-is-still-alive.html"/>
  <id>https://www.5457090.xyz/posts/rss-is-still-alive.html</id>
  <updated>2024-10-20T09:00:00Z</updated>
  <summary>Platforms come and go; the feed format from 1999 keeps doing its job. Notes on why this site ships full-text RSS.</summary>
</entry>
<entry>
  <title>Four years of NAS drives: the health report</title>
  <link href="https://www.5457090.xyz/posts/nas-drive-health-report.html"/>
  <id>https://www.5457090.xyz/posts/nas-drive-health-report.html</id>
  <updated>2024-08-07T09:00:00Z</updated>
  <summary>SMART data from four years of always-on drives: two reallocated sectors, zero failures, and why I still keep two copies.</summary>
</entry>
</feed>
