recurse center
Wed Jul 18, 2018 · 3 min

This post is coming about 2 weeks late but:

  1. I applied & got into the Recurse Center, YAY!
  2. 2 weeks ago I started my batch (Summer 2)

My plan going in was to learn more about the following topics:

  1. Strongly Typed Functional Programming
  2. Low Level Programming
  3. Contributing to Open Source projects

This is a fly by summary of what I have done in my batch so far:

I have been mainly focused on the first goal of learning more about strongly typed functional programming, working through the Haskell Book and doing all the exercises for all chapters. I am currently on chapter 15. The book has been a fantastic resource and really helped drive home the fundamentals which are needed for building real projects in Haskell. The small Haskell exercises / projects I am doing at RC are kept here.

I also gave a 5 minute presentation on folds and unfolds (the slides for which can be found here).

I also worked with Omar on a parser to parse chemical formulas using Parsec, which was my first exposure to using parser combinators and monad transformers and a fantastic exercise.

I decided that the first project big project which I want to work on during my batch is a BitTorrent client in Haskell. A possible second / alternative project is enabling the nix package manager to install packages from the bittorrent network. Both of those require learning about how bittorrent works / how DHTs work, which I have begun doing by studying a combination of specifications and reference implementations (listed below):

I have also learned about a number of miscellaneous things like how OCaml's module system works (at a high level), how rust's traits work (and how the are very similar to Haskell's typeclasses). I also learned that the state monad is not adding any capabilities that are not already present in folds.


BitTorrent Implementations:

  1. Python:
  2. Python:
  3. JS:
  4. Erlang: This is a pretty massive file which is going to take a while to understand / untangle.

BitTorrent Specifications:


DHT Information Specs / Projects:


Nix + BitTorrent:


posts · about · projects · github · home