<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Aaron Santo · Lil Strudel</title><description>Aaron Santo is a DevOps engineer and software developer in Utah who builds apps, homelabs and infrastructure as code, and writes about the nerdy parts.</description><link>https://www.lilstrudel.io/</link><item><title>Six OptiPlexes, zero kubeadm: a tour of my homelab</title><link>https://www.lilstrudel.io/blog/homelab/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/homelab/</guid><description>Talos Linux, Cilium speaking BGP to a MikroTik, Rook-Ceph on NVMe and Flux holding it all together. Three years, 256 commits, and at least three commits titled &apos;fix: again?&apos;.</description><pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>homelab</category><category>talos</category><category>ceph</category><category>gitops</category></item><item><title>The 37-second loop: kube-vip, RouterOS and a BGP timer nobody set</title><link>https://www.lilstrudel.io/blog/bgp-hold-timers/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/bgp-hold-timers/</guid><description>My Kubernetes API VIP kept vanishing from the network on a perfectly regular schedule. The cause was three BGP speakers with three different opinions about keepalives, and the fix turned up a Terraform provider bug.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>bgp</category><category>networking</category><category>terraform</category><category>homelab</category></item><item><title>Scale-to-zero Minecraft on Kubernetes, and the backups that silently weren&apos;t</title><link>https://www.lilstrudel.io/blog/minecraft-scale-to-zero/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/minecraft-scale-to-zero/</guid><description>Running a fleet of Minecraft servers on six small nodes means idle ones have to cost nothing. Getting there meant fighting Flux over one field and discovering Velero had been backing up nothing at all.</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>flux</category><category>velero</category><category>homelab</category></item><item><title>A 20 ms clock that can&apos;t drift: streaming audio to Discord in Go</title><link>https://www.lilstrudel.io/blog/discord-audio-pacer/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/discord-audio-pacer/</guid><description>How discord-audio-streamer turns ffmpeg output into a steady stream of Opus frames: absolute deadlines instead of sleeps, two opposite ring-buffer policies, holding audio until encryption is ready, and manufacturing silence for Windows.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><category>go</category><category>audio</category><category>discord</category><category>concurrency</category></item><item><title>Two heaps, one free(): shipping a cgo app on Windows</title><link>https://www.lilstrudel.io/blog/cgo-two-heaps/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/cgo-two-heaps/</guid><description>The first release of discord-audio-streamer died on startup. The second died the moment it joined a voice channel. Both were about which C runtime the Go binary was linked against, and CI now checks it on every build.</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><category>go</category><category>cgo</category><category>windows</category><category>ci</category></item><item><title>Every line has to earn its place: my 2026 dotfiles</title><link>https://www.lilstrudel.io/blog/dotfiles/</link><guid isPermaLink="true">https://www.lilstrudel.io/blog/dotfiles/</guid><description>Arch, Hyprland, Ghostty, tmux with zero plugins, zsh with two and Neovim with twelve on native vim.pack. A 36-line plugin loader, a hand-written prompt, and the numbers that justified each cut.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><category>linux</category><category>neovim</category><category>zsh</category><category>tmux</category><category>hyprland</category></item></channel></rss>