On Showing Up To School In Your Underwear, or, My One Day at Recurse Center

Posted on August 10, 2020 by Erik Davis
Tags: learning, career, recurse-center

I recently had the opportunity to participate in the Fall 1 2020 batch of the Recurse Center, during the midst of the COVID-19 pandemic. Unfortunately, I only attended for one day. Still, keeping with the spirit of the times, I thought I would write a retrospective. Time to look back on my RC journey!

What I Imagined the Recurse Center to Be

I had heard of the Recurse Center some years ago, through (I believe) Dan Luu’s blog. The basic idea is that RC is a “self-directed, community-driven educational retreat for programmers based in New York City”. My mental model for what this looked like is something like this: people from various walks of life come together in a common space to do cool/fun software stuff. Longer term or overarching goals vary somewhat from person to person (e.g. some may want a career change, some want to goof off, some want to learn something very specific), but broadly speaking the participants are there to learn, play, and improve as programmers. As a business, RC operates via supplying recruiters with a pool of talented and motivated job candidates. But for the participants itself it is free, and there is no particular pressure to take a job. Sounds pretty awesome!

Looking back at what I was hoping to get out of RC, the main things were

Thus I thought the Recurse Center had a lot to offer above and beyond an independent sabbatical. But it’s not easy to make it out there to NYC.

Making the Leap

I had flirted with the idea of applying to RC for some time, but personal circumstances made committment to it difficult. The first time I considered attending was in 2016, after finishing a math phd. At the time, I did not have the money to support myself living in NYC without a job for 3 months, and so let go of the idea. The second time I considered attending was last year. I was working in the Bay Area as a software engineer and had enough money to pay the bills, but I was also engaged in a long-distance relationship at that time, and was hesitant to uproot myself in a way that would put more physical and emotional distance between myself and my partner (the good news is we’re married and living together now!).

Due to the COVID-19 pandemic, the Recurse Center has shifted to an online-only format, and suddenly my excuses for not attending had evaporated. I applied for a batch and went through the standard interview process: first a quick Zoom call to talk about big picture stuff (personal motivation and so on), followed by a pair programming session (I worked on a toy computer algebra system in Python). And like that, I had been accepted!

I was quite excited to attend. But the last step was also the scariest: I had to quit my job. There’s a nerve wracking element to quitting a job during a pandemic, but I felt that in my current role I had stopped growing in a positive direction and imagined that attending RC would give me some time and space to move things forward. So I did it – I put in my notice at work, and spend the last two weeks trying my best to leave my (former) teammates in a position for success with me gone.


The RC interview process was relatively simple: there had been two Zoom calls scheduled, and the information about these was displayed on the Recurse website immediately upon login. Once I had been accepted, though, things got a bit messier.

It goes without saying that running an online educational retreat differs substantially from an in-person one. In the week leading up to the first day of my batch I received a dozen or so emails covering various operational details, invitations to join Zulip (the chat / discussion software used), to join the GitHub organization, requests to fill out my Recurse profile, links to documents with titles like “Remote RC Orientation Guide”, and so on. It was a lot to take in, and I was wrapping up my last week at work, but I figured that I would get the hang of things once the batch officially started.

I also was assigned an onboarding buddy, who I chatted with the Saturday before my first day. This was quite fun, as we happened to have a number of overlapping interests, so the conversation naturally took care of itself. This experience reinforced in my mind that I had made the right decision to attend: spending a few weeks / months hacking around on software stuff with people like this seemed like a real treat.

The last thing I remember from onboarding was a link to a shared calendar, to which anyone could create a new event. There were already quite a few on there, such as a weely meeting for people trying to learn more mathematics, another weekly meeting for a ML reading group, a daily leetcode practice time, “office hours” held by various RC staffers, some fun stuff, like a streamed cello practice on saturdays, music / book clubs, and many more.

One of my concerns about attending remotely is the time difference between participants. I’m on Pacific time, the Recurse Center itself is on Eastern time, and many of the participants for the remote batches are even further away: some in South America, some in Europe, and so on. But most seemed to be based out of North America, and it was a relief to see the calendar events: although some were at times which I likely wouldn’t attend (e.g. there was an Elm hacking session at 3am my time), most were mid-morning to early afternoon PST.

Pretty cool! I went to bed Sunday night, looking forward to my first day at RC.

My First Day of Unschool

My first day started like many of my recent days: I woke up, fed the cat, made some coffee, and then sat down at my computer. There were a few convesations on Zulip. I RSVP’ed for the ML reading group and mentioned I’d be happy to join them at whatever point they were at (this group had started a few weeks earlier, so they had already read 6 chapters of a book). I chatted with someone re: asyncio in Python. We talked about how you can view `async def` as syntactic sugar over ordinary python coroutine stuff, what the event loop is doing, and so on.

I observed, but did not participate in some slightly touchier conversations. One discussion was about a blog post re: Google, “don’t be evil”, and the actual nature of incentives. As you would expect, people feel rather strongly about this, and two camps emerged (one roughly “capitalism bad; eat the rich”, the other “welcome to realpolitik; smash your illusions”) before it was shut down by RC staff. I confess much of my interest in this particular conversation was just in getting a feel for the norms around such a discussion (i.e. to understand expectations around how I conduct myself or discuss controversial topics, and so on – basically, I just want to talk code and math and otherwise don’t want to piss anyone off). The Recurse Center has a formal code of conduct and set of community guidelines, but at any organization there are also many the unwritten rules. In this case, for example, I am not sure whether the discussion actually violated any explicit guideline, but once a RC staffer asked them to stop it, the participants did so.

And so it goes. Anyways, after this, I started scoping out the first project to work on: I wanted to write a toy version of the mill build tool in python to use for another project I had been involved with (basically a big hairy pipeline for astronomical data reduction). I thought through this some, drafted some notes on its design, and ate a late lunch.

Wait, I’m Naked???

There is a common dream which many people experience at some point in their life: they show up to school for the first day of classes, only to realize that they have forgotten to get dressed. I’d never thought about what form this would take for online school. With Zoom, anybody can show up in their underwear, thinking perhaps that the camera is off. But I was dressed!

As far as I can tell, RC used six distinct channels for communicating information to me:

  1. direct email, which was the main channel used before I was accepted to the batch
  2. threads on the “Recurse Community” site, which supports something like a message board (but which will also send you emails)
  3. discussions in Zulip (which seemed to be the most active – many conversations every day)
  4. the 1-1 I had with my “onboarding buddy”
  5. the wiki pages, mentioned above
  6. the calendar itself, which is the main way in which events are communicated and coordinated. It’s how I found friends to talk about ML with, for example.

There is also a “Virtual RC” space, which is something like a 2D HTML5 canvas MMO where you can move your avatar to various “rooms”. It’s kind of cute; someone was camped outside by a tree.

Bombarded by all of this information, much of which came last week when I was trying to wrap things up at my job, I basically a) added a tag in gmail to at least get all the RC related notifications under one heading, b) made sure to read the “Remote RC Orientation guide”, and c) scheduled a 1-1 with my “onboarding buddy”. It seemed like this was enough – things would sort themselves out within the first few days, I figured.

And this is where I fucked up. It turns out there was a “Welcome Event” held on the morning of the first day that I was supposed to attend. It was mentioned in one of the emails I had received (my fault for not reading this carefully enough), but not mentioned in the “Remote RC Orientation guide”, nor in 1-1 with the “onboarding buddy”. It was on the calendar, but at 7:15am in my local time zone, so by merit of that alone I had simply ignored the event (e.g. did not click it and read the description). By the time I was online on my first day it was over (I think it ran to about 8:30am). I don’t recall it mentioned at all on Zulip, so for the entire morning I just assumed that what I was doing – chatting with people, making plans for reading groups, and moving my avatar around – was just what remote RC was like on the first morning.

At 1pm, I was informed via Zulip that

Hi Erik! I sent you an email this morning, but never heard back – we didn’t see you during the welcome flow or talks this morning, and we wanted to check in to see what happened.

Did you receive our Community emails about the first day of the batch with the schedule?

Attending the welcome events is mandatory, and we generally ask that people who miss them defer to a later batch. If there was an emergency that prevented you from attending this morning, please let us know.

Oh crap. I was on Zulip, but I hadn’t checked my email that morning.

I would paste my reply to the above message, but I do not have it (I have access to the messages I received because Zulip also sent them to my email, but sent messages are lost to me since my account is deactivated). But roughly speaking, when I received the Zulip message I responded saying that it was an accident on my part, and that I had been confused by the amount of information received via various channels. I asked whether it would be possible to continue despite this policy (i.e. if there was some way I could make up the meeting that I had missed). I do not think I was rude, and I didn’t blame anybody but myself.

To my surprise, there was no further discussion. I received this message

We understand that there are a lot of emails to get through in the run up to the batch, especially from the Welcome thread. We’re sorry that you missed the first day’s events, but that doesn’t change how important it is to be online for them. The schedule was at the top of the email sent on August 5th and was on the RC calendar, and missing the first day for this reason hasn’t happened to anyone else since we’ve been running RC online.

The Remote RC Orientation Guide was written as a software guide for anyone in the RC community who was new to Virtual RC rather than as a full guide to the first week for new folks. We will add a note to the top of it to remind folks to check Community for the schedule of their first day, and we’ll add a link to the thread with the schedule to the ‘Tools for participating in Remote RC’ email.

We only make exceptions to missing the first day when someone has an emergency, but at this point you’ll need to defer your batch to Fall 2 or later. We’ll update your account so that you’re moved out of Fall 1 and are able to confirm for a new batch – we’ll send you an email once that’s done.

following which my Zulip account was deactivated, I was removed from the Github organization, and my RC account was reset.

Lessons Learned?

I wish I was omitting something from the above interaction, but it was as simple as that: I was told I missed a mandatory event, I explained that I had been confused about the protocol on the first day, and then I was deactivated before I had a chance to respond further.

This all felt quite abrupt abrupt and hostile, and I’m still not sure what to make of it. Noting the above quotes, the RC staffer said that they “generally” ask that people who miss the welcome events defer, but also mentioned that I was the only person for which this “generally” had applied (at least for remote RC). Likewise, I’m still considered to be on good terms with the community, but… they want me to defer 6 weeks because I missed a Zoom meeting.

What conclusions can I draw from my one day of remote hacking at the Recurse Center? There aren’t many, to be honest. The participants seemed interesting and motivated. The process of applying and preparing consumed a bit of time and nudged me into quitting a job I was considering leaving anyways. But, as an alternative to traditional institutions, it was just as unforgiving as I have ever seen a university be.

What will I do with my free time now? The plan is the same as it ever was: hacking, math, hopefully contributing to open source in what modest way I can manage. In fact, for a bit of inspiration I’m now re-reading the Recurse Center website:

Our philosophy: We believe people learn best when they take control of their own education and are free to explore what they’re interested in. RC is heavily influenced by unschooling.

Now that sounds like something I can get behind!