New
The latest blog posts to take off on Hacker News. 4,387 posts.
An argument for increasing TCP's initial congestion window (2024)
Introduction Google has a long history of performing networking research, making changes, and pushing those changes to the entire internet. In 2011, they published one of my favorite papers, which described their decision to increase the TCP initial congestion window from 1 to 10 on their entire infrastructure. This…
Faster substring search with SIMD in Zig
I've been learning a lot about low level programming languages lately, and for a long time there has been one thing that has interested me: SIMD (or 'single ins…
Inside OS/2 (1987)
A 1987 technical introduction to OS/2, covering its architecture, multitasking capabilities, API, and kernel system services.
Booting 5000 Erlangs on Ampere One 192-core
Underjord is an artisanal consultancy doing consulting in Elixir, Nerves with an accidental speciality in marketing and outreach. If you like the writing you should really try the pro version .
A CT scanner reveals surprises inside the 386 processor's ceramic package
Intel released the 386 processor in 1985, the first 32-bit chip in the x86 line. This chip was packaged in a ceramic square with 132 gold-pl...
MCP overlooks hard-won lessons from distributed systems
Fool me once, shame on you; fool me twice, shame on me.
Mac history echoes in current Mac operating systems
Ars Technica mentioned that in macOS Tahoe the venerable old hard disk icons will be replaced with new, more generic, relatively less inte...
We'd be better off with 9-bit bytes
A number of 70s computing systems had nine-bit bytes, most prominently the PDP-10, but today 1 [ 1 Apparently, it was the System/360 that really set the standard here. ] all systems use 8-bit bytes and that now seems natural. 2 [ 2 Though you still see RFCs use "octet", and the C standard has a CHAR_BITS macro, to…
A fast, growable array with stable pointers in C
My last article about generic data structures in C was written to set the stage for today’s topic: A data structure with constant time indexing, stable pointers, and works well with arena allocators. Its been independently discovered by multiple programmers over the years and so goes by different names. A 2001 paper…
Don't “let it crash”, let it heal
Don't "let it crash". Let it heal.
A deep dive into Rust and C memory interoperability
An in-depth exploration of what happens when Rust and C memory allocators collide, featuring crash analysis.
Writing a storage engine for Postgres: An in-memory table access method (2023)
Writing a storage engine for Postgres: an in-memory Table Access Method
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...
What is gVisor?
It has been a really long time since I last wrote something here as life happens, things get busier, etc etc. I am now trying to get back into writing things down and here we go! So, imagine a tool or a service that allows you to run some arbitrary code via a shell. Either through a ssh or more commonly, via a web…
Writing memory efficient C structs
A struct in C is the best way to organize your data so that you can easily use the data later in your program. However, there are a few caveats to C structures, mainly how their memory works. Note that I’m making a lot of assumptions about type sizes and standards. These can differ between systems and ABI’s, so for…
How Hyper built a 1M-accurate indoor GPS
To @AndrewHart: “Our app is shit and we know it’s shit”. My life changed forever when a senior exec from one of the world’s largest retailers messaged me on Twitter. This was back in 2017. My outdoor AR navigation demos had just gone viral, and my new open-source project for...
Zig Profiling on Apple Silicon
If you’re a developer rocking an Apple Silicon Mac and writing in Zig, congratulations - you’ve chosen the scenic route through the desert of profiling tools. It’s just you, your code, and a tumbleweed named Apple Instruments. But don’t worry - we’ll try to find some oases. Okay, it’s not that bad, but we’re far away…
I designed my own fast game streaming video codec – PyroWave
Streaming gameplay from one machine to another over a network is a reasonably popular use case these days. These use cases demand very, very low latency. Every millisecond counts here. We need to:
SIMD within a register: How I doubled hash table lookup performance
It started with a simple thought: four bytes in a hash table bucket look just like an integer. Luckily, this one idea led to a deep dive into bit-twiddling and a 2x performance boost.
Fast and cheap bulk storage: using LVM to cache HDDs on SSDs
My attempt to create fast and cheap bulk storage by caching HDDs with SSDs on Linux, using standard lvmcache. Contains an introduction to LVM, RAID, and partitioning.
Who has the fastest F1 website (2021)
Deep-diving on the load performance of F1 websites.
There is no memory safety without thread safety
Memory safety is all the rage these days. But what does the term even mean? That turns out to be harder to nail down than you may think. Typically, people use this term to refer to language...
What to expect from Debian/Trixie
Update on 2025-07-28: added note about Debian 13/trixie support for OpenVox (thanks, Ben Ford!)
20 years of Linux on the Desktop (part 4)
20 years of Linux on the Desktop (part 4) par Ploum - Lionel Dricot.
I wasted weeks hand optimizing assembly because I benchmarked on random data
The target system was a distributed data processing platform that ran across hundreds of thousands of machines. At such scales, a 0.5% improvement would easily make up my salary going forward, and 2% was a good result for the half.
Async I/O on Linux in databases
I've been working on a complex multi-model database for a few weeks now, and recently I took time to simplify and test out an idea I had on a simple key-value database. I started with the basics: A hash table in memory, a simple append-only log
The curious case of the Unix workstation layout
Cathode Ray Dude recently did an excellent video about the history of the PC case, particularly the early- and mid-1990s, and the various mainboard layouts that pre-date the ATX standard. You should watch it. Here it is.
Asynchrony is not concurrency
Yes I know about that one talk from Rob Pike.