Time Not Clocks

Fenimore Love @ New York


Synchronization Parables

These are three problems with synchronizing multithreaded programs (concurrent programming). Each is the form of a parable and demonstrates complications sharing resources across threads, even with the use of locks. More than my solutions, I think, these examples are valuable because the representation itself sheds light on different techniques in synchronization. The first two are from the 1960s, The Dining Philosophers and The Sleeping Barber attributed to Edsger Dijkstra. The third is from the 1970s and originates from Suhas Patil.

OAuth Protocol Flow in Go

Today I helped @stanzheng implement an oauth implementation in Go for his Recurse Center Cli application; as a result I learned the basic flow of oath authentication. Like using JWT, it’s token based. It’s for accessing Protected Resources on a third party’s application. The permission scope, expiry times, and refresh tokens can make for more or less complicated proceedures, but the basic flow is simple enough to grasp.

Bittorrent, a Dialog

This post is a short summary of the Bittorrent Protocol in dialog format.

While implementing the BitTorrent protocol, I’ve had to learn (and still am learning) quite a bit about networks and how computers communicate; namely communication on a distributed one to one basis. Implementing BitTorrent, at least as far as my road map envisions, involves at minimum three things:

  1. Parsing a Torrent file (and figuring out the Pieces needed).
  2. Communicating with a Tracker (and figuring out who the Peers are).
  3. Downloading and Uploading with peers.

Conway's Game of Life in Scheme

This week I inadvertently learned a new language and new programming paradigm along the way. My language of choice was a dialect of Scheme, Guile, but it lacked the basic library support I wanted, so I went with Racket; after a few scripts, I went ahead and programmed Conway’s Game of Life.

Deploying a Backend

So for this weeks main project, I had decided to latch onto another’s project and help out. My target was Richard’s mappyr mobile app, built in React Native; it’s kind of like a geolocation reddit where posting and viewing comments are done when actually at a location. My job, I offered, was to build the backend.


This week at the Recurse Center I took my ghess chess engine and implemented a MiniMax algorithm to give it some sort of AI. There are a number of steps to creating a chess engine

Network Probing

I ran into a few problems recently trying to make a tool for the Recurse center, and in doing so, I learned a bit about networks – stuff I might have heard before but I’ve never had to wade through in a significant way. Until now, it basically boils down to probing the local network, and starts with the Net Mask Finding all devices on the network My first task is to find all the tasks on the network.


Without This Common Currency

The Cobalt Current