What a joy
This past winter, I completed a self-directed, community-focused programming retreat at the Recurse Center in Brooklyn, New York. I invested 12 weeks into programming at the edge of my abilities in a community of motivated peers.
There’s main two things that I’m walking away with:
1) renewed excitement of building my own projects, and
2) the joy of doing so in community.
For me, these two things are deeply intertwined: I’m much more eager to build things now that I have a community of kind programmers to brainstorm with, celebrate with, seek help from, and generally just feel connected with. I’ve gotten exposed to so many cool things I would never have heard of before, which gives me ideas and inspiration for what I’d like to build next.
What’s more is that now that I’ve gotten to know programmers and makers of all different backgrounds and experience levels, I feel more secure in myself; I’ve never been one of those people (usually portrayed in society as cis white men) who have been tinkering and obsessed with computers since they were 8 years old, and I don’t have to be.
In the past, programming has felt so serious – I’ve ascribed so much importance to it in my mind, like it’s a calling meant only for the chosen ones, something that only smart people can do well and are interested in – and I’m afraid to find any way that “I can’t do it” (i.e. it doesn’t come as easily to me and I struggle more than others) because that’ll be proof that I’m fundamentally not good enough and will always be an outsider. But now, being part of the RC community has really helped me see that there’s nothing innately special about good programmers and that there are as many different ways of being a good programmer as there are ways of being a person in the world.
There are many people (at RC and otherwise) who know much more than I do about programming (just a fact, given that I am a wee young unexceptional new grad). Even so, I found that it’s not uncommon to stumble upon something they don’t know that I can help them with. My knowledge is not simply a subset of theirs and I have much more to offer than I’d thought.
Furthermore, regarding my value as a person, what do I care if someone is “better” at programming than I am? It’s like if someone is “better” than me at weightlifting, cooking, crocheting, language-learning – cool, great, neat; we’re all on our own journeys that are complex beyond comparison. Programming is literally just another hobby or just another profession. When it comes to any programming thing, I could learn it if I wanted to (just like any other thing) – and if I don’t want to (i.e. if I’m not interested in it), then that’s just fine because what I do know and what I am interested in is cool.
What I did at RC
- Built Game of Life in Rust, started making a TUI for it using ratatui
- Built Gratie, an interpreter for Piet in Rust with Jordan
- Built my personal website
- Led a group through The Missing Semester of your CS Education
- Went through a bit of ARENA and Deep RL Zero-to-Hero
- Attended other meetings and events: Self-hosting/homelabbing workshop, Wrong Answers Only, AI Safety Intro + Forecasting AI Advancements, Notetaking group, Fast.ai group, HCI meeting
- Wrote rc_self_directives, my first Python library on PyPi with Johann
- Cleaned up my resume, GitHub, LinkedIn for summer internship recruiting
- Gave two presentations: The Found Semester, Open When (no slides, just a verbal explanation and demo)
- Gave two non-programming talks: I wrote a book (5 recursers bought copies!), Staying in my lane
- Got into the Leetle – Leetcode is actually kind of fun??
- Did some GPU puzzles
- Got into local-first principles and home-cooked software
- Built a “hello world” Linux kernel module
- Toured the Google NYC office
- Started making a mushroom image classifier
- Paired with Karen on setting up self-hosting using Tailscale and nginx
- Posted checkins at the end of each day and had lunch table chats every day. (Week 1 I was worried that I was spending too much time talking to people and I’d never get to actually coding.)
What I’ll do differently next time
Looking back, I realize that I put a lot of pressure on myself to “make the most” of my time at RC. But being fresh out of college and not yet having the experience of working at a full-time job, I think I just didn’t know what I was looking for. I did reach out to people to have coffee chats and pair program, tackle projects that pushed my comfort zone, and self-manage my days.
But it wasn’t until my second-to-last day of batch that I truly came to experience the magic of RC. Specifically, it was when I paired with Karen on setting up a homelab on my Ubuntu MacBookPro so that I could self-host my apps. It was a daunting task that turned out to be not so scary as I worked through it with her, and until that moment, I don’t think I realized how much I wanted to explore self-hosting, servers, and deployment and how afraid of it I’d been. In those few hours, I felt like it clicked for me; I was truly “working at the edge of my abilities,” “learning generously,” and “building my volitional muscles” (the three RC self-directives).
I wish I’d had more moments like these during my batch. Maybe if I’d pushed myself harder, I could’ve figured it out earlier on, but that winter was a challenging time in my life and I had been working at max capacity for many months prior. I felt like I needed to let myself just breathe and take it easy; I remember stepping back and asking myself “Am I happy?” and saying “Yes, I’m happy” and then “Ok, great!” and moving on because that was enough.
That said, during my next batch, here’s what I want to do differently:
- Do a larger number of smaller-scale projects: In my experience, the last 20% of a project is 80% of the work (and only like 10% more learning) and if it’s not something I really want to finish then it’s not worth it. For me, RC is a better environment for exploring breadth as opposed to diving into depth because Recursers have such a wide variety of backgrounds and expertise.
- Attend all of the presentations and non-programming talks: I skipped out on some because I was enjoying my heads-down work time, but I think these are really a core part of being in the RC community.
- Read people’s checkins more frequently and spend more time on the fourth floor: Even if it’s harder to focus, RC is a place for getting nerd-sniped. I would like to be more open to that.
- Do at least 1 presentation (either a programming presentation or a non-programming talk) every other week: Presentations at RC are so special – they’re low-stakes and have a supportive audience. I’m so happy with the four presentations I gave, and next time, I want to (and I feel ready to) do more.
What I wanna build next
(I’m excited that I actually have these, please reach out if you’d like to pair with me on any!)
- The Python library cowsay but instead it’s called
gracesay
and it’s ASCII art of my face with a speech bubble - Make my first contribution to an open-source project
- (probably Marginalia or similar indie web search engines)
- Obisidan community plugin to drag to reorder blocks (looks like this plugin/feature doesn’t exist… maybe one did in the past but it’s not active anymore)) and i’d use this every single day! note-taking group people?
- Train an instance of Ollama to be interesting; an alter ego, noisy clone
- My own messaging app – local-first, home-cooked software; have a visualization of chat history (like Tess Ibarra’s project), incorporate embodied communication somehow (body language? maybe using vibration and IMU sensor data)
- Train an AI agent to play Mancala; RL, decision transformers, explain its reasoning for its moves
- Train a robot using your phone’s IMU as expert demonstrations, using webcam
- The anti-productivity app (gets you to do less stuff!)
- An app that’s designed to be deleted, i.e. instead of making you dependent on it, it teaches/trains you how to do the thing instead (to-do app, reminders, navigation)
- Period tracker
- Pursuit (like Marginalia or Teclis): (use whoogle), - Shows search results in Obsidian-like graph where the closeness based on semantic similarity, for the user to explore like a digital garden, Encourages social connection and real-world community engagement: “try going for a walk outside” or “ask a human you know” or “browse the library” or “explore this local community event”, shows a limited list of results, only shows you one sentence/paragraph at a time – encourages you not to skim, to read deeply instead, “are you feeling ok”, something that doesn’t distend our sense of scale
- Build an app to set my alarm to sunrise (could probably use IFTTT?)
- An ode to public libraries: visualize all the materials in circulation by topic
- Calendar grid with colors that you update whenever you feel a new feeling
- Google maps but it explains its reasoning so that you actually learn something and aren’t dependent on the app
- Real-life computing (DynamicLand RealTalkOS, folk computer)
- Topics of interest: math, information theory, social change, Spanish, Korean, art, digital humanities, education, urban planning, sex education and sexual health, gender studies, labor studies, game theory, ML (RL, transformers, diffusion)
- Tools to use: robosuite, Media Pipe
- https://www.linuxfromscratch.org/
- https://cstack.github.io/db_tutorial/
- https://hackerone.com/bug-bounty-programs/
- http://www.3dprintmath/
- operating systems, networking, compilers, databases, programming languages (https://teachyourselfcs.com/)
Never graduate
I’ve written up this document as a reflection on my time in batch at RC, but my time at RC is far from over. Something we say about alums at RC is that we “never graduate,” meaning that even though our time in batch has ended, we’re still learning and growing as part of the community. I’m active on Zulip, sharing what I’ve been working on and reading about what others are up to, and I pop in to virtual events every so often. It makes me so happy to keep in touch with fellow batchmates and to see new Recursers going through this amazing experience.
Here’s to never graduating!