RC 2024 week 1: finding community
published: 18 August 2024, tagged: Recurse Center
So, that’s my first week at the Recurse Center over and done with! And my word, what a week it’s been. I tried to spend as much time as possible going to anything on the calendar that looked interesting, which means I didn’t have much time to write code, but I met a lot of people and got to see some awesome projects so I don’t regret my decision.
First of all, everything I’ve heard about the culture at RC is completely true so far. As a member of several marginalised groups, I often find myself feeling like an outsider in tech spaces. Being in a field heavily dominated by cis white men, it’s all too easy to feel somewhat othered, and that my voice isn’t being heard. At Recurse, though, I’ve felt absolutely none of that. It takes a lot of work to create and maintain such a diverse and welcoming culture, and the faculty as well as the rest of the RC community continuously work to do so. More than any other technical space I’ve been part of, I feel like I truly belong at RC.
what has lucy been up to?
So. Much. I decided to keep a written log of what I’ve been doing with my time this week, and I’m incredibly glad because there’s no way I would have been able to remember everything myself.
My batch started with the introductory meet and greets. These were structured a bit like a speed dating event, so I met a lot of people in a very short time. It was an absolutely amazing start: only a couple of hours into the first day and already I’d met a whole bunch of my batchmates and heard about all the interesting things they were working on.
Then us remote folks got a chance to explore the software side of RC. As well as the usual suspects like a chat system (in this case, Zulip) and calendar, there’s also a whole virtual Recurse Center! It’s a 2D version of the physical hub that runs in a browser, where you can see which zoom rooms people are in because their little avatar is standing there. It’s a little thing but I think having a shared space really adds to the remote experience. There’s also a coffee chat bot that randomly assigns you another person to chat to on days of your choosing. I’ve had coffee chats nearly every day so far, and they’ve been a great way to get to know some of my batchmates.
Perhaps my favourite introductory event was the pairing workshop: you and another Recurser get a simple brief – for us, it was writing an implementation of Conway’s game of life – and then you have an hour to implement it together. It was a great way to start pairing with people in a low-pressure environment, and I definitely feel more comfortable asking people to pair on my actual projects now.
Most of the events at RC are organised not by the faculty, though, but by other Recursers. There are a few long-running events that have carried over from before my batch, since the Summer 2 batch is still here for another six weeks, and I decided to check out quite a few of them. Among my favourites were the groups on operating systems and systems programming, practical language design, and the Nix language and tooling. There were also a few of us who were interested in category theory, so this week marked the beginning of our category theory study group! Unfortunately I doubt I’ll have time to keep attending all of these events if I want to start making progress on my own projects, but I’m glad I checked out so many just to see what was happening. For now, I think I’m going to stick with the category theory and systems programming meet-ups.
And then there were the presentations! First, there are non-programming talks every week on Wednesdays. I’m not sure what I was expecting to hear about but it definitely wasn’t tiramisu and moss. It turns out tiramisu is a lot easier to make than I had assumed, so I’ll have to give that a go now (upon telling my partner and my parents this, they all suddenly seemed to be quite hungry – something tells me I’m not going to get a choice in the matter but you won’t hear me complaining about it heheh).
Then there are the programming talks that take place weekly on Thursdays. To name a few of my favourite topics: developing a command line poker game; automatically taking screenshots from a reMarkable tablet and embedding them in a note in Obsidian by calling one function; and connecting a Raspberry Pi to the internet by playing a T9-encoded WiFi password with DTMF tones into the handset of a landline phone. All of these, and the many others I didn’t mention here, were fantastic and I’m very glad I got to see them.
woah dude that's... a lot
Yep! It’s been a very social week for me, and I’ve enjoyed meeting everyone and going to all the events, but next week I definitely want to get some more technical work done and pair with more people. I did get a little bit of programming done this week though: I’ve been learning the basics of Go and getting the toolchain all set up, and started laying the groundwork for my chess engine. I’ll write a separate, more technical post about what exactly goes into that, but in short, I have to encode the rules of chess so I can tell which moves are legal from a given position, and teach the bot to speak to other chess programs so I can play against it.
so what’s the plan?
As I mentioned earlier, I’d like to dial down the social stuff from this week and start making more significant progress on my technical projects. With that in mind, here are my goals for the next week or so:
- for the chess engine, I’m hoping to have at least the legal move generation working by the end of next week. I’d also like to make sure I have comprehensive tests and some benchmarks set up: getting move generation right is extremely important, and since chess engines play with clocks, ‘thinking’ time is limited so I want to get benchmarking working from the beginning. So far, though, I’m really enjoying the support for testing and benchmarking built into Go.
- I’ve been fascinated by eBPF since I discovered it a couple of years ago, and I’d love to try and write some actual tools with it. The application I had in mind back then was a sampling profiler, which still sounds fun, but I’m open to being distracted here.
- I’ll carry on with the category theory group; so far I’ve read through the first three chapters of Bartosz Milewski’s Category Theory for Programmers. I have a formal background in category theory from my maths degree, but I’m curious to see the more advanced applications for working programmers as opposed to, say, homotopy theorists.
Don't worry, homotopy theory, we still love you <3
That’s about all I wanted to say about this week, so I suppose there’s nothing else to do but get on with it! So with that, dear reader, I bid you adieu; see you again this time next week :)