A Programmer’s Utopia

2022-Aug-15

Amidst all the chaos in the world there is a community of passionate programmers who are constantly working on interesting projects, learning new topics and have a great sense of camaraderie. People in this community, driven by their self motivation to become better programmers, do a lot of pair programming, meet with people who share interests to brainstorm ideas and give talks about their projects. This beautiful community is called as Recurse Center.

Starting in May, 2022, I had the privilege of spending twelve weeks with the community (virtually) to learn and work on projects that caught my fancy. In this post, I will give an overview of my experience.

1. Applying to RC

Initially, when I read through RC’s philosophy, I was delighted to know that such a place exists because I also had similar ideas about education. As a college student, I’ve always felt like attending classes, doing homeworks and the assigned projects, and writing exams were not adequate enough for me to learn a concept. I can be confident in my understanding of a concept only if I apply it in a project I’m working on as I was able to sincerely appreciate concepts like functional programming and high order functions only after writing a LISP interpreter.

Due to my strong alignment with RC’s philosophy, I believed I had a good chance to get admitted into RC and I indeed did. I was on cloud nine when I got admitted because it gave me a sense of validation for who I was as a person.

2. First six weeks

In the first six weeks of my batch, I spent most of the time interacting with the community and reading Programming Language Pragmatics. I also contributed to Jakt programming language and was happy to have a few commits merged into a popular open source project. Finally, I gave a couple of talks about my interpreter project and scanner theory to improve my presentation skills.

2.1. Compilers and Interpreters Implementation

In this weekly event, I met other Recursers interested in writing compilers and we discussed about Haskell, OCaml, Rust, logic languages, parser combinators, and interesting research papers in the field. This event introduced me to a number of other resources I could use to build upon what I learnt so far from reading Crafting Interpreters. By the end, I was grateful to have met people who share my interests.

2.2. Music Consumption Group

A weekly social event where a bunch of Recursers hop on a Zoom call, queue a track of their choice and the host will play each track in order. The event was late in the evening so it was fun to listen to a variety of music while cooking dinner or fixing a gnarly bug.

3. Last six weeks

I spent most of the time working on Bessy, a bytecode interpreter written in Rust. I frequently sought help from other Recursers and their guidance helped me to write tests for I/O functions and to add a web interface for my interpreter by compiling it to Wasm.

3.1. Rust Rodeo

A weekly event to discuss everything related to Rust. Here we helped each other get unstuck on compiler errors and read through popular Rust code bases to improve our knowledge about the language and its ecosystem. Occasionally, someone gave a talk on something cool they learnt about Rust. Through the course of this event, I found myself learning more about generic types and trait system which in turn helped me to write more idiomatic Rust for Bessy.

3.2. Zig Zones

This was an interest group for Zig programming. Initially, I was curious to learn what Zig has to offer in terms of an improvement over C and was fascinated by its C interoperability as a first class feature. I played with the toolchain and, with the help of Recursers, I was able to compile a existing C code base using zig cc and also transpile it to Zig. You can read more about our process to translate a C project into Zig in Jeff Fowler’s “Zig translate-c and linking equal best friends”.

3.3. Scone Production and Consumption Group

This was an occasional social event where I baked Scones along with other Recursers by following the recipe written by Stella Parks. This was my first attempt at baking and I really enjoyed the process even though my Scones ended up looking like giant cookies because I did not follow the recipe word for word :). Nevertheless, I see strong parallels between programming and cooking/baking and, for me, both the art forms evoke the same creative feeling.

4. Never Graduate

Finally, my batch ended in the first week of August, 2022. Doing a batch at RC was an unique and memorable experience for me. The environment was highly diverse and all Recursers were kind and supportive of each other’s goals. I’m grateful to the RC faculty for creating and maintaining this safe and happy place.

As a proud alumni of RC, I’ll carry the spirit of RC everywhere I go and look forward to the day I can hangout at RC in-person.