Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 543 posts.
FreeBSD Suspend/Resume
I have been using FreeBSD on the desktops/laptops since about 20 years now and I have described all that I configured in the FreeBSD Desktop series. About 1 year ago I shared a video on YouTube and…
BM25 in PostgreSQL
VectorChord-BM25 enhances PostgreSQL search with BM25 ranking, 3x faster than ElasticSearch. Supports BERT, Tocken, and Unicode tokenizers
Needy Programs
We used to use software; now software started to use us
Wild performance tricks
Last week I had the pleasure of attending RustForge in Wellington, New Zealand. I gave a talk titled “Wild performance tricks”. You can watch a recording of my talk . If you’d prefer to read rather than watch, the rest of this post will cover more or less the same material. The talk shows some linker benchmarks, which…
OpenBSD 7.7 Released
OpenBSD 7.7
Building a message queue with only two UNIX signals
Have you ever asked yourself what if we could replace any message broker with a very simple one using only two UNIX signals? Well, I'm not surprised if you
Caching is an abstraction, not an optimization
I've always been told that caching is a tool to make software faster. That, given some careful considerations to consistency, caching makes it so that when...
Stategraph: Terraform state as a distributed systems problem
Terraform state is a distributed systems problem masquerading as file storage. Graph state fixes the bottlenecks.
Did the Windows 95 setup team forget that MS-DOS can do graphics?
Oh look what you just made there.
Odin: Moving Towards a New "core:OS"
The rationale and transition period to moving to the new “core:os”
The best worst hack that saved our bacon
No-one really likes engineering war stories, but this one's relevant because there's a moral to it. I've talked before about defining technical debt as technical decisions that provide immediate value, but with long-term negative impact if they aren't cleaned up. Sometimes introducing technical debt
Writing a Hypervisor in 1k Lines
Writing a Hypervisor in 1,000 Lines
The Polyglot NixOS
Recently a colleague mentioned building NixOS images that run unchanged on multiple architectures. Given the past adventures on this blog with systemd-repart and cross-compiling NixOS, I decide to give this a go.
Improving on std:count_if()'s auto-vectorization
To start off, we can leverage the STL for this calculation. std::count_if() more precisely:
Just make it scale: An Aurora DSQL story
AWS Senior Principal Engineers, Niko Matsakis and Marc Bowes, take us inside Aurora DSQL's development: scaling write operations without two-phase commit, overcoming garbage collection hurdles, and embracing Rust for both data and control planes.
How to make things slower so they go faster
In a service with capacity $\mu$ requests per second and background load $\lambda_0$, the usable headroom is $H = \mu - \lambda_0 > 0$. When $M$ clients align, e.g., after a cache expiry, at a cron boundary, or as a service returns from an outage, the bucketed arrival rate can
Kafka at the low end: how bad can it get?
There is oft-quoted advice that Kafka does poorly as a job queue. I’ve experienced this myself, and I wanted to formalize it a bit.
Lock-Free Rust: How to Build a Rollercoaster While It's on Fire
A joyride through the dangers of lock-free programming.
We built another object storage
High-performance object storage exists, but the economics make it unusable at scale. FractalBits breaks out of the high-performance trap.
From Azure Functions to FreeBSD
Putting FreeBSD’s “power to serve” motto to the test. On Thanksgiving morning, I woke up to one of my web services being unavailable. All HTTP requests failed with a “503 Service unavailable” error. I logged into the console, saw a simplistic “Runtime version: Error” message, and was not able to diagnose the problem…
Simpler Backoff
Exponential backoff with jitter is de rigeur for making service calls. This code, or something like it, probably looks really familiar: func do(ctx context.Context) error { const ( maxAttempts = 10 baseDelay = 1 * time.Second maxDelay = 60 * time.Second ) delay := baseDelay for attempt := range maxAttempts { err :=…
Decomposing Transactional Systems
Every transactional system must execute, order, validate, and persist transactions.
The surprising struggle to get a Unix Epoch time from a UTC string in C or C++
So how hard could it be. As input we have something like Fri, 17 Jan 2025 06:07:07 in UTC, and we’d like to turn this into 1737094027, the notional (but not actual) number of seconds that have passed since 1970-01-01 00:00:00 UTC. Trying to figure this out led me to discover many ‘surprise features’ and otherwise…
Intelligent Kubernetes Load Balancing at Databricks
How Databricks uses client-side load balancing to improve gRPC traffic, reduce tail latency, and handle ingress with real-time service discovery.
Building Burstables: CPU slicing with cgroups
Burstable VMs run on a fraction of CPU and burst to a higher level of CPU usage to support occasional usage spikes. To implement them, we leveraged Control Groups v2 (cgroups v2), a Linux kernel feature that helps manage resource usage. We thought our open-source implementation of burstable VMs might be interesting…
Sometimes CPU cores are odd
TL;DR: all the assumptions you have about processor design are wrong and if you are unlucky you will never run into problems that users do through sheer chance.
Installing and using HP-UX 9
A few weeks back I got a note on Bluesky, linking me to a website offering a free computer. The owner was in Cambridge, not far from me, and the computer was an HP 9000/300 Series - a Model 340, specifically.
TLA+ Modeling Tips
Model minimalistically Start from a tiny core, and always keep a working model as you extend. Your default should be omission. Add a compone...