Making CRDTs More Efficient
State-based CRDTs grow monotonically, but that doesn't mean they can't be efficient. We'll learn how to compress the pixel editor state by 98%.
Topics /
The most popular blog posts about systems & performance on Hacker News. 391 posts.
State-based CRDTs grow monotonically, but that doesn't mean they can't be efficient. We'll learn how to compress the pixel editor state by 98%.
FoundationDB is a very impressive database. Its paper won the best industry paper award in SIGMOD’21. In this post, I will explain, in detail, how FDB works and discuss a few very interesting design choices they made. It’s a dense paper packed with neat ideas. Many details (sometimes even proof of correctness) are not…
Implementing the Raft distributed consensus protocol in Go
Instead of using sshpass to non-interactively provide an SSH password, here is a simpler approach by harnessing the built-in features of OpenSSH...
For the last 39 years, PostScript has been at the heart of the Mac, bringing desktop publishing, fonts, and the LaserWriter and other printers. It has been removed from Sonoma.
I always wanted to understand how a CPU works, how it transitions from one instruction to the next and makes a computer work. So I thought: let's implement one and run a C program on it.
Over the past years I attended hundreds of interviews. Many candidates proudly told tales on how they develop their projects with a microservice architecture. Often (I don’t want to say “always”, but from my memory I think it actually is “always”) it does not require many questions to see that they used a rocket…
Building evolvable software systems is a strategy, not a religion. And revisiting your architectures with an open mind is a must.
Hackweek 22 took place last week. During this week all the SUSE employees are free to hack on whatever they want. This one of the perks of working at SUSE 😎.
The original ANSI C standard, C89, introduced the concept of “undefined behavior,” which was used both to describe the effect of outright bugs like accessing memory in a freed object and also to capture the fact that existing implementations differed about handling certain aspects of the language, including use of…
I was running some benchmarks the other day. I usually have a lot of things running (Teams, Chrome, IDE, etc…) but I have to close everything to run some tight benchmarks. When I am done, one of th…
Placing an order and capturing a payment are really different actions. I also learned a lot in a few days.
I was curious to explore how long a program takes to run, how much memory is used over time, and what processes/threads are spawned. To provide answers I wrote a tool, which I named st . Here are a few things I looked into.
Early in my research career, I had a chance to work with some of the best system researchers1 in the world on a number of really interesting system designs. One of the enjoyable aspects of research was the particular process used by researchers (particularly in the SOSP/OSDI community) to come up with novel yet…
Should you be scared of Unix signals?
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Here is a Go function, if_max(). It finds the max value of an array of integers. Simple enough:
In this blog post, I delve into the comparison of memory consumption between asynchronous and multi-threaded programming across popular languages like Rust, ...
You might have used libvirt , a Linux daemon that provides an abstraction and management layer for virtualization software. This daemon allows you to submit an XML file containing a description of a VM, disk image or network. libvirt is then able to configure, start it and keep it running.
For almost two decades, MSKey Readme 1 has heralded the defeat of Windows XP's product activation, not via mere circumvention , but by cracking the encryption algorithm itself.
A couple of weeks ago, I was in an internal meeting where our CTO (Adam Prout) was giving a talk to our summer interns. The talk was about the current state of database companies, and how different providers are competing on different facets of their products. As the talk was
I recently finished reading PostgreSQL 14 Internals by Egor Rogov. It is one of the great books that teach applied computer science without watering down the difficult parts. One particularly interesting topic is PostgreSQL’s execution of UPDATE statements. Updates in relational databases are inherently complex. They…
Code run in a lightweight Virtual Machine can’t take advantage of the Efficiency cores of the host Apple silicon Mac. How then does Sonoma handle its threads?
A retrospective on a NetBSD server set up in 2010 under tight deadlines, running almost untouched for over a decade on consumer-grade hardware-proof of the OS's remarkable stability.
It is difficult to write software which reliably and safely manages processes on Unix; this is because of flaws in the API. I know of no Unix system which has solved these problems, but in this article I'll be specifically talking about the Linux process API.
I've been using SQLite in several production projects for six months, and I've encountered some surprising aspects.