Posts

Essays on software, performance, and self-hosting.

performance Tuning a Server for Benchmarking
Optimizing code starts with measuring it, and a measurement is only useful if it is repeatable: a 2% improvement is invisible under 5% of noise. Yet on …

self-hosting Self-Hosting on the Dark Web
This site is now reachable over Tor as a hidden service, at a .onion address that resolves only inside the Tor network. Tor relays and encrypts your …

self-hosting First Steps on a New Server
Over the last decade I’ve been playing with dozens of servers from multiple providers. These are the steps I’ve been perfecting to get up to …

mathematics Fundamental Theorem of Calculus
Although the notion of area is intuitive, its mathematical treatment requires a rigorous definition. This post introduces the Riemann integral, and …

c++ · performance Optimizing a Lock-Free Ring Buffer
A single-producer single-consumer (SPSC) queue is a great example of how far constraints can take a design. In this post, you will learn how to …

c++ Deriving Type Erasure
Ever looked at std::any and wondered what’s going on behind the scenes? Beneath the intimidating interface is a classic technique called type …

c++ · performance Devirtualization and Static Polymorphism
Ever wondered why your “clean” polymorphic design underperforms in benchmarks? Virtual dispatch enables polymorphism, but it comes with …

2018

meta About this Site
After nearly a decade, I’ve rebuilt my personal site from scratch—a blog on software, self-hosting, and lessons learned along the way. This …

1

Translation Look Aside Buffer
Explain what the TLB is, using maybe hrt blog?

Self-Hosting Behind CGNAT
This site is self-hosted on a server that cannot accept a single inbound connection: the ISP puts it behind CGNAT, so there is no public IP to forward …

Self-Hosting an Email Server
Self-hosting email gives you full control over your communications—no ads, no scanning, no one can lock you out. It’s easier than most …

meta Reflecting on One Hundred Thousand Reads
This site just passed one hundred thousand reads. It began as a notebook kept in public, read by almost no one, and the idea hasn’t changed: one …

Optimizing a Spin-Lock
A spin-lock is a mutex that never sleeps: instead of yielding to the scheduler when the lock is taken, the thread stays on the CPU and keeps …

meta One Hundred Thousand Views
This site just passed one hundred thousand page views. The number itself is vanity, but each count is a person who read something I wrote, often to the …

Laissez Faire, Laissez Mourir
There is an arrangement in which whoever cannot pay to survive is told, “Die, then.” We live in it. It has been on my mind as the world …

Incremental clang-tidy tool
How to incrementally run clang-tidy or cppcheck

Exploring CPU Caches
Pending.

Building a Mouse Jiggler
A microcontroller that pretends to be a keyboard and mouse is one of the most useful weekend projects I’ve put together. It can keep a machine …