ENGINEERING NOTES
THINGS WE BUILT.
THINGS WE BROKE.
THINGS WE LEARNED.
Why Linux Stalls on Big Writes: Dirty Page Tuning
Copying a big file freezes your Linux box? Learn how dirty pages and writeback work, then tune vm.dirty_bytes and vm.dirty_background_bytes safely.
Hugepages: The Hidden TLB Tax on LLM Loads
Measure dTLB misses with perf, compare 4K pages, THP and explicit hugetlb pages, and learn when transparent hugepages help or hurt GPU and LLM workloads.
BBR vs CUBIC: Pick a TCP Congestion Control
BBR or CUBIC? Build a reproducible iperf3 and tc netem lab in network namespaces, test loss and buffer depth, and decide when switching helps or hurts.
XDP: Drop Packets Before Linux Notices
XDP and eBPF explained: write a small C program that drops UDP traffic at the earliest hook, load it with ip link, and compare it fairly against nftables.
io_uring in Practice: When Async I/O Wins
io_uring explained for working engineers: submission and completion rings, a liburing example, the setup flags that matter, and the io_uring_disabled sysctl.
PostgreSQL 19 REPACK: VACUUM FULL Without the Lock
PostgreSQL 19 adds REPACK and REPACK (CONCURRENTLY) to shrink bloated tables without a long exclusive lock. Syntax, limits, disk needs and a safe runbook.
OpenSSH 10.6: Is Your SSH Post-Quantum Yet?
OpenSSH 10.6 ships ML-DSA keys and an ML-KEM default. See how to check your SSH key exchange, silence or heed the warning, and generate hybrid keys safely.
Why Your Local LLM Server Is Slow
Local LLM server slow or out of VRAM? Learn how the KV cache eats GPU memory, why decoding is bandwidth-bound and how to tune vLLM and llama.cpp batching.
Why Your WireGuard Tunnel Is Slow
WireGuard slower than the link underneath it? Learn the real packet overhead, how to find the right MTU with ping, when to clamp MSS and how to check UDP drops.
Node.js October 2026 Security Release, Explained
Node.js shipped ten CVE fixes on 21 October 2026, including a Brotli out-of-bounds write. Here is what each bug does, how to check your fleet, and how to patch.
Linux 7.3: A BPF Scheduler Per Cgroup
Linux 7.3 completes nested sched_ext, so a cgroup subtree can run its own BPF scheduler. Here is how sub-schedulers work and how to try sched_ext on a lab box.
Why Your GPU Is Slow: PCIe, ReBAR and NUMA
Check your GPU's PCIe link speed and width, Resizable BAR and NUMA placement on Linux with lspci, sysfs and numactl, and fix the silent bottlenecks.
Cap CPU and RAM with cgroup v2 and systemd-run
Learn how Linux cgroup v2 limits CPU, memory and process counts, and use systemd-run to cap a runaway job in one command, with the raw files to inspect.
Build a Container Network by Hand with ip netns
Build a container-style network from scratch with Linux network namespaces, veth pairs, a bridge and nftables NAT, and see what Docker automates for you.
Fix Bufferbloat on Linux with fq_codel and CAKE
Reproduce bufferbloat with iperf3 and ping, then fix it on Linux with fq_codel or CAKE using tc. Includes a router shaping recipe and what to measure.
Multi-Gen LRU: Stop Linux Thrashing Under Memory Pressure
Tame Linux memory thrashing with the multi-gen LRU. Check it is on, set min_ttl_ms, read the working-set histogram in debugfs and reclaim cold pages on demand.
Linux 7.2 Cache-Aware Scheduling: Keep Threads Close
Linux 7.2 added cache-aware scheduling that packs a process's threads onto one LLC. See how SCHED_CACHE works, the debugfs knobs, and how to benchmark it.
Reading Linux PSI: Why Is My Machine Stalling?
Use Linux PSI (/proc/pressure) to tell memory, I/O and CPU stalls apart, set kernel pressure triggers in C, and chase the culprit with vmstat and bpftrace.
ext4 data=journal Is Deprecated in Linux 7.3
Linux 7.3 deprecates ext4 data=journal, with removal planned for early 2028. Find out if you use it, what it costs you, and how to move to ordered mode safely.
Ubuntu 26.10 Upgrade Checklist for Servers
Ubuntu 26.10 ships Rust coreutils, drops SysV init scripts, moves to OpenSSL 4 and splits OpenSSH. Here is what breaks and a script to audit your servers first.
Node.js Goes to One Major Release a Year
Node.js is dropping odd releases for one major every April, with a new Alpha channel and LTS for everything. What changes for servers and CI, with a script to track it.
My Fold6 Inner Screen Broke, So I Locked It to the Cover
Galaxy Z Fold6 inner screen dead and black every time you open it? Force the cover screen to stay on with adb device_state, Shizuku and Termux, no root needed.
Fixing Linux Freezes During Steam Downloads
Steam hits full speed and the whole Linux desktop locks up. A root-cause walkthrough of dirty page writeback, dm-crypt workqueues and QLC SSD cache exhaustion — and the exact sysctl and cryptsetup fixes.
Engineering a Smart Home Monitoring System
When there isn't an off-the-shelf sensor/automation product that fits, the alternative is custom hardware/software integration — built to the actual requirement.
Engineering a PLC Control System
Translating sensors and actuators into reliable control logic — scan cycles, structured text, and why industrial code is written differently.
Running Local LLM Infrastructure
What changes when inference moves off a hosted API and onto GPUs you control — model serving, memory budgeting and the operational tradeoffs.
Building Autonomous Development Loops
Specification-driven, self-correcting engineering: how a loop that inspects, implements, tests and fixes itself is structured — and why it needs a spec, not a prompt.
Building a Reverse Proxy From Scratch
What nginx and Envoy are actually doing under their config files — routing, connection handling and failure modes, implemented directly.
Writing a Linux Character Driver
A field guide to the character-device interface: registering a device, wiring up file_operations, and talking to it from userspace.
NEWSLETTER
Get the engineering notes in your inbox.
Kernels, GPUs, networks, AI infrastructure — and the things we broke along the way. No spam, one click to leave.
We store only your email address, to send you new articles. See our privacy policy.