Sitemap

A list of all the posts and pages found on the site. For you robots out there is an XML version available for digesting as well.

Pages

Posts

Hogwarts Legacy: A Charming Disappointment

5 minute read

Published:

Hogwarts Legacy is a great game. Wholely, when playing this game you feel the amazement and nostalgia of discovering the wizarding world of magic. It has gorgeous visuals and an engaging combat system, both of which prime you for a gripping adventure. However, while I can sing this games praises I also have many, many critiques. These critiques prevent me from recommending this game to fellow capital “G” Gamers.

A Blueberry Mead

1 minute read

Published:

After the dishes had been cleared from our Thanksgiving dinner, I began a long planned project I had in the back-log. Several months ago, after trying my hand at beer brewing, I picked up from my local homebrew store the yeast and nutrients necessary to brew mead. Simpler than beer - the barest version made only with honey - it seemed like a natural progression after learning about fermentation and processes of the home brewer. With excess time and energy, I began the therapeutic process of the boil…

The Raft Consensus Protocol

9 minute read

Published:

Raft is a protocol that solves the distributed systems problem of consensus. Specifically, Raft allows a network of machines to agree on the entries in an append-only log. When an entry is committed to the log on one machine, the protocol gaurantees no other machine will ever commit a different entry at the same index.

Evaluation of GoMR Against Spark

8 minute read

Published:

I created GoMR to solve a simple problem: make it efficient and painless to deploy MapReduce jobs on a single, moderately powerfull machine. Despite not having as pretty of an interface as today’s competitor, Apache Spark, I believe I was successful in achieving this goal. As well, the system and applications are written in my favorite language, Go.

GoMR: A MapReduce Framework for Golang

11 minute read

Published:

In a world of big data and batch processing, MapReduce is unavoidable. But my recent experience of getting Hadoop up and running for single-node debugging was a nightmare. Here, I present my implementation of the MapReduce framework written in my favorite language, Go, and designed for a single machine.

A Reddit-Style Comment System in Golang

3 minute read

Published:

Preparing for job interviews, I found this question on Glassdoor. The problem was to design a commenting system similar to Reddit’s. Here, I use this problem to show how to problem solve using Golang’s ease of HTTP/API development. I will present my Golang implementation which is based on grpc.

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.

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 -

portfolio

publications

talks

teaching