This post is a log entry of my first 4 weeks at the Recurse Center (see initial post here).
The RC experience
So far RC has been a lot of fun. Those first 4 weeks have flown very fast. Finding the right balance between deep solo work and interaction has been one of the most difficult things.
I particularly appreciate the fact that there regular talk sessions (tech and non non tech). I gave a talk on Deep Work, from the eponymic book. I was pleasantly surprised by the positive feedback I got from it. By the way, I am trying to apply some rules from the book, I might write a post on this later.
I also enjoy pair programming with fellow recursers, which proved to be fun, instructive and demanding in terms of focus. Pair programming is made easy by a bot which automatically assigns pairing buddies every day.
Moreover, there is quite a significant pool of Haskellers in my batch, which I’m quite happy about.
Lastly, I feel fortunate to have been attending a algorave concert, of which some fellow recursers are adepts.
Build your own Lisp
I went through 75% of the book, and have built an REPL which can do a bunch of things, you can checkout the Github repository if you’re interested. .
(re) writing C code is very educational, and forced me to pull back concepts from my former student life, namely related to memory management, such as heap vs stack, pointers and friends. Speaking of which, my interpreter currently has some memory leaks (:ninja_face:) which I need to hunt down with Valgrind.
While the pedagogy of the book is great, I sometimes found myself lost in implementations considerations, with a lack of visibility on the bigger picture. I guess that’s a tradeoff inherent to a book with an implementation perspective.
I’m thinking about quickly skimming through the remainder of the book, without necesarily implement all the steps, to quickly switch to the next phase of my programming language adventures: implementing a basic lambda calculus interpreter.
Building my own programming language: next steps
Reading “build your own lisp ” was part of my larger objective to build my own programming language. After reading Build your own Lisp, I feel like I now need to get a more theoretical perspective, and after discussing with fellow recursers, the Type and Programming Languages book seems promising. It’s in the RC library, so I don’t even have to buy it!
In particular, the book quickly covers the construction of a (untyped) lambda calculus interpreter, which seems to be a good next step.
Cryptopals
I initially planned on doing the Cryptopals problems in Rust (and hence learning it at the same time). I quickly gave up on this plan, as it was taking me too much time. I might want to hack in Rust later in the batch though. For now I ditched Rust in favor of Haskell.
The problem set turned out to be harder than expected, and I found myself in a deep rabbit hole when doing problem 6. But by the end of this problem, you have code which is able to break repeating-key XOR (Vigenere), which feels super rewarding!
Category theory
Besides, I joined a study group on category theory. I have been curious about this topic for a while, and taking advantage of the study group was too good of an opportunity to miss.
The material used for the study group is the book category theory for programmers. I have been through the first 4~5 chapters, and it’s been a delightful read so far.
Cool stuff
As a bonus, Here is a list of cool stuff I stumbled upon / learned about during my 4 first RC weeks:
- Heinsenbug
- Quote from write you a Haskell: “Writing an industrial strength programming language involves work on the order of hundreds of person-years and is an enormous engineering effort.”
- Lambda calculus and YCombinator. I was already acquainted to those amazing computer science concepts, but I took some time to tighten my grasp on them.
- Tidal cycles. Make music with Haskell!
- Typed holes. A super cool Haskell feature which can help you figure out what code to write based on type inference.
Final word
That’s all I got in store for now. I may write more about my RC adventures.