Data produced by programs need to be stored somewhere for future reference, and
there must be some sort of organisation so we can quickly retrieve the desired
information. A file system (FS) is responsible for this task and provides an
abstraction over the storage devices where the data is physically stored. 
 In this post, we will learn more about the concepts used by file…
Physalia [1] is a key-value store built at Amazon for the AWS Elastic Block
Storage (EBS) service. The paper presenting the ideas behind it appeared at NSDI
‘20. 
 One of the distinct characteristics of Physalia is that by being aware of the
topology of the data centre it can improve the availability of the system by
reducing the probability of network partitions. 
…
Introduction 
 Traditional hash tables map keys to an array index using the following process: 
 
 
 1
 2
 
 
 hash = hashFunc ( key ) 
 index = hash % arraySize 
 
 
 When the arraySize changes, all keys need to be remapped because the index is
calculated by a modular operation. 
 The same technique can be used to partition the data from…
Merkle Tree 1 is a data structure where every non-leaf node contains the hash
of the labels of its child nodes, and the leaves have their own values hashed 2 .
Because of this characteristic, Merkle Trees are used to verify that two or more
parties have the same data without exchanging the entire data collection. The
following figure shows an example of a Merkle Tree: 
…
Bayou [1] is a replicated storage system providing weakly consistent guarantees
designed for mobile computing environments. The system and paper were published
in 1995. At that time PDA’s (Personal Digital Assistant) were common and played
a big influence in Bayou’s design 1 . 
 Bayou only requires occasional, pair-wise communication between computers. This
is…
FaRM is a main memory distributed computing platform that provides distributed
transactions with strict serializability, high performance, durability, and high
availability. 
 To scale out, FaRM distributes objects across machines in a data center and also
allows transactions to span any number of machines. To reduce CPU overhead it
uses one-sided RDMA (Remote Direct Memory…
Raft is a consensus algorithm for managing a replicated log. It is used to
achieve an agreement between multiple entities allowing them to serve as a
coherent group that can tolerate failures of some of its members. For example,
you can have several Key/Value servers and want them to have the same values so
in case some of them fail the system still operates correctly since the…
* Almost 30 years since the paper was published on 1988. 
 I recently read a paper written by Andrew S. Tanenbaum and Robbert van Renesse
where they discuss the problems of Remote Procedure Calls (RPC). The paper is
titled “A Critique of the Remote Procedure Call Paradigm” and it was published
on 1988. After reading it I thought it would be interesting to see what have
changed…
I have bad news. The series of posts you are looking for is not available
anymore. Let me explain why. 
 First of all the series were about defusing a binary bomb 1 by reading its
assembly code to find what were the expected inputs that would defuse all stages
of the bomb. Each stage taught something about how a C program is executed. At
the end of the series you would’ve…
Recently I saw a question like: 
 
 Isn’t nil the same as None ? 
 
 This is my attempt to answer this question. 1 And no, they are not the same thing. 
 Let’s consider the following function using a hypothetical language syntax: 
 
 
 1
 2
 3
 
 
 def sum ( a : Int , b : Int ) -> Int 
 a + b 
 end 
 
 
…

 
 
 Endo-Testing: Unit Testing with Mock Objects 
 is the paper written by Tim Mackinnon, Steve Freeman and Philip Craig
 where they introduced Mock Objects as a new technique for testing
 software.
 
 
 I had this paper printed for quite some time but I haven't read it yet. After
 all the fuss about testing in the Rails community because of
 
…
I have a personal goal of improving my knowledge about fundamental concepts of
Computer Science. I chose to start this by reading the book “Concepts,
Techniques and Models of Computer Programming” by Peter Van Roy and
Seif Haridi. 
 I always start reading a book by its preface and it usually pays off. This was
no different with CTM which made me even more excited about the…