Blog posts

2019

Models of Failure in Distributed Systems

7 minute read

Published:

In distributed systems, protocols and algorithms are each designed with regards to a particular set of assumptions. One of these assumptions is the failure model of components of the system. For example, we might make assumptions about how processes fail, and others about how the message-passing system, the network, fails. These assumptions are critical as they provide us with knowledge of the capabilities of protocols as well as a means of comparing them. In this article, I present a survey of the different failure models used in distributed systems.

Byzantine Fault Tolerant Broadcast

7 minute read

Published:

An essential primitive in distributed systems is broadcast, or the ability to send a group of participants the same message. In the honest case, this problem is straightforward; send everyone the message and acknowledge its receipt. However, this problem becomes complicated under the assumption of byzantine faults. If we apply the honest protocol to the byzantine environment, we may have different peers accept different values! In this article, I give a summary and implementation of an algorithm for overcoming the problem.

Running Games on the Blockchain

4 minute read

Published:

The year is 2019, and one of the computer science memes that refuses to die is the blockchain. People in my lab use “but what if we put it on the blockchain” as some sort of sick joke. However, IBM’s recent work Hyperledger Fabric presents a “distributed operating system for blockchain applications.” An operating system you say? Let’s see if there is some truth to this meme by implementing Pong on the blockchain.

How to Do Research Meta Discussion

2 minute read

Published:

These are the notes from a lab meta discussion on doing research, reading papers, and finding ideas. The ideas are presented in no particular order.

Time, Clocks, and Leslie Lamport

6 minute read

Published:

In the paper Time, Clocks, and the Ordering of Events in a Distributed System, Leslie Lamport defines the happens before relationship for distributed systems. This is a seminal work that is fundamental to the understanding of distributed systems. It addresses the simple yet profound problem of answering the question, “What happened when?” This is an overview of that paper and a summary of the key ideas.

The Fifth Wave of Coffee

3 minute read

Published:

American coffee has progressed through a series of waves. Each wave is defined by common trends in the coffee industry. The consensus is that there have been three waves so far, and we are in the early stages of the fourth wave. The purpose of this article is to give a -very- brief summary of each wave, followed by speculation about what the fifth wave and beyond may be.

2018

Building a bike

3 minute read

Published:

This is a blog post to log the progress and process of building a bike. My first real bicycle had its frame bent while it was locked in Porter Square, and I’m going to revive it by putting the old parts on a new frame. This is the log of my first ground-up bike build.

Charging the Roaster

2 minute read

Published:

I don’t consider myself an expert (yet), but I am frequently finding the need to share and record my coffee related opinions in some manner. I hope that part of this blog can serve as both a simple knowledge repository as well as the home for my opinions. Some of the topics I want to cover are -