New
The latest blog posts to take off on Hacker News. 6,949 posts.
Let’s Talk Concurrency: Panel with Sir Tony Hoare, Joe Armstrong, Carl Hewitt
When considering the panel to discuss concurrency, you’d be pushed to find a higher calibre than Sir Tony Hoare, Joe Armstrong, and Carl Hewitt.
SIMD Instructions Considered Harmful (2017)
In the process of writing a short introduction to RISC-V, we compared RISC-V vector code to SIMD. We were struck by the insidiousness of the SIMD instruction extensions of ARM, MIPS, and x86. We de…
SOCKMAP – TCP splicing of the future
cccccblgtbhdtvkdkbdfcdvgiicuckkdkruvfceiuiur
Flavors of SIMD
If you like this blog, you should follow it via RSS and read older posts . Here are the recent posts:
Cache Eviction: When Are Randomized Algorithms Better Than LRU? (2014)
Once upon a time, my computer architecture professor mentioned that using a random eviction policy for caches really isn't so bad. That random eviction isn't bad can be surprising — if your cache fills up and you have to get rid of something, choosing the least recently used (LRU) is an obvious choice, since you're…
AWS Nitro System
At Tuesday Night Live with James Hamilton at the 2016 AWS re:Invent conference, I introduced the first Amazon Web Services custom silicon. The ASIC I showed formed the foundational core of our second generation custom network interface controllers and, even back in 2016, there was at least one of these ASICs going…
LD_PRELOAD: The Hero We Need and Deserve
A summary of my undying love for LD_PRELOAD.
Chaos Monkey Guide for Engineers
A complete and comprehensive guide to learn about, set up, and deploy Chaos Monkey and other similar tools for creating chaos. Download the whole guide.
Cache tables
Hash tables are the most popular probabilistic data structure, by quite a margin. You compute some hash code then compute an array index from that hash code. If you’re using open addressing-c…
Exposing the Wayland lie (2018)
Hi, people of the future! Did you know that I wrote a follow-up article to this one, called “Further Thoughts on Wayland”? This original article was written in a more combative tone tha…
Faster remainders when the divisor is a constant: beating compilers & libdivide
Not all instructions on modern processors cost the same. Additions and subtractions are cheaper than multiplications which are themselves cheaper than divisions. For this reason, compilers frequently replace division instructions by multiplications. Roughly speaking, it works in this manner. Suppose that you want to…
When AWS Autoscale Doesn’t
Explore technical topics, solutions, and resources for building with Twilio – and beyond.
Debugging Emacs, or How I Learned to Stop Worrying and Love DTrace (2018)
For some time Elfeed was experiencing a strange, spurious failure. Every so often users were seeing an error (spoiler warning) when updating feeds: “error in process sentinel: Search failed.” If you use Elfeed, you might have even seen this yourself. From the surface it appeared that curl, tasked with the…
Full-system dynamic tracing on Linux using eBPF and bpftrace
How do you debug an application, library or an entire system with multiple processes? One answer: tracing. An introduction into bpftrace, and an overview of the Linux tracing ecosystem (DTrace, eBPF, uprobes, etc).
Finding Kafka’s throughput limit in Dropbox infrastructure
Dash knows your context, your team, and your work, so your team can stay organized, easily find and share knowledge, and keep projects secure, all from one place.
Benchmarks of Cache-Friendly Data Structures in C++
Suppose you’re a savvy C++ developer who knows all about data-oriented design and the importance of optimizing for cache locality if you want a prayer of running fast on modern hardware. Now suppose you want to go beyond basics—”just use std::vector ” is a good starting point, but you want more!
How I ended up writing a new real-time kernel (2015)
You're reading the original article in English. You can as well read the translation in Russian .
Building a “Simple” Distributed System – Formal Verification
In the last post , we described a protocol that should satisfy the requirements and invariants established in the first post . Today we will look at formal verification with TLA+. Formal verification is just another (niche) tool in the toolbox. Some tools require more skill than others to use. So
The potential risk to ZFS created by the shift in its userbase
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…