I'm taking a sabbatical and attending Recurse Center!

Sunday, September 11, 2022

It's been almost a decade since I graduated from college. In that time, I've worked at three startups, co-founded a non-profit immigration tech company, consulted for the United Nations, and noped out of grad school after one semester (twice!). I've also struggled with depression and anxiety, had three different therapists, and tried multiple different anxiety and depression medications. And I've adopted three cats, met and married my wife, and had two kids with her.

During that decade, I've kept learning. On the job. On the weekends. In my evenings. I'm tired.

During that decade, I've not had time to sit down and really dive deep into becoming a better programmer, a better software engineer. I've done a lot I'm proud of, but I haven't had the chance to dive deep since college. It's time to do that. I'm going to take a sabbatical from work to spend dedicated time becoming a better programmer and software engineer.

This is a great privilege, and not one I'm taking lightly. Many people do not have this opportunity for myriad reasons, and I'm grateful.

I'll be taking 12 weeks off of work and attending Recurse Center in the Fall 2 batch, starting September 19th. Here's what I'll be learning and how I'll be doing it.

My Recurse Center Plan

My overall goals for attending Recurse Center are:

  • Learn systems programming better
  • Learn how things like key-value stores, databases, and queues work under the hood and what makes them efficient/performant
  • Learn more effective debugging
  • Learn how to performance profile things other than CPU

To specifically achieve these, I have a couple of project ideas that are in loose stages. I don't want to get too detailed in my planning lest I lose flexibility (a tip from multiple RC alumni!), but I need some plan or I'll spin my wheels. So, I'm going to work on two main pieces of software while I'm at RC:

  • Key-value store compatible with (a subset of) Redis
  • Chess engine

That second one is going to be rationalized as a way to understand performance optimization, low level stuff in general, and it'll also have some disk or other IO, but honestly... I also have just had a yearning to do it for so long. So I'll rationalize it, but let's be honest about why I really want to do it.

There is also a lot of pair programming as part of RC. I'm looking forward to learning from everyone else in the batch, and helping them in their learning journey however I can. Learning together is a tremendous way to make faster progress than learning alone. You also learn things you wouldn't have learned on your own. Serendipity is a tremendous thing.

If you want to follow along, everything will be open source. This is a requirement of RC so that people can collaborate, and I'm looking forward to learning in the open—but I'm also a bit nervous! Here are the repos I'll be working out of:

You can also follow me on GitHub in general to see all the things I'm working on.

Why Recurse Center?

I am taking the time off work, but why attend Recurse Center specifically?

To benefit from the community, and to benefit the community. Going through this learning process with a group of peers who are also learning will help me stay on track and get unstuck when I inevitably run into barriers. And I'll learn unexpected things by helping other people, too! I've long wanted to attend after hearing about the experiences of folks like Julia Evans.

Now's the time, since it's still online (going to NYC for a bit would be disruptive for family life). I can't wait to pair program with a bunch of great folks on their work and mine. And I hope to come out of it with some new friends.


If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.

Want to become a better programmer? Join the Recurse Center!