An illustrated proof of the CAP theorem (2018)
The CAP Theorem is a fundamental theorem in distributed systems that states any distributed system can have at most two of the following three properties.
The latest blog posts to take off on Hacker News. 4,387 posts.
The CAP Theorem is a fundamental theorem in distributed systems that states any distributed system can have at most two of the following three properties.
Windows paths have been WTF-16 -encoded for decades, but module names in the import tables of Portable Executable are octets. If a name contains values beyond ASCII — technically out of spec — then the dynamic linker must somehow decode those octets into Unicode in order to construct a lookup path. There are multiple…
( This is part of a series on the design of zest . See the list of posts here .)
How a modern AVX instruction shares a similar design with a 1985 blitter chip, by Arnaud Carré
(Here begins a comment written by John Carmack in 2014, about an email he sent to a programmers’ mailing list in 2007.)
Introduction When modeling a Postgres database, you probably don’t give much thought to the order of columns in your tables. After all, it seems like the kind of thing that wouldn’t affect storage or performance. But what if I told you that simply reordering your columns could reduce the size of your tables and…
Nick Botticelli's personal website
Despite all of its warts, I like working in Linux. I've used it for 15 years and I've never been as productive in another environment. Most people claim that it's the configurability of Linux that keep the users coming. That may have attracted me at first, but what attracts me now is its programmability.
The slides, the video, and the text behind my presentation at EuroBSDCon 2024 and BSDCan 2025 - Why and how we're migrating many of our servers from Linux to the BSDs.
If a value mutates in the forest with no one to see it, does it really mutate?
Hello friends, this is the first of two, possibly three (if and when I have time to finish the Windows research) writeups. We will start with targeting GNU/Lin…
Jetstream is a streaming service that consumes an AT Proto Sync Firehose and converts it into lightweight, filterable, friendly JSON, allowing us to live tail all posts on Bluesky for as little as ~850 MB/day
Then come along! Let’s make a compiler that goes all the way from source to assembly from scratch—no shortcuts!
Using a glibc version that is different from the system-provided one shouldn't require the use of containers, as I recently heard someone claim. Let's take a look at how dynamic linking works and what the options are.
Guile is a rather niche language that I love dearly. Guile is a Scheme dialect that features an advanced optimizing bytecode compiler, a JIT compiler, and a modest set of developer tools for inspecting and debugging. Through my time spent developing Chickadee , a game programming library, I have gotten quite familiar…
Dmitry.GR: Slowly booting full Linux on the intel 4004 for fun, art, and absolutely no profit
In this article I describe the DEFLATE algorithm that GZIP implements and depends on. The DEFLATE algorithm uses a combination of LZ77, Huffman codes and run-length-encoding; this article describes each in detail by walking through an example and developing source code to implement the algorithm. My aim is to…
My 4U 71 TiB ZFS NAS built with twenty-four 4 TB drives is over 10 years old and still going strong.
Microservices aren't the only way to get high cohesion and low coupling.
For the past two years Charles Zhang and I have been working on getting my game engine, Trial, running on the Nintendo Switch. The primary challenge in doing this is porting the underlying Common Lisp runtime to work on this platform. We knew going into this that it was going to be hard, but it has proven to be quite…
Systems engineering, Rust development, and Unix infrastructure by Till Wegmüller (@toasterson)
NT is often touted as a "very advanced" operating system. Why is that? What made NT better than Unix, if anything? And is that still the case?
Following my previous post on rate limiting with GCRA, leaky buckets without the buckets , I reviewed my old notes on rate limiting for Exim . I thought I should do a new write-up of the ideas that I hope will be more broadly interesting.
In this post, we are going to take a deep dive into pointer tagging, where metadata is encoded into a word-sized pointer. Doing so allows us to keep a compact representation that can be passed around in machine registers. This is very common in implementing dynamic programming languages, but can really be used…