<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on mc · notes</title><link>https://hk.crepuscule.uk/posts/</link><description>Recent content in Posts on mc · notes</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 01 Jun 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://hk.crepuscule.uk/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Reading list — June 2026</title><link>https://hk.crepuscule.uk/posts/reading-2026-06/</link><pubDate>Mon, 01 Jun 2026 09:00:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/reading-2026-06/</guid><description>A few things that crossed my desk this month.</description></item><item><title>Data-parallel training: gradient bucketing and overlap</title><link>https://hk.crepuscule.uk/posts/grad-bucketing/</link><pubDate>Tue, 19 May 2026 17:40:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/grad-bucketing/</guid><description>Why DDP feels like magic until you look at the allreduce schedule.</description></item><item><title>Reading notes: QUIC, 0-RTT and why HTTP/3 is UDP</title><link>https://hk.crepuscule.uk/posts/quic-http3/</link><pubDate>Wed, 29 Apr 2026 20:25:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/quic-http3/</guid><description>Moving HTTP onto UDP was not insane — head-of-line blocking is the reason.</description></item><item><title>A minimal, reproducible Docker setup for ML experiments</title><link>https://hk.crepuscule.uk/posts/docker-ml/</link><pubDate>Wed, 11 Mar 2026 14:00:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/docker-ml/</guid><description>Pin everything, mount data, never bake it. The boring setup that stopped me losing runs.</description></item><item><title>KV cache, and why LLM inference is memory-bound</title><link>https://hk.crepuscule.uk/posts/kv-cache/</link><pubDate>Sun, 08 Feb 2026 15:20:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/kv-cache/</guid><description>The cache that makes autoregressive decoding fast also makes it the thing that runs out of memory first.</description></item><item><title>eBPF: tracing syscalls without a kernel module</title><link>https://hk.crepuscule.uk/posts/ebpf/</link><pubDate>Mon, 12 Jan 2026 18:50:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/ebpf/</guid><description>Attaching a verified program to a tracepoint, and why this beats strace under load.</description></item><item><title>Tuning TCP BBR and fq on a high-latency link</title><link>https://hk.crepuscule.uk/posts/bbr/</link><pubDate>Mon, 03 Nov 2025 22:15:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/bbr/</guid><description>Switching off loss-based congestion control on a long-fat path, and the fq gotcha for UDP.</description></item><item><title>WireGuard: why it's so small</title><link>https://hk.crepuscule.uk/posts/wireguard/</link><pubDate>Sun, 14 Sep 2025 16:30:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/wireguard/</guid><description>~4k lines, one cipher suite, no negotiation. The design choices that make it auditable.</description></item><item><title>The TLS 1.3 handshake, in plain terms</title><link>https://hk.crepuscule.uk/posts/tls13/</link><pubDate>Fri, 18 Jul 2025 19:05:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/tls13/</guid><description>One round trip instead of two, and why the ServerHello already carries a key share.</description></item><item><title>A first, honest look at io_uring</title><link>https://hk.crepuscule.uk/posts/io-uring/</link><pubDate>Thu, 22 May 2025 20:40:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/io-uring/</guid><description>Two ring buffers, one syscall, and the mental model that finally made it click.</description></item><item><title>Notes on cgroups v2: memory limits that actually hold</title><link>https://hk.crepuscule.uk/posts/cgroups-v2/</link><pubDate>Sun, 09 Mar 2025 21:10:00 +0800</pubDate><guid>https://hk.crepuscule.uk/posts/cgroups-v2/</guid><description>Why my OOM kills moved around after switching to the unified hierarchy, and the three knobs that matter.</description></item></channel></rss>