Sequences are one of those Postgres features that you don’t think much about. You can ask for the next number in the sequence, and you get it. That works pretty well when you have one machine asking for the next number, but what about 10,000?
Summary of It’s Time to Replace TCP in the Datacenter This position paper from John Ousterhout sets out everything that’s wrong with TCP and exactly how we should fix it.
I love this article from lwn and this conclusion especially: this ability to take a property that the language does not know about and “teach” it to Rust, so that now it is enforced at compile time, is why he likes to call Rust an “X-safe” language. It’s not just memory-safe or thread-safe, but X-safe for any X that one takes the time to implement in the type system.
Summary of Kafka: a Distributed Messaging System for Log Processing Apache Kafka is a system for streaming logs with the aim of providing high throughput over strict guarantees around delivery. This was an interesting paper to read ~13 years on, as Kafka has become more and more ubiquitous in system design.
I’m on vacation, so I’m getting some time to do things that interest me in between time spent with family and recharging. As part of that, I wanted to write a blog on turmoil and how to use it for testing, and I’ve ended up yak-shaving my way into making a preprocessor for mdBook to compile examples that use external dependencies. I say making instead of writing, because I prompted my way to a…
Summary of Anvil: Verifying Liveness of Cluster Management Controllers Wouldn’t it be nice to write some software and confidently say that you know it’s right? That, as long as some assumptions about the world hold, it’s going to do exactly what you want it to, no matter what strange permutations or combinations of failures happen. In broad strokes that’s the promise of formal verification and…
Summary of MRTOM: Mostly Reliable Totally Ordered Multicast This paper is about building a network primitive to speed up consensus protocols. Like other papers in this area, MRTOM builds on the fact that network ordered protocols can have much higher throughput than standard consensus protocols. MRTOM takes this one step further by offloading not just packet ordering, but also the fast path of…
Summary of How Hard is Asynchronous Weight Reassignment? Majority quorum systems are useful in providing a simple mechanism for consensus. To accept a value, you need a majority of servers to agree to accepting it. Weighted majority quorum services (WQMS) take this approach and recognise that some servers are going to have better performance than others, so they should get more voting power.
Summary of Hydra: Serialization-Free Network Ordering for Strongly Consistent Distributed Applications Replicated systems typically pretty much always have some overhead in comparison to unreplicated systems, at least if you want strong consistency for your data. We need to do extra work in order to make sure that we get the same result across all nodes. The fastest systems minimise or avoid that…
This is my rough sketch of advice for people trying to get their first role in the tech industry. A lot of this is synthesized and regurgitated from what others have told me, so might be pretty recognizable! Cracking the Coding Interview is a really excellent resource for all of this too.