This post is coming about 2 weeks late but:
- I applied & got into the Recurse Center, YAY!
- 2 weeks ago I started my batch (Summer 2)
My plan going in was to learn more about the following topics:
- Strongly Typed Functional Programming
- Low Level Programming
- 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 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.
- Python: https://github.com/jefflovejapan/drench
- Python: https://github.com/borzunov/bit-torrent
- JS: https://github.com/kzahel/jstorrent
- Erlang: This is a pretty massive file which is going to take a while to understand / untangle. https://github.com/jlouis/etorrent
DHT Information Specs / Projects:
Nix + BitTorrent: