I start at the Recurse Center on Monday for the Fall 1 ‘19 batch. I’m pretty excited and I’ve been thinking about what I want to do while I’m there. I’ve been thinking about it for quite awhile now, actually.

When asked what I wanted to do at RC during the application process, I said

I’d like to continue learning about programming languages and how they work as well as develop a deeper understanding of the Lisp family of languages and functional programming. So I’d maybe like to create some sort of compiler or interpreter.

Not much has changed here honestly. I still very much want to learn about PL, compilers, and interpreters (but perhaps I’m not as particularly focused on Lisp and functional programming). In fact, I’ve already started doing this. I’ve been taking the Programming Languages course on Coursera and have started the Crafting Interpreters book (as well as briefly flirting with Let’s Build a Compiler and Let’s Build an Interpreter). So I’m probably just gonna continue with both of those to start off with.

There are a couple of other books I want to possibly go through as well: Structure and Interpretation of Computer Programs (aka SICP, which I got up through part of chapter 2 in but never went through the rest) and The Elements of Computing Systems (aka NAND2Tetris). SICP I want to go through because it’s just such a legendary book and I want to experience the “magic” that supposedly happens in chapter 3 or 4. Also, a bunch of people in the introductory thread for incoming batches said they’re interested in SICP as well so I see opportunity for a regularly-meeting study group.

With NAND2Tetris, I want to plug up the major holes in my computer science education (I dropped out and only took 2 or 3 comp sci classes in college and failed a couple because I was a pretty “meh” student while there). In the book, the reader goes from bootstrapping a computer with NAND gates all the way up to writing a program in a Java-like language that they made a compiler for from scratch. It doesn’t go super deep into any of the individual aspects of these various components, but it clearly goes deep enough into each of these subjects to build a fully fledged computer from nothing but NAND gates. And that’s really what I need at the moment. Breadth instead of depth to plug up some of those gaping holes.

A few other things:

  • I want to maybe look more deeply into computational art. This has been an interest of mine in the past so maybe it will be sparked again.
  • Maybe start a podcast where I interview Recursers who are not currently at RC. This since hindsight is 20/20 and these people will probably have a more developed view of what they got out of RC. Maybe interview people who are currently there.

With all that being said, I need to leave room for serendipity and try to not overplan. Not only have I realized this myself, but it’s evident that people’s plans change (at least a little bit) when they get there based on blog posts I’ve read from other Recursers 1. Recurse Center is all about exploring what interests you and becoming a dramatically better programmer. There’s a pretty decent chance that I have an incomplete knowledge of what it would take for me to become a better programmer and there’s bound to be subjects and ideas I encounter that I didn’t know I was interested in. Perhaps I’ll do a bunch of pair programming (I’m a little skeptical of this, but it’s highly encouraged at RC so I should at least try). Maybe I’ll get pulled into someone else’s project. We’ll see! That being said, I can’t jump at everything new that interests me. I need to stick with going deep into a thing or two. I need a balance in able to gain as full of a benefit as possible from RC.

  1. here’s a hack: Many Recursers have a place on their blogs for RC Scout, a voluntary ad program for recruiting new applicants to RC. The link text for this is always “Want to become a better programmer? Join the Recurse Center!” So if you just google that phrase in quotes, you’re sure to find some interesting blog posts from Recursers