<?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>HFT Engineer's Roadmap</title><link>https://hftengineer.com/</link><description>Recent content on HFT Engineer's Roadmap</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 20 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hftengineer.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Lock-free SPSC ring buffer: the queue under every trading system</title><link>https://hftengineer.com/posts/spsc-ring-buffer/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://hftengineer.com/posts/spsc-ring-buffer/</guid><description>A single-producer/single-consumer ring buffer is the fastest way to move data between two threads — and the canonical low-latency interview question. We build one in C++, prove it correct with acquire/release ordering, and then watch a textbook false-sharing &amp;lsquo;fix&amp;rsquo; make it slower before the real optimisation takes it 14× faster. All numbers measured and ThreadSanitizer-clean.</description></item><item><title>Mechanical sympathy: cache, branches, false sharing</title><link>https://hftengineer.com/posts/mechanical-sympathy/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><guid>https://hftengineer.com/posts/mechanical-sympathy/</guid><description>Three hardware ideas that decide whether your low-latency code is fast or pretending to be: how the cache hierarchy works, why branch prediction can change runtime by 5×, and how false sharing makes lock-free code slower than mutexes.</description></item><item><title>About</title><link>https://hftengineer.com/about/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><guid>https://hftengineer.com/about/</guid><description>&lt;h2 id="whos-writing"&gt;Who&amp;rsquo;s writing&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m a software engineer writing Java in production at a high-frequency trading firm. The day job is the kind of work where a 2 ms GC pause is a missed market and the design of a queue can be the difference between making and missing the open. I came to it from regular backend engineering and the interests below reflect that arc.&lt;/p&gt;
&lt;h2 id="what-this-blog-is"&gt;What this blog is&lt;/h2&gt;
&lt;p&gt;Deep dives on the systems, languages, and tools that make latency-sensitive software work — and the broader ecosystem they sit in. Some of it is JVM-internal (ZGC, JIT, Loom), some of it is data-shaped (DuckDB, ClickHouse, Iceberg), some of it is networking and OS (kernel-bypass, eBPF), some of it is the trading-domain mental models I wish I&amp;rsquo;d had on day one (order books, single-writer designs, market microstructure).&lt;/p&gt;</description></item></channel></rss>