Recurse Center Return Statement

I just wrapped up three months at the Recurse Center (S2’25). This is my return statement, which is a tradition where Recursers reflect on their batch.

What even is the Recurse Center?

RC is a self-directed programming retreat in NYC. It’s hard to slot into the usual categories because it doesn’t really fit any of them. There’s no curriculum, no teachers, no certificates, no grades. There’s a space full of nice, smart, passionate programmers, and a set of social norms that make it easy to learn from each other. You can attend in person at the Brooklyn space or join remotely.

You spend 6 or 12 weeks working on whatever you want, surrounded by people doing the same. Some folks build operating systems from scratch, others explore functional programming or dive into compiler theory. Someone in the room might be writing a Game Boy emulator while their neighbor is implementing a theorem prover.

The people at RC come from everywhere. I met quant traders, creative coders, big tech engineers, academic researchers, engineering directors, talented high schoolers, and a long tail of people who just love programming for its own sake.

The community runs on a set of social rules that make it easy to learn and collaborate:

  • No well-actually’s: don’t be pedantic when someone makes a minor mistake.
  • No feigned surprise: don’t act shocked when someone doesn’t know something.
  • No backseat driving: don’t interrupt pair programmers with drive-by suggestions.
  • No subtle -isms: no racism, sexism, homophobia, or transphobia, even subtle or “joking” versions.

These aren’t decorative posters on a wall. People genuinely follow them, and the result is a space where you can ask questions you’d be embarrassed to ask anywhere else without anyone making you feel small for asking.

RC also has self-directives that guide how you approach your time:

  • Work at the edge of your abilities. Push yourself past what’s already comfortable.
  • Build your volitional muscles. Work on what you actually want to work on, not what you “should.”
  • Learn generously. Share what you know and help others.

Why I joined

The reason I applied is simple. I felt like I was regressing as a programmer.

The last year or so at Apple, I’d been doing a lot of project management, cross-functional alignment, and the kind of corporate work that any senior engineer at a large company eventually inherits. There’s value in that, and at a company the size of Apple someone has to keep projects aligned across teams. But it wasn’t programming at the edge of my abilities. It was meetings about meetings.

I could have taken a vacation or carved out a side-project budget inside work, and I considered both. The thing that pushed me over the line was that my mentor at Apple had left for RC for the same reasons. Watching someone I respect put three months on the line for the same itch I had made the choice obvious. The idea of spending a season around people who just want to build cool stuff sounded perfect, and that’s how it actually went.

What I worked on

I went in thinking I’d skip across a bunch of areas. I did some of that, but most of my energy ended up concentrated on two main projects.

Distributed training on heterogeneous hardware. I got curious about what happens when you need to train models across different types of accelerators, like mixing NVIDIA GPUs with AMD or newer AI chips. As more vendors enter the accelerator market, this kind of mixed-cluster training is going to keep getting more relevant. I wrote about what I learned here.

Alternative architectures for LLM pre-training. This became my main focus during the second half of the batch: looking at performance engineering techniques and architectural alternatives for pre-training language models when you don’t have infinite compute. The hybrid U-Net Transformer I built showed promising results in the limited-compute regime. I wrote up the details here. Big thanks to a few researchers (now at Anthropic) who helped me think through some of the design decisions.

Outside the main projects, I got to dabble in a bunch of random things.

Automatic theorem proving with an RC alum who recently defended her PhD in geometric group theory (congratulations, by the way). We played through the Natural Number Game in Lean, which was mind-bending in the best way.

Pairing sessions on everything from a Game Boy emulator in C to figuring out when Manhattanhenge actually happens. I also paired with several folks building AI/ML applications, including someone implementing what they called “Spotlight on steroids” for their local filesystem.

I wish I’d paired even more. Every session reminded me how many smart approaches there are out there that I don’t naturally reach for, and how much you can pick up just by sitting next to someone working through a problem.

The non-coding parts

When I wasn’t coding I was usually playing games. Chess, Love Letter, Decrypto. The game nights were some of my favorite memories from the batch. A lot of the conversations I had at RC happened over a deck of cards rather than a keyboard.

One small thing I’m proud of: I started Film Night as a counter-programming move against Movie Night. Movie Night was high-brow films followed by long discussions. Film Night was the opposite. We’d watch something fun and dumb, and the conversation afterwards would be along the lines of “I liked the explosions” and “the main character was hot.” Sometimes that’s exactly what you need.

What I got out of it

I came out of RC a stronger programmer and a stronger machine learning engineer. I haven’t felt this on top of my game in a long time.

A lot of that came from the facilitators, who give surprisingly good advice on how to approach the batch. Their guidance is what kept me from drifting through 12 weeks without anything to show for it, while still leaving the agenda fully in my hands.

The technical parts aside, RC reminded me why I love programming in the first place. The reason I love it is the chance to understand how something works, solve hard problems, and build things alongside people I respect. That’s a different feeling from shipping features or hitting OKRs, and it’s the feeling that gets harder to find as your career stretches out.

If you’re feeling stuck, burned out, or just curious what you could do with three uninterrupted months, apply to RC. Working alongside the kind of people RC attracts, with no agenda except your own, is one of the best decisions I’ve made.

Never graduate! 🌱