I have been living in New York City as one among the incredible Recurse Center community for the past four weeks. Which means one third of my time as a Recurser is behind me and I can’t think of a better occasion to blog about RC. I have been procrastinating blogging for so long, but today is the day I finally do it!
What is Recurse Center, you ask?
The Recurse Center is a free, self-directed, educational retreat for people who want to get better at programming, whether they’ve been coding for three decades or three months.
But so far, RC has been that and a lot more for me. After the first week’s panic of overwhelming experiences(living in New York City, sharing a hipster looking workspace with extremely talented people from all around the world, planning what to focus on during my time here, etc. to name a few), RC has turned out to be one of the best experiences I have ever had in my life. I learn from the nicest and coolest bunch of nerds I have ever met, I live with two amazing fellow Recursers, and I live in the biggest city in the world! What more can I ask for?!
Getting in the learning mode was not easy. After all that globe trotting, it took some serious effort to get back to programming and to decide what to work on. After a lot of talking with people and thinking, I decided to make my computer science foundations stronger first. While I was at it, I decided to pick up a new programming language. Since I was thinking about re-writing the DHT part of PeARS in another programming language, it felt right to pick up Erlang which has amazing concurrency support. Erlang syntax didn’t appeal me much, so I decided to go with Elixir and turns out it works great in a distributed setup. I have solved a lot of algorithms, implemented couple of interesting data structures, etc. in Elixir so far and I think I am getting a hang of the language. Alongside, I am catching up with all the reading that I have been putting off. I read books on Algorithms & Data Structures, High performance Python, Metaprogramming in Elixir, Purely functional Data Structures(starting to, i.e.), etc. I attend some very interesting study groups like Python study group, algorithms study group, a white paper a week study group(YES!!), 7 databases for 7 weeks study groups, etc. I am in the process of figuring out if I can write a transpiler for Python byte code to work on BEAM(The Erlang VM). It is a bit ambitious since one is stack based and the other is register based, but I am researching the possibilities and I have people around to help.
The best thing about RC isn’t just learning, it is collaborative learning. I pair programmed with people on a lot of code I wrote, and it has influenced the way I write code and the way I think while doing it. I now do TDD which I always was too lazy to do. I now think in the functional way when coding and it make even my Python code cleaner. It has been great to know and learn what other people are working on at least to know my options. An open mind is something I packed with me , but I am trying hard not to lose focus on the things I want to accomplish by myself. I sometimes feel like I don’t do much and that I get too side tracked but the fact that I keep learning and working makes me happy.
Don’t get the wrong impression that RC is just about learning 24/7 and burning yourself out. We have a lot of social events happening throughout the week. The RC alums drops by every Thursday and that’s a lot of fun. We have game nights with Pizza and beer. And did I mention that we have a 3 day weekend? We hang out outside the RC and sometimes even do the touristic site-seeing things, although the weather hasn’t totally been in our favor. Believe it or not, it is actually snowing outside! In the middle of march! I am not complaining though. It is cherry on top of the cake for me since this is the first time I am actually seeing snow showers! Also, I take kick-boxings lessons here. So much fun!
So things I look forward to doing in the next 8 weeks - Spring in New York(!!) Having a lot of fun, working on my transpiler, implementing things from Purely functional data structures, attending the interview prep on Fridays, building a web development framework in Elixir, implementing a lot more of the exotic data structures and algorithms, and anything else that might please me. :)