RC Week 4: Gratitude and emotions

Friday, October 14, 2022

Wow, my RC batch is one-third done. I've just finished my fourth week, and there are eight weeks left. Time is flying by. I feel like I've settled into a decent groove.

Taking a step back, it is setting in how much I've learned so far and how much I've accomplished. In these four weeks, I've learned about the architecture of databases and managed to write a key-value store that has durable storage and still outperforms redis on my machines. (It's multithreaded against redis's single thread, but that's their design choice.) I've also learned about how chess engines work and wrote one that, using a standard technique, can beat me.

The most important things, though, aren't these accomplishments directly. They're the feelings I've gotten.

Before my batch, I wasn't really confident that I could "do" database stuff. Sure, I can write stuff at work that performs well, but can I really do this deep hard tech? That's what real engineers do, not me! And can I write a chess engine? Gee, that's what real, hardcore engineers do. I'm not that hardcore!

Before my batch, I was also feeling pretty... I hesitate to say burnt out, but I was finding absolutely no joy in using computers. I would find things I wanted to read, wanted to learn about, and my brain would not kick into gear, would not engage. Programming hurt, and computers hurt. (And not just physically from my painful nerve/inflammation issue!)

But now, I'm feeling a lot more confident in all of this. First and foremost: I fucking love coding again and oh god, it's so much fun to write code. (I could qualify that, but no, it's just fun to write code!) And I'm also a lot more confident in my ability to learn now. I've read a few database papers, including a survey paper of over 100 pages, and got real tangible insights out of them. In a few weeks, I've gone from not being sure how something like redis works, to being able to (roughly) describe the architecture of databases in general. If I want to work on databases, and I'm engaged with it, I can do it.

The gratitude part

One of my fellow Recursers posted today that they feel lucky to have the time and space to explore things here, to have support from people, to be able to support others. I read this and realized that I haven't expressed this gratitude recently.

I'm really fortunate to have a great employer who graciously let me take a sabbatical to go do this wild thing that I couldn't always even really explain.

I'm so fortunate that this program even exists. The faculty here are so dedicated to keeping the culture one that is warm, welcoming, supportive, where we can fully engage and where we can be vulnerable and learn together. The fellow Recursers here are so generous with their learning and with their time. I'm very fortunate to have landed in this place with so many other people.

I think I have some new friends, and hopefully friendships that will last for a while. The people here are fantastic. (The fact that they appreciate my puns doesn't hurt, either.)

One year ago, I was in an extremely rough mental spot. When I went for a walk this evening, I was struck by just how different my mental state is now than one year ago. I had recovered from that episode before RC, but RC has elevated me to the other end of the spectrum. When I was on a coffee date with a friend this morning, he commented on how much energy I have.

I'm very grateful to have been welcomed and accepted into this community where I can blossom as a programmer and as a human.

And I'm grateful to my family, who have been immensely understanding and supportive of this adventure, and have provided immeasurable help with childcare. Thank you, Eugenia, mom, and dad. And thank you, Sophia and Alexei, for understanding that mom is at work a lot.

I'm not crying, you're crying

Emotions. Whoops.

Okay, what's next week?

Well, this week I got a few major things done (durability in anode-kv and alpha-beta negamax in patzer). Next week I'm going to set the stage for the next round of major progress, but it'll be smaller features and cleanup.

  • Keep pairing every day, keep coffee chats every day
  • Make progress on patzer:
    • Write a blog post explaining alpha-beta pruning, mostly so that I can shore up my understanding of it!
    • Implement the UCI protocol (#5) so I can start evaluating patzer against other engines
  • Make progress on anode-kv:
    • Implement set operations (#10)
    • Add tracing (#8)
    • Add command-line options and config (#7)
    • Clean up the transaction log handling (#6)
    • Have some preliminary discussions around how I would implement something like a relational DB on top of this foundation
  • Read another Red Book paper
  • Read two chess papers (one on Deep Blue, one on Alpha Zero)
  • Engage my math brain
    • Learn some category theory
    • Learn some Lean (chapter 3, so we're getting into proofs now!!!)

There's a lot next week! It'll be fun, and I fully expect that like most weeks, I've planned more than I can do. That's worked out so far, because it always gives me something to latch onto if the current thing is getting hard to focus on.

That's all for this week!

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!
Want to hire great programmers? Hire via Recurse Center!