Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 6,947 posts.
Speculative Decoding in vLLM on AMD GPUs
A practical guide to speculative decoding in vLLM on AMD GPUs, covering draft-and-verify mechanics, MTP, EAGLE-3, DFlash, DSpark, configuration, tuning, and ben
MemoryDB: A fast and durable memory-first cloud database
Amazon MemoryDB for Redis is a database service designed for 11 9s of durability with in-memory performance. In this paper, we describe the architecture of MemoryDB and how we leverage open-source Redis, a popular data structure store, to build an enterprise-grade cloud database. MemoryDB offloads…
Setting up a Sun Ray server on OpenIndiana Hipster 2025.10
fresh OI install, clean slate, let's see how well the updated OI Sun Ray support works
How statically linked programs run on Linux
In this article I want to explore what happens when a statically linked program gets executed on Linux. By statically linked I mean a program that does not require any shared objects to run, even the ubiquitous libc . In reality, most programs one encounters on Linux aren't statically linked, and do require one or…
Terminals Are Weird
Terminals 1 are quite weird. Most modern users assume that they can just have straightfoward keybindings. Right? To bind Ctrl+i to something, they listen for Ctrl+i in their application. If they want to bind Ctrl+Shift+i to something different, they certainly can, they just listen for Ctrl+Shift+i as well. Naturally…
HermiTux: A Binary-Compatible Unikernel
A binary-compatible unikernel
96-core ARM supercomputer using the NanoPi-Fire3
Building a high performance supercomputer for under £100 (£550 including twelve Fire3s). Parts list, benchmarks and downloadable plans for laser-cutting the acrylic case.
A Real PowerBook: The Macintosh Application Environment on a Pa-RISC Laptop
I like the Power ISA very much, but there's nothing architecturally obvious to say that the next natural step from the Motorola 68000 family...
Running KDE Plasma on RISC-V VisionFive-2
New year, new RISC-V Yocto blog post \o/ When I wrote my last post, I did really not expect my brand new VisionFive-2 board to find its way to me so soon… But well, a week ago it was suddenly…
NT OS Kernel Information Disclosure Vulnerability
Bidding farewell to one of the last kernel address leaks, CVE-2025-53136. Even patches can open new doors for exploitation.
Hooking Go from Rust
How did we hook Go functions from Rust to work with mirrord? A quick dive into the Go Runtime and switching from the Go stack to the system stack.
Reverse engineering the Intel 386 processor's register cell
The groundbreaking Intel 386 processor (1985) was the first 32-bit processor in the x86 line. It has numerous internal registers: general-pu...
Fuzzing ping(8) and finding a 24 year old bug
FreeBSD had a security fluctuation in their implementation of ping(8) the other day. As someone who has done a lot of work on ping(8) in OpenBSD this tickled my interests.
Filtering millions of packets per second on commodity NICs
In a previous post we discussed the performance limitations of the Linux kernel network stack. We detailed the available kernel bypass techniques allowing user space programs to receive packets with high throughput.
Libreboot 20230319 Released
Libreboot – Libreboot 20230319 released!
I now have Rust code for executing executables
Day 45: I now have Rust code for executing executables!
Decompressing a Gzip File by Hand
2024 Update: Part 2 is out! Let’s make a gzipped file and see what’s in it. We’ll keep it simple: just write 8 ‘a’s to a file. $ echo "aaaaaaaa" > test.out $ xxd test.out 00000000: 6161 6161 6161 6161 0a aaaaaaaa. As we can see, our file is 9 bytes long. We have 8 ‘a’ bytes written, plus a Line Feed (LF) character…
The future of latency profiling in Go
The roadmap for latency profiling in Go
Emulator basics: a stack and register machine
Writing an x86 emulator from scratch in JavaScript: 1. a stack and register machine
FreeBSD – A lesson in poor defaults
This page lists some of the changes I make to a vanilla install of FreeBSD for security hardening. Some changes to increase network performance or make things a bit more sane are also included. It only covers basic changes that a sysadmin can make to a running system.
AmpereOne: Cores Are the New MHz
Cores are the new megahertz, at least for enterprise servers. We've gone quickly from 32, to 64, to 80, to 128, and now to 192-cores on a single CPU socket! Amazon built Graviton 4, Google built Axiom, but if you want your own massive Arm server, Ampere's the only game in town. And fastest Arm CPU in the world is…
AMD ROCm: A Wasted Opportunity
This post will mainly focus on ROCm HIP wasted opportunities for adoption. I wrote an overview of ROCm earlier at https://threedots.ovh/blog/2021/11/what-is-amd-rocm/ . This post will specifically eschew talking about issues about the API renames in ROCm HIP – breaking source compatibility with CUDA quite needlessly.
Classes vs. structs in .NET: how not to teach about performance
It’s been a while since my last blog post, but I believe it’s better to post late than never, so here I am!
Build the Modular Monolith First
Even talking about building a monolith today, is a bit taboo. It is all about microservices at the moment, and has been for a few years. But they aren’t a silver bullet…
Sharding Pinterest: How we scaled our MySQL fleet
Building the platform where people around the world come to search, save and shop
The surprising cleverness of modern compilers
I wanted to know how a modern C compiler like clang would process the following C code: #include <stdint.h> int count(uint64_t x) { int v = 0; while(x != 0) { x &= x - 1; v++; } return v; } Can you guess? popcntq %rdi, %rax That is right. A fairly sophisticated C function, … Continue reading The surprising cleverness…