RSSAmplifier

Blog

Home on carlosgaldino

Recent content in Home on carlosgaldino

blog.carlosgaldino.comRSS feed ↗13 posts

Latest posts

Writing a file system from scratch in Rust

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: Millions of Tiny Databases

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. 
…

Consistent Hashing

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 Trees

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: 
…

Managing Update Conflicts in Bayou, a Weakly Connected Replicated Storage System

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: Fast Remote Memory

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…

A brief overview of the Raft algorithm

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…

A Critique of the Remote Procedure Call Paradigm - 30 years later*

* 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…

Defusing a binary bomb with <code>gdb</code>

I have bad news. The series of posts you are looking for is not available&#xA;anymore. Let me explain why. &#xA; First of all the series were about defusing a binary bomb 1 by reading its&#xA;assembly code to find what were the expected inputs that would defuse all stages&#xA;of the bomb. Each stage taught something about how a C program is executed. At&#xA;the end of the series you would&rsquo;ve…

<code>nil</code> vs <code>None</code>

Recently I saw a question like: &#xA; &#xA; Isn&rsquo;t nil the same as None ? &#xA; &#xA; This is my attempt to answer this question. 1 And no, they are not the same thing. &#xA; Let&rsquo;s consider the following function using a hypothetical language syntax: &#xA; &#xA; &#xA; 1&#xA; 2&#xA; 3&#xA; &#xA; &#xA; def sum ( a : Int , b : Int ) -> Int &#xA; a + b &#xA; end &#xA; &#xA; &#xA;…

Thinking About Types

Take a look at the following piece of code: &#xA; &#xA; &#xA; 1&#xA; 2&#xA; 3&#xA; 4&#xA; 5&#xA; 6&#xA; 7&#xA; 8&#xA; 9&#xA; 10&#xA; 11&#xA; 12&#xA; 13&#xA; 14&#xA; 15&#xA; 16&#xA; 17&#xA; 18&#xA; 19&#xA; 20&#xA; 21&#xA; 22&#xA; 23&#xA; 24&#xA; 25&#xA; 26&#xA; &#xA; &#xA; class Operations :: Operation &#xA; ALLOWED_OPERATORS = [ &#xA; # ... &#xA; ] &#xA; &#xA; attr_reader :operator &#xA; &#xA; def…

Review of <em>Endo-Testing: Unit Testing with Mock Objects</em>

&#xA; &#xA; &#xA; Endo-Testing: Unit Testing with Mock Objects &#xA; is the paper written by Tim Mackinnon, Steve Freeman and Philip Craig&#xA; where they introduced Mock Objects as a new technique for testing&#xA; software.&#xA; &#xA; &#xA; I had this paper printed for quite some time but I haven't read it yet. After&#xA; all the fuss about testing in the Rails community because of&#xA; &#xA;…

Notes on <em>Concepts, Techniques and Models of Computer Programming</em> preface

I have a personal goal of improving my knowledge about fundamental concepts of&#xA;Computer Science. I chose to start this by reading the book “Concepts,&#xA;Techniques and Models of Computer Programming” by Peter Van Roy and&#xA;Seif Haridi. &#xA; I always start reading a book by its preface and it usually pays off. This was&#xA;no different with CTM which made me even more excited about the…