<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RodHat</title><description>MOTD, Console Tips, and Rod&apos;s Tales.</description><link>https://rodhat.com/</link><item><title>Six years of WireGuard in the Linux kernel. I was wrong to be skeptical.</title><link>https://rodhat.com/motd/2026-08-24-wireguard-six-years-kernel/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-24-wireguard-six-years-kernel/</guid><description>WireGuard landed in Linux 5.6 in April 2020. Six years later, it&apos;s in every major OS, every cloud provider&apos;s toolbox, and the cryptography audit held. The 4,000-line kernel module that was supposed to be too opinionated turned out to be the right kind of opinionated.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your process doesn&apos;t need 400 syscalls. seccomp-BPF lets you say so.</title><link>https://rodhat.com/tips/2026-08-24-seccomp-bpf-syscall-filter/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-24-seccomp-bpf-syscall-filter/</guid><description>seccomp-BPF loads a classic BPF filter into the kernel that runs on every syscall your process makes. Give it a whitelist, everything else gets EPERM or SIGKILL. Here&apos;s how the filter model works, how libseccomp makes it tolerable, and how to audit what a real binary actually needs.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate></item><item><title>iptables is a shim now. The shim has edge cases. Rewrite your rules.</title><link>https://rodhat.com/motd/2026-08-23-iptables-nftables-done/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-23-iptables-nftables-done/</guid><description>Debian 13 Trixie completed the transition — iptables the binary now calls the nftables backend across every major Linux distro. The legacy xt_* kernel path still exists, but it&apos;s not the default and it&apos;s on the removal list. Twelve years after nftables landed, the ecosystem caught up.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The pool was full of dead connections</title><link>https://rodhat.com/tales/2026-08-23-the-pool-was-full-of-dead-connections/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-23-the-pool-was-full-of-dead-connections/</guid><description>An intermittent burst of broken-pipe database errors had been logged as &quot;flaky&quot; for two months before anyone looked closely enough to notice they were always the first query on a connection. The connection pool was handing out corpses.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>cgroups v2 is just files. Here&apos;s how to use them without touching systemd.</title><link>https://rodhat.com/tips/2026-08-23-cgroups-v2-without-systemd/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-23-cgroups-v2-without-systemd/</guid><description>Linux cgroups v2 exposes memory, CPU, and I/O limits through a plain filesystem interface under /sys/fs/cgroup/. No systemd, no container runtime — write to files, read the results. Here&apos;s the real workflow for memory.max, cpu.max, freezer, and io.max.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>OpenZFS 3.0 ships the RAIDZ expansion and the dedup engine they finally got right</title><link>https://rodhat.com/motd/2026-08-22-openzfs-3-raidz-expand-dedup/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-22-openzfs-3-raidz-expand-dedup/</guid><description>OpenZFS 3.0 landed with RAIDZ expansion, a ground-up rewrite of the dedup engine, and block cloning. Three features that have been &quot;coming soon&quot; for most of the past decade are now in a release build. Worth looking at.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ftrace has been on your machine since 2.6.27. Here&apos;s how to actually use it.</title><link>https://rodhat.com/tips/2026-08-22-ftrace-kernel-function-tracer/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-22-ftrace-kernel-function-tracer/</guid><description>ftrace is Linux&apos;s built-in kernel function tracer, accessible directly via /sys/kernel/debug/tracing/. No compiler, no LLVM, no kernel headers — write to files, read call graphs. Here&apos;s the workflow for function tracing, call-graph timing, IRQ latency, and isolated trace instances.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>`sudo` wrote its last heap overflow in C. The Rust rewrite shipped.</title><link>https://rodhat.com/motd/2026-08-21-sudo-rs-production-ready/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-21-sudo-rs-production-ready/</guid><description>sudo-rs is production-ready for most deployments. A setuid-root binary sitting at uid 0, accumulating privilege-escalation CVEs for four decades, is exactly the right target for a memory-safe rewrite. This one is hard to argue with.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your shell scripts crash. trap EXIT is why the mess does not have to survive.</title><link>https://rodhat.com/tips/2026-08-21-trap-signal-handling/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-21-trap-signal-handling/</guid><description>The shell trap builtin intercepts signals and the EXIT pseudo-signal to run cleanup code regardless of how a script dies. Most scripts skip it entirely. Here is how to use it correctly, including the subshell gotchas and the ERR trap edge cases that bite people.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>`getrandom()` skips the kernel now. Took long enough.</title><link>https://rodhat.com/motd/2026-08-20-getrandom-vdso/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-20-getrandom-vdso/</guid><description>Linux 6.11 shipped vDSO support for getrandom(). Every TLS handshake, UUID, and ephemeral key in your system is now getting random bytes from userspace without a syscall trap. The syscall was added in 2014. The optimization arrived a decade later. The implementation is correct. Both things are true.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The OOM killer was doing its job</title><link>https://rodhat.com/tales/2026-08-20-the-oom-killer-was-doing-its-job/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-20-the-oom-killer-was-doing-its-job/</guid><description>A slow memory leak ran undetected for five weeks because the kernel&apos;s out-of-memory killer, executing its heuristic correctly, kept choosing the monitoring agent over the leaking service. The pager never fired. The monitoring gaps were there in the data the whole time.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ps lies about memory. /proc/smaps_rollup does not.</title><link>https://rodhat.com/tips/2026-08-20-smaps-pss-memory-accounting/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-20-smaps-pss-memory-accounting/</guid><description>RSS from ps aux double-counts shared pages and makes every process look more expensive than it is. PSS from /proc/PID/smaps_rollup gives you actual per-process memory ownership. Here is how to read it.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Python dropped the GIL. Everything you marked &apos;thread-safe&apos; lied.</title><link>https://rodhat.com/motd/2026-08-19-python-without-the-gil/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-19-python-without-the-gil/</guid><description>Python&apos;s free-threaded build has been shipping for two release cycles now. The GIL is optional, increasingly the default build on major distros, and the ecosystem is discovering that &quot;thread-safe&quot; was a comment in a docstring, not a guarantee.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ss -i shows you what netstat never could: TCP internals live</title><link>https://rodhat.com/tips/2026-08-19-ss-tcp-internals/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-19-ss-tcp-internals/</guid><description>Everyone knows ss -tulnp. Almost nobody uses ss -i, which surfaces congestion window size, RTT, retransmit counts, and send/receive buffer fill — directly from the kernel, no tool required.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>OpenSSH 10.0 drops DSA, CBC, and SHA-1 HMAC. About damn time.</title><link>https://rodhat.com/motd/2026-08-18-openssh-10-drops-the-fossils/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-18-openssh-10-drops-the-fossils/</guid><description>OpenSSH 10.0 removes DSA keys, CBC cipher modes, and SHA-1 HMAC completely. Not deprecated with a warning. Removed. If your network gear or embedded systems are still negotiating any of these, your next maintenance window just got scheduled for you.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>nohup, disown, setsid: what each actually does and which one you want</title><link>https://rodhat.com/tips/2026-08-18-nohup-disown-setsid-terminal-detachment/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-18-nohup-disown-setsid-terminal-detachment/</guid><description>Three tools for keeping a process alive after you close the terminal. They do not do the same thing. Here is the kernel-level difference, and when each one applies.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Go 1.27 ships. I was wrong about PGO. I&apos;m still not wrong about iterators.</title><link>https://rodhat.com/motd/2026-08-17-go-127-ships-pgo-and-iterators-settle/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-17-go-127-ships-pgo-and-iterators-settle/</guid><description>Go 1.27 lands today. Profile-guided optimization is showing 12-18% gains on real HTTP workloads with zero code changes. The iter package is now threaded through the entire standard library. Rod has updated some priors. Not all of them.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The number 1024 was not a coincidence</title><link>https://rodhat.com/tales/2026-08-17-the-number-1024-was-not-a-coincidence/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-17-the-number-1024-was-not-a-coincidence/</guid><description>A file descriptor limit from 2003 survived three infrastructure migrations and one complete platform rewrite because nobody ever questioned a number that had always been there. It bit us at 2am on a Tuesday.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ip netns is what container networking actually is. No daemon required.</title><link>https://rodhat.com/tips/2026-08-17-ip-netns-network-namespaces/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-17-ip-netns-network-namespaces/</guid><description>Network namespaces give a process its own routing table, its own interfaces, and its own firewall rules — in milliseconds. Docker creates them. Kubernetes creates them. You can too, from ip, without touching a container runtime.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Linux 7.2 ships. The AI noise finally cleared the kernel&apos;s basement.</title><link>https://rodhat.com/motd/2026-08-16-linux-72-ships-ai-cleaned-the-basement/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-16-linux-72-ships-ai-cleaned-the-basement/</guid><description>Linux 7.2 stable lands today with cache-aware scheduling, MGLRU gains that doubled MongoDB throughput in benchmarks, and a pile of driver removals nobody asked for — except the LLMs, who wouldn&apos;t stop filing bugs about them.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The pipeline succeeded. We found out from a customer.</title><link>https://rodhat.com/tales/2026-08-16-the-pipeline-that-succeeded-in-silence/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-16-the-pipeline-that-succeeded-in-silence/</guid><description>A deployment that broke production ran undetected for forty minutes because the notification step was written to never fail, and the monitoring alert that should have fired went to the same broken endpoint.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>bpftrace gives Linux what FreeBSD had in 2005. The one-liners are worth the wait.</title><link>https://rodhat.com/tips/2026-08-16-bpftrace-one-liners/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-16-bpftrace-one-liners/</guid><description>dtrace showed up on Solaris in 2004, shipped in FreeBSD 7 in 2008, and Linux users spent the next decade pretending strace was sufficient. bpftrace is the real answer — dynamic kernel tracing, histograms, stack walks, zero overhead when idle.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>FreeBSD 16 evicted the last GPL tenant from base. The kernel has thoughts.</title><link>https://rodhat.com/motd/2026-08-15-freebsd-base-system-gpl-free/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-15-freebsd-base-system-gpl-free/</guid><description>FreeBSD replaced dialog with bsddialog and declared its base system GPL-free. Then someone looked at the kernel. Thirty years of license hygiene, and it ends with &quot;oops, still some in there.&quot;</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The postrotate script worked. We had no logs.</title><link>https://rodhat.com/tales/2026-08-15-the-postrotate-that-fired-into-the-void/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-15-the-postrotate-that-fired-into-the-void/</guid><description>Three months of production logs, all gone. logrotate ran clean on schedule every week. The daemon was healthy and writing the whole time. The postrotate signal was firing correctly — just to a PID that had been dead since deployment day.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>taskset pins a process to specific CPUs. numactl keeps its memory local too.</title><link>https://rodhat.com/tips/2026-08-15-taskset-numactl-cpu-pinning/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-15-taskset-numactl-cpu-pinning/</guid><description>The Linux scheduler moves processes between cores. Sometimes that churn is the bottleneck — cold cache lines, NUMA cross-node fetches, latency spikes with no obvious cause. taskset and numactl are blunt instruments that work.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The post-quantum key exchange already happened. You didn&apos;t notice. Good.</title><link>https://rodhat.com/motd/2026-08-14-post-quantum-key-exchange-is-already-here/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-14-post-quantum-key-exchange-is-already-here/</guid><description>NIST finalized ML-KEM two years ago. OpenSSH shipped the hybrid key exchange into default KEX negotiation and most connections quietly upgraded. The certificate half of the post-quantum transition is not going to be that clean.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your kernel ships a CPU profiler. perf(1) is the key.</title><link>https://rodhat.com/tips/2026-08-14-perf-stat-record/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-14-perf-stat-record/</guid><description>perf stat hands you hardware performance counters — cycles, cache misses, branch mispredictions — in seconds. perf record samples call stacks at full speed. Both are already installed and beat any SaaS APM for understanding CPU-bound problems.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your browser encrypted your DNS queries. It also decided who gets to read them.</title><link>https://rodhat.com/motd/2026-08-13-encrypted-dns-not-what-you-think/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-13-encrypted-dns-not-what-you-think/</guid><description>DNS-over-HTTPS is a correct answer to a real problem — cleartext DNS has been leaking every hostname you visit since 1983. The way browsers deployed it, pointing users to Cloudflare and Google by default without explanation, is a different story. The encryption is real. The &apos;privacy&apos; framing is doing a lot of work.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The storage was fine. We were swapping.</title><link>https://rodhat.com/tales/2026-08-13-the-storage-was-fine-we-were-swapping/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-13-the-storage-was-fine-we-were-swapping/</guid><description>Three weeks, two engineers, one open storage vendor ticket, and roughly forty collective hours chasing read latency on a ZFS pool. The pool was fine the whole time. There was a swapfile nobody remembered adding seven months earlier.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>strace -c is a profiler. Stop spraying and praying.</title><link>https://rodhat.com/tips/2026-08-13-strace-not-a-firehose/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-13-strace-not-a-firehose/</guid><description>Most people open strace, get buried in output, and close the terminal. Four flags fix that — -c counts, -e filters, -P follows a single path, -T times each call. Here is how strace is actually supposed to work.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>POSIX finally standardized .PHONY. Only took thirty years of everyone using it.</title><link>https://rodhat.com/motd/2026-08-12-posix-2024-make/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-12-posix-2024-make/</guid><description>POSIX.1-2024 updated the make utility specification for the first time since the early 90s. The .PHONY target — which every make implementation has shipped for three decades without being in the spec — is now actually standard. The standardization story is a better parable about how POSIX works than anything the standards body would tell you itself.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your container is six clone(2) flags. nsenter gets you back in.</title><link>https://rodhat.com/tips/2026-08-12-nsenter-linux-namespaces/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-12-nsenter-linux-namespaces/</guid><description>Containers are six kernel namespaces and nothing else. nsenter gets you inside from the host without docker exec, without touching the image, and without whatever tooling the vendor decided to ship.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Rust in the Linux kernel is not failing. I need to update my priors.</title><link>https://rodhat.com/motd/2026-08-11-rust-linux-kernel-not-failing/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-11-rust-linux-kernel-not-failing/</guid><description>When Linus merged Rust support in 6.1, I gave it eighteen months before the borrow-checker arguments turned into flame wars and the whole experiment got ripped out. Real drivers are shipping. I was wrong about the trajectory.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>socat is the Swiss Army knife you keep reaching past</title><link>https://rodhat.com/tips/2026-08-11-socat-swiss-army-socket/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-11-socat-swiss-army-socket/</guid><description>netcat forwards a port. socat forwards a port, wraps it in TLS, splices it to a Unix socket, proxies serial-over-TCP, and lets you inject raw bytes mid-stream. You already have it installed. Here is how to actually use it.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Git&apos;s SHA-256 transition is finally not vaporware</title><link>https://rodhat.com/motd/2026-08-10-git-sha256-finally-moving/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-10-git-sha256-finally-moving/</guid><description>Six years after the object-format flag landed in 2.29, SHA-256 repos are actually getting real hosting support. The design they ended up with — capability advertisement plus translation proxies — is genuinely clever. I hate that it took this long and I respect how they did it.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Python finally killed the GIL. The code that needed it left years ago.</title><link>https://rodhat.com/motd/2026-08-10-python-free-threaded-stable/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-10-python-free-threaded-stable/</guid><description>Free-threaded CPython is stable in 3.14. After thirty years, import threading will do what you thought it did. RodHat on why the right fix took this long, who actually benefits, and why the Python you probably care about is either unaffected or slower.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The Redis fork everyone expected to die is what you should be running</title><link>https://rodhat.com/motd/2026-08-10-valkey-redis-fork-survived/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-10-valkey-redis-fork-survived/</guid><description>In March 2024, Redis relicensed and AWS/Google forked it as Valkey under the Linux Foundation. I gave it 18 months before it turned into a governance zombie. Valkey 2.0 is shipping and I was wrong.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The change was correct. Deploying it to every region simultaneously was not.</title><link>https://rodhat.com/tales/2026-08-10-the-config-change-that-went-everywhere-at-once/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-10-the-config-change-that-went-everywhere-at-once/</guid><description>A one-line config change, reviewed, tested, and correct in every environment we tried it in. It went to all six regions in the same rollout because config isn&apos;t code, and config doesn&apos;t need a staged rollout. It does now.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>dig +trace, and how to tell whose DNS is actually lying to you</title><link>https://rodhat.com/tips/2026-08-10-dig-trace-dns-debugging/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-10-dig-trace-dns-debugging/</guid><description>&quot;It&apos;s a DNS problem&quot; is where debugging stops. +trace walks the delegation from the root yourself, +norecurse asks a resolver what it has cached without letting it go fetch, and together they tell you whether the bad answer is the zone, the resolver, or the client.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your Alpine container runs musl, not glibc. Most of you have no idea what that means.</title><link>https://rodhat.com/motd/2026-08-09-alpine-musl-not-glibc/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-09-alpine-musl-not-glibc/</guid><description>Alpine Linux is the most-pulled base image on Docker Hub. It ships musl libc, not glibc. Those are not interchangeable. RodHat on the quiet ABI divide that bites engineers every week and explains why half the &quot;mysterious container crash&quot; tickets exist.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>pledge() turns 10. Linux still doesn&apos;t have anything half as clean.</title><link>https://rodhat.com/motd/2026-08-09-pledge-unveil-10-years/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-09-pledge-unveil-10-years/</guid><description>OpenBSD&apos;s pledge(2) landed in 5.9 in 2016. Ten years later, Linux has Landlock (good) and seccomp-bpf (powerful and painful) and still nothing that lets a process sandbox itself in a single readable line. RodHat on why API simplicity is a security property.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>systemd wants to replace sudo. I hate that they&apos;re not wrong about why.</title><link>https://rodhat.com/motd/2026-08-09-systemd-run0-sudo-replacement/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-09-systemd-run0-sudo-replacement/</guid><description>run0 has been in systemd 256+ for over two years now and distros are starting to actually ship it. The scope creep argument is real. The security critique of sudo is also real. Holding both is annoying.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your cron job is running twice and that&apos;s why the numbers are wrong</title><link>https://rodhat.com/tips/2026-08-09-flock-cron-overlap/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-09-flock-cron-overlap/</guid><description>A job that usually takes four minutes on a five-minute schedule will eventually take six, and then you have two copies racing. flock fixes it in one line — and the pidfile you were about to write instead is broken in ways flock isn&apos;t.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Unprivileged eBPF is getting locked out by default. It&apos;s five years overdue.</title><link>https://rodhat.com/motd/2026-08-08-ebpf-unprivileged-lockdown/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-08-ebpf-unprivileged-lockdown/</guid><description>The Linux kernel project is landing a config change that makes kernel.unprivileged_bpf_disabled permanent by default. RodHat on why unprivileged BPF was always an attack surface in a trenchcoat, and why your bpftrace workflow is fine.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The alert had been firing for eight months and it was right the whole time</title><link>https://rodhat.com/tales/2026-08-08-the-alert-that-fired-for-eight-months/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-08-the-alert-that-fired-for-eight-months/</guid><description>A rule that pages nightly and gets acknowledged nightly isn&apos;t monitoring, it&apos;s a ritual. We had trained an entire team to dismiss a specific alert without reading it, and then it started telling us about something new.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Two uplinks, one box, and the reply going out the wrong interface</title><link>https://rodhat.com/tips/2026-08-08-policy-routing-ip-rule/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-08-policy-routing-ip-rule/</guid><description>The routing table picks a route by destination. When you have two upstreams, replies to traffic that arrived on the second one leave via the first, get dropped by the upstream&apos;s anti-spoofing, and vanish. ip rule and a second routing table fix it properly.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Observability priced per gigabyte means you log least when you need it most</title><link>https://rodhat.com/motd/2026-08-07-paying-per-log-line-during-an-outage/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-07-paying-per-log-line-during-an-outage/</guid><description>Ingest-based pricing creates an incentive that fires exactly backwards: the incident that generates the most telemetry is the one that costs the most to observe. Teams respond by sampling, and then wonder why the postmortem has a gap in the middle.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Upgrade like you can undo it, because with bectl you can</title><link>https://rodhat.com/tips/2026-08-07-zfs-boot-environments-bectl/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-07-zfs-boot-environments-bectl/</guid><description>A ZFS boot environment is a bootable clone of your root dataset. Make one before every upgrade and a wrecked kernel becomes a reboot, not a recovery-media evening. The bectl walk, and the loader trick that saves you when the new one won&apos;t boot.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The scary FreeBSD advisory this week isn&apos;t an RCE — it&apos;s a privilege check that slipped</title><link>https://rodhat.com/motd/2026-08-06-freebsd-ktrace-jail-privilege-regression/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-06-freebsd-ktrace-jail-privilege-regression/</guid><description>FreeBSD-SA-26:53.ktrace is a regression in how ktrace is gated inside jails. No dramatic exploit, just an isolation boundary that quietly stopped meaning what you thought it meant.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The observability platform was down during the outage. Good. Now do it with your hands.</title><link>https://rodhat.com/tales/2026-08-06-observability-was-down-do-it-with-your-hands/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-06-observability-was-down-do-it-with-your-hands/</guid><description>A junior engineer froze during a production fire because the SaaS dashboard that watches production was part of the fire. RodHat on the tools that were on every Unix box before the kid was born, the racket that sold competence back to us as a monthly invoice, and why the fire isn&apos;t out.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Let pf keep the ban list so you don&apos;t have to</title><link>https://rodhat.com/tips/2026-08-06-pf-tables-anchors-self-updating-firewall/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-06-pf-tables-anchors-self-updating-firewall/</guid><description>pf tables and anchors turn a static ruleset into a firewall that bans its own attackers and updates without a reload. Real pfctl commands, real persistence, real expiry — not a cron job that greps auth.log like it&apos;s 2004.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Read a wedged process with your hands, not a dashboard</title><link>https://rodhat.com/tips/2026-08-06-read-a-wedged-process-without-a-dashboard/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-06-read-a-wedged-process-without-a-dashboard/</guid><description>A process is hung and the graphs won&apos;t say why. Here&apos;s the /proc, ps, strace, and dmesg walk that finds a stuck worker in about ninety seconds — no agent, no vendor, no login.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>&quot;We&apos;ll just stay on LTS&quot; stopped being a strategy when LTS became two years</title><link>https://rodhat.com/motd/2026-08-05-lts-forever-is-over/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-05-lts-forever-is-over/</guid><description>Linux kernel long-term support dropped from six years to two, and the reason given was honest: almost nobody was testing the old branches. Stability was never a property of the version number. It was a property of somebody doing the work.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your restart policy is deleting the crime scene</title><link>https://rodhat.com/tips/2026-08-05-restart-loop-evidence/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-05-restart-loop-evidence/</guid><description>Automatic restarts keep services available, but an aggressive restart loop can erase the timing, logs, cores, and state needed to understand why a process failed. Preserve evidence before recovery becomes amnesia.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your backups are fine and one account suspension deletes all of them</title><link>https://rodhat.com/motd/2026-08-04-your-backup-is-one-account-lockout-away/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-04-your-backup-is-one-account-lockout-away/</guid><description>Three copies, two media, one offsite — and all three sitting under a single cloud identity that a fraud algorithm can disable at 4am with no appeal path. The rule was written when a copy meant a physical object somebody had to come and take.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The health check was green because it was checking the wrong damn thing</title><link>https://rodhat.com/tales/2026-08-04-health-check-wrong-service/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-04-health-check-wrong-service/</guid><description>A service can answer HTTP 200 while its queue is wedged, its database writes are failing, and every useful request is dying. RodHat on health checks that prove process existence instead of service capability.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Stop waiting beside tcpdump like it owes you an incident</title><link>https://rodhat.com/tips/2026-08-04-tcpdump-ring-buffer/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-04-tcpdump-ring-buffer/</guid><description>Intermittent network failures do not happen while you are watching. Use tcpdump&apos;s rotating capture files, size limits, and post-trigger preservation to keep the packets that existed before the pager fired.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>FreeBSD 14.5 branch week is where your weird hardware gets a vote</title><link>https://rodhat.com/motd/2026-08-03-freebsd-14-5-branch-week/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-03-freebsd-14-5-branch-week/</guid><description>FreeBSD 14.5 branches on August 7 and BETA1 starts the same day. RodHat explains why the useful part of a minor release is the short window when boring hardware reports can still change it.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Staging had its own everything, except the one thing that mattered</title><link>https://rodhat.com/tales/2026-08-03-staging-shared-the-production-database/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-03-staging-shared-the-production-database/</guid><description>Separate servers, separate config, separate deploy pipeline, a big banner saying STAGING. And a database connection string that pointed, through two layers of indirection, at production. We found out during a load test.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Your shell pipeline succeeded because the last command was polite</title><link>https://rodhat.com/tips/2026-08-03-pipeline-exit-status/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-03-pipeline-exit-status/</guid><description>A failed producer can disappear behind a successful consumer. RodHat explains pipeline exit status, pipefail, PIPESTATUS, and how to stop backup scripts from lying.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>If the AI does the junior work, where do senior engineers come from in 2036?</title><link>https://rodhat.com/motd/2026-08-02-who-trains-the-seniors/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-02-who-trains-the-seniors/</guid><description>Every argument about AI and junior developers is about this quarter&apos;s headcount. The interesting question is a decade out: seniority is produced by doing unglamorous work under supervision, and that&apos;s exactly the work being automated first.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate></item><item><title>&quot;Cannot assign requested address&quot; is not a DNS problem. You&apos;re out of ports.</title><link>https://rodhat.com/tips/2026-08-02-ephemeral-port-exhaustion/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-02-ephemeral-port-exhaustion/</guid><description>A client making thousands of short-lived outbound connections exhausts the ephemeral range, and every tuple sits in TIME_WAIT for a minute afterwards. Here&apos;s how to confirm it in one command and the three fixes, ranked by how much you&apos;ll regret them.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The diff nobody wrote and everybody approved</title><link>https://rodhat.com/motd/2026-08-01-ai-slop-in-the-diff/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-01-ai-slop-in-the-diff/</guid><description>AI coding tools now generate a meaningful percentage of commits at shops that have adopted them. RodHat on what happens to institutional knowledge when the author of the diff has never been paged.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>io_uring keeps producing the same class of CVE and it&apos;s time to call that structural</title><link>https://rodhat.com/motd/2026-08-01-io-uring-structural-cve/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-01-io-uring-structural-cve/</guid><description>Another batch of privilege-escalation bugs in io_uring dropped this week. RodHat explains why the design keeps generating the same vuln class, and what to actually do about it in your container environments.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>OpenSSH is finally done pretending your 2009 SSH config was acceptable</title><link>https://rodhat.com/motd/2026-08-01-openssh-drops-legacy/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-08-01-openssh-drops-legacy/</guid><description>The OpenSSH project continues ripping out legacy cryptography — DSA keys gone, SHA-1 gone, post-quantum key exchange on by default. RodHat runs through what breaks and what you should have burned years ago anyway.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>We wrote the retry logic to survive a blip. It turned a blip into four hours.</title><link>https://rodhat.com/tales/2026-08-01-the-retry-storm/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-08-01-the-retry-storm/</guid><description>One backend got slow for ninety seconds. Every client retried, in lockstep, three times, with no jitter. The retries were larger than the original traffic, the backend never recovered, and every fix we tried made it worse until we did the thing nobody wanted to do.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>awk has hash maps, and that&apos;s why you don&apos;t need the Python script</title><link>https://rodhat.com/tips/2026-08-01-awk-associative-arrays/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-08-01-awk-associative-arrays/</guid><description>Most people&apos;s awk stops at print $7. Associative arrays, END blocks and a two-line accumulator turn it into the right tool for ninety percent of the log questions people currently write a script for — and it runs on a box with nothing installed.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CISA wants a body count on your malloc() calls. They&apos;re not entirely wrong.</title><link>https://rodhat.com/motd/2026-07-31-memory-safe-mandate/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-31-memory-safe-mandate/</guid><description>Federal agencies are now demanding memory-safety roadmaps from software vendors. RodHat runs through what the mandate gets right, what it gets delusional, and what happens when bureaucrats discover that C is load-bearing.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Another vendor decided the CLI was holding their users back. They&apos;re wrong.</title><link>https://rodhat.com/motd/2026-07-31-vendor-killed-the-cli/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-31-vendor-killed-the-cli/</guid><description>A DevOps tooling vendor is sunsetting their CLI in favor of a &quot;streamlined cloud dashboard experience.&quot; RodHat has opinions, and a survival guide.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate></item><item><title>zfs send is the backup tool you already have and probably aren&apos;t using</title><link>https://rodhat.com/tips/2026-07-31-zfs-send-recv-replication/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-31-zfs-send-recv-replication/</guid><description>An incremental zfs send moves exactly the blocks that changed, verified end to end, with no file-tree walk at all. The full replication pipeline is one command, and the resume token turns a failed 3TB transfer from a restart into a continuation.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A managed database vendor changed its pricing model again and called it &apos;simplification&apos;</title><link>https://rodhat.com/motd/2026-07-30-database-vendor-pricing-change/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-30-database-vendor-pricing-change/</guid><description>Another usage-based pricing overhaul from a managed database vendor, filed under simplification. RodHat translates.</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The temporary NFS mount that ran production for six years</title><link>https://rodhat.com/tales/2026-07-30-the-temporary-nfs-mount/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-30-the-temporary-nfs-mount/</guid><description>Somebody stood it up in an afternoon to unblock a launch. It had no monitoring, no owner, no backup, and no entry in any diagram. It survived two datacentre moves, a company acquisition, and every engineer who knew it existed.</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The six rsync flags worth knowing, and the one that builds you free snapshots</title><link>https://rodhat.com/tips/2026-07-30-rsync-flags-that-matter/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-30-rsync-flags-that-matter/</guid><description>-a doesn&apos;t preserve what you think it preserves. --inplace and --partial solve opposite problems and combining them wrong loses data. And --link-dest turns rsync into a deduplicating snapshot system in one flag.</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Another wave of typosquat packages hit a major registry, and the fix everyone proposes still won&apos;t ship</title><link>https://rodhat.com/motd/2026-07-29-package-registry-typosquat-wave/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-29-package-registry-typosquat-wave/</guid><description>The same typosquatting attack pattern, the same registry, the same &apos;we should really fix this&apos; thread. RodHat&apos;s seen this loop enough times to name it.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Debug a TLS handshake by hand with openssl s_client</title><link>https://rodhat.com/tips/2026-07-29-openssl-s-client-tls-debugging/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-29-openssl-s-client-tls-debugging/</guid><description>&quot;Certificate verify failed&quot; is four different bugs wearing one error message. s_client shows you the chain the server actually sent, in order, with the verify result per link — which is how you find the missing intermediate in about twenty seconds.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A major serverless platform&apos;s cold-start times regressed 40% and nobody outside the forums noticed</title><link>https://rodhat.com/motd/2026-07-28-serverless-cold-start-regression/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-28-serverless-cold-start-regression/</guid><description>Cold starts crept back up on a major FaaS platform this week. No announcement, no postmortem. RodHat noticed because he still checks.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Stop your backup job from taking production down with it</title><link>https://rodhat.com/tips/2026-07-28-ionice-cgroup-io-latency/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-28-ionice-cgroup-io-latency/</guid><description>nice does nothing for I/O. ionice only works on one scheduler that most systems no longer use. cgroup v2 io.latency and io.max are the two knobs that actually work, and they work on the thing you already have.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Everything is a critical CVE now, which means nothing is</title><link>https://rodhat.com/motd/2026-07-27-cve-scoring-inflation/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-27-cve-scoring-inflation/</guid><description>CVSS score inflation has gotten bad enough that a 9.8 barely raises RodHat&apos;s eyebrow anymore. That&apos;s the actual crisis.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The billing job ran twice for six weeks and the totals still balanced</title><link>https://rodhat.com/tales/2026-07-27-the-cron-job-that-ran-twice/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-27-the-cron-job-that-ran-twice/</guid><description>No errors. No alerts. The reconciliation report matched every single day. And a few hundred customers were being double-charged, because the job that generated the charges and the job that verified them were the same code with the same bug.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Get a real disk latency histogram in one line of bpftrace</title><link>https://rodhat.com/tips/2026-07-27-bpftrace-io-latency/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-27-bpftrace-io-latency/</guid><description>iostat gives you an average, and averages hide the tail that&apos;s actually hurting you. A four-line bpftrace program prints a log2 histogram of block I/O latency per device, live, on a production box, with no agent and no restart.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Passkeys fix phishing and nobody wants to talk about account recovery</title><link>https://rodhat.com/motd/2026-07-26-passkeys-and-the-recovery-hole/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-26-passkeys-and-the-recovery-hole/</guid><description>The cryptography is right, the phishing resistance is real, and I&apos;ve stopped arguing about it. What hasn&apos;t been solved is what happens when the device is gone — and every deployed answer to that reintroduces the thing passkeys replaced.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Five shell one-liners I actually use, not the ones that show up in every &apos;top 10&apos; list</title><link>https://rodhat.com/tips/2026-07-26-shell-one-liners-worth-screenshotting/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-26-shell-one-liners-worth-screenshotting/</guid><description>Real, still-in-daily-use shell one-liners for finding what&apos;s eating memory, what&apos;s holding a port, and what changed in a config file — no clickbait filler.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Your AI pair programmer went down for four hours and so did half of Hacker News&apos; composure</title><link>https://rodhat.com/motd/2026-07-25-ai-coding-assistant-outage/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-25-ai-coding-assistant-outage/</guid><description>A major AI coding assistant had a multi-hour outage this week. RodHat has seen this movie before, just with a different lead actor.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The migration was flawless. The TTL was 86400.</title><link>https://rodhat.com/tales/2026-07-25-the-ttl-nobody-lowered/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-25-the-ttl-nobody-lowered/</guid><description>Six weeks of planning, a rehearsed cutover, and a maintenance window we finished forty minutes early. Then a fifth of our traffic kept arriving at a datacentre we&apos;d already started decommissioning, for a full day, and there was nothing whatsoever we could do about it.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Process supervision is a 40-line problem. It has been solved since 1997.</title><link>https://rodhat.com/tips/2026-07-25-supervision-without-systemd/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-25-supervision-without-systemd/</guid><description>You don&apos;t need a service manager with a DNS resolver in it to restart a daemon that died. daemontools, runit and s6 do supervision trees, log rotation and clean shutdown in a handful of files — and the design idea underneath them is worth stealing even if you never install one.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Certificate lifetimes are collapsing to 47 days and your renewal process is a person</title><link>https://rodhat.com/motd/2026-07-24-certificate-lifetimes-are-collapsing/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-24-certificate-lifetimes-are-collapsing/</guid><description>The CA/Browser Forum voted to phase TLS certificate validity down to under seven weeks by 2029. If your renewal runbook has a human in it, the schedule just became your problem — and that&apos;s the actual point of the change.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>find | xargs is a filename injection bug you&apos;ve been shipping for years</title><link>https://rodhat.com/tips/2026-07-24-xargs-null-terminated/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-24-xargs-null-terminated/</guid><description>Whitespace, newlines and quotes in filenames turn the standard find-pipe-xargs idiom into something that deletes the wrong files. -print0 and -0 fix it, find -exec + fixes it better, and there&apos;s one case where only one of them works.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Egress fees were never about bandwidth</title><link>https://rodhat.com/motd/2026-07-23-egress-fees-were-always-a-lock-in-tax/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-23-egress-fees-were-always-a-lock-in-tax/</guid><description>Charging nothing to put data in and a fortune to take it out is not a cost recovery model, it&apos;s a switching cost. Regulators worked that out, the fees started falling, and the interesting part is what got built to replace them.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate></item><item><title>ZFS boot environments + jails will do 90% of what you&apos;re using Docker for, and the other 10% is the part you don&apos;t actually need</title><link>https://rodhat.com/tips/2026-07-23-zfs-jails-poor-mans-containers/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-23-zfs-jails-poor-mans-containers/</guid><description>A real walkthrough of FreeBSD jails on ZFS datasets as a lighter, more honest isolation model than a container runtime for a lot of workloads.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Go count how many of your dependencies have one maintainer</title><link>https://rodhat.com/motd/2026-07-22-one-maintainer-load-bearing/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-22-one-maintainer-load-bearing/</guid><description>Not the direct ones — the transitive ones. The libraries nobody chose, that nothing in your organisation has a name attached to, that a single unpaid person has been carrying since before your company existed.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The microservice that should have been a function call, and the eighteen months it took anyone to say so</title><link>https://rodhat.com/tales/2026-07-22-the-microservice-that-should-have-been-a-function/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-22-the-microservice-that-should-have-been-a-function/</guid><description>An architecture rant, grounded in a real bad design RodHat watched calcify for a year and a half before anyone had the standing to kill it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Your ssh is reconnecting every single time. It doesn&apos;t have to.</title><link>https://rodhat.com/tips/2026-07-22-ssh-multiplexing-controlmaster/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-22-ssh-multiplexing-controlmaster/</guid><description>ControlMaster reuses one TCP connection and one authentication for every subsequent session to the same host. Combine it with ProxyJump and a Match block and the difference between a 900ms hop and a 20ms one is four lines of config you write once.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The hard part of Rust in the kernel was never the Rust</title><link>https://rodhat.com/motd/2026-07-21-rust-in-the-kernel-was-never-the-hard-part/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-21-rust-in-the-kernel-was-never-the-hard-part/</guid><description>The compiler works. The bindings work. The drivers work. What nearly stalled the whole effort was thirty years of maintainer culture meeting a rule about who has to maintain what — and that&apos;s a governance problem no language solves.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>No, ZFS did not eat your RAM. Read arc_summary before you tune anything.</title><link>https://rodhat.com/tips/2026-07-21-zfs-arc-is-not-a-leak/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-21-zfs-arc-is-not-a-leak/</guid><description>The ARC is designed to consume all the memory you aren&apos;t using and give it back under pressure. But it does give it back slowly, and there are two real cases where you should cap it. Here&apos;s how to tell which situation you&apos;re actually in.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Your build pipeline depends on a stranger&apos;s free tier and you found out on a Tuesday</title><link>https://rodhat.com/motd/2026-07-20-your-build-depends-on-someone-elses-free-tier/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-20-your-build-depends-on-someone-elses-free-tier/</guid><description>Registry rate limits turn CI into a coin flip, and the fix — a pull-through cache — has existed the entire time. Anonymous pulls from shared CI egress IPs were always going to hit a ceiling. That was predictable in 2020.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The restore worked perfectly and we still lost eleven days</title><link>https://rodhat.com/tales/2026-07-20-the-backup-restored-perfectly/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-20-the-backup-restored-perfectly/</guid><description>We tested our backups. Monthly, documented, signed off. The restore ran clean, the checksums matched, the database came up on the first try. And the data in it was eleven days old, because for eleven days the job had been backing up a directory nobody was writing to any more.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Find out which syscall is actually eating your latency with one dtrace one-liner</title><link>https://rodhat.com/tips/2026-07-20-dtrace-syscall-latency/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-20-dtrace-syscall-latency/</guid><description>A real dtrace/bpftrace one-liner for finding the syscall responsible for tail latency, plus why strace -T won&apos;t get you there.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The xz backdoor was a social engineering attack and we responded with more scanners</title><link>https://rodhat.com/motd/2026-07-19-xz-two-years-on/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-19-xz-two-years-on/</guid><description>Two years on, the thing that nearly shipped a compromised sshd into every distro on earth wasn&apos;t a code flaw. It was a burned-out maintainer, a patient stranger, and a pressure campaign. Almost every mitigation since has been aimed at the wrong layer.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The disk is full and du says it isn&apos;t. It&apos;s an open file descriptor.</title><link>https://rodhat.com/tips/2026-07-19-full-disk-no-files/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-19-full-disk-no-files/</guid><description>df reports 100%, du walks the whole tree and finds nothing. The space is in a file somebody deleted while a process still had it open — the inode lives until the last fd closes. lsof +L1 finds it in one command.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Charging extra for SSO is charging extra for not getting breached</title><link>https://rodhat.com/motd/2026-07-18-the-sso-tax/</link><guid isPermaLink="true">https://rodhat.com/motd/2026-07-18-the-sso-tax/</guid><description>Single sign-on sits behind the enterprise tier at a suspicious number of vendors, at a markup that has nothing to do with what it costs to implement. It&apos;s not a feature. It&apos;s the control you need to offboard someone the day you fire them.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The Friday deploy that ate my weekend, and whose fault it actually was (mine)</title><link>https://rodhat.com/tales/2026-07-18-the-friday-deploy-that-ate-a-weekend/</link><guid isPermaLink="true">https://rodhat.com/tales/2026-07-18-the-friday-deploy-that-ate-a-weekend/</guid><description>A sysadmin war story about a Friday-afternoon deploy, a silent DNS TTL assumption, and the two-day outage it caused. RodHat owns every part of it.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Stop guessing what&apos;s listening on that port</title><link>https://rodhat.com/tips/2026-07-18-what-is-actually-listening/</link><guid isPermaLink="true">https://rodhat.com/tips/2026-07-18-what-is-actually-listening/</guid><description>netstat -an tells you a socket is open. It does not tell you which process opened it, which user owns it, or whether the accept queue is already overflowing. ss and sockstat do, and they take the same three seconds.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item></channel></rss>