My second week at the Recurse Center was quieter and less productive than my first. I did a good job exposing myself to environments that are new and uncomfortable. I’m also slowly zeroing in on things that are interesting to me. I did a bad job sticking with any one thing or making significant progress on any of my goals, and I’am questioning some the goals I came in with.
In general, I did two things consistently: I worked on LeetCode problems almost every day, and I’ve been going through touch typing lessons, which I practice whenever I can’t handle any intellectually challenging work. I also continued to grab coffee with lots of interesting people.
On Monday, I spend an hour fixing up Tinylogger, so I could blog more comfortably (hoping to get more work done this weekend), read the Rust book, paired on a LeetCode problem that involved learning what a trie is, and helped Margo work on Game of Life in jQuery (with the constraint of reading cell state from the DOM, not a data structure). In the evening, I joined Victoria and others for a noodle soup dinner in Chinatown, and we walked the Brooklyn Bridge after, which was really fun.
On Tuesday, I read a cool article about compilers and researched what the heck LLVM is, which I sort-of-vaguely understand. I also added a bunch of words to Hackterms as I learned new concepts. I chatted briefly with David, who’s done some great work on language & type theory and compilers, and he suggested that to understand memory operations, I might be better off learning C rather than Rust, since C code maps more closely to machine operations, and that unlike Rust (which is generally considered a more elegant language), C won’t try to prevent precisely the kind of memory errors I can learn from. We also had non-technical talks, and I wish I had presented. People gave talks about a Nazi-era German film, wilderness first aid, polyamory, Prasek’s Smokehouse Big H mascot, and ethical dilemmas. It felt like a mini Demo Day. I definitely want to contribute in a few weeks.
Wednesday, I came in planning to work on Nand2Tetris and Rust, but ended up pairing with Adelle on a basic React app – I reasoned I should keep jumping into spontaneous, new territory. I worked on a LeetCode recursion problem, which made my head hurt – I was able to solve it, but didn’t really understand why the solution worked. I then had a great coffee chat with Noah, and then a long and very enlightening walk with David, talking about compilers, low-level processes, and speculative execution.
Thursday, things slowed down. I spent a while trying to wrap my head around the LeetCode problem from yesterday, and finally cracked and looked up the answer, learning about memoization in the process. I then paired on another LeetCode problem, in Python (which I don’t know) using heaps (which I don’t understand). Again, trying to jump into the deep end everywhere. By this point, I was doubting whether I should learn Rust and all (also new languages are hard), so I avoided it. In the afternoon, we had a great feelings check-in. Afterwards, I felt exhausted, so after touch-typing through a few exercises, I went for a very early dinner by myself. It was nice to leave the space for 45 minutes and not have to worry for even a moment about having to be back. At RC, I can take the space for myself and do what feels right when it feels right.
After I came back, I watched a set of cool technical presentations, and lamented not contributing one of my own – but I’m not even close to having anything to share. Liz did an awesome presentation about unexpectedly deriving the harmonic series on a frequency graph while trying to identify a pitch from her microphone. I intentionally wanted to step away from product-driven work (where I build to make a cool product) at RC, but I think it’s a good idea for me to still tackle and present technically challenging and interesting projects. I am thinking about looking at D3.js for the music star map I’ve been thinking about forever (and we’ve been encouraged to follow our White Whale projects).
After the presentations, I went to my first-ever BrooklynJS and had a blast. It felt like a natural transition from RC, and of course I ran into 2 different RC alums there.
Friday was a slow and unproductive day. I spent the morning with Lee, pairing on Nand2Tetris Project 1, where we derived and connected common logic gates from NAND gates. I expected this to be fun, but it was challenging and new, and forced my brain to work in weird, uncomfortably hard ways. Lee, thankfully, was super patient and helpful in explaining the basics to me. After touch typing for a bit to feel a little more productive (I could now do the whole home row!), I grabbed a very long lunch with Jenn. After, I reconnected with the Nand2Tetris group and powered through a meeting about boolean algebra identities, and then worked on writing. the blog. The day felt slow and unproductive, so I wrapped up early to go home.
Overall, this week has been just okay. Everyone continues to be very nice and extra kind, but it definitely feels like people are settling into the projects and being productive. I, on the flip side, am not. I am glad I exposed myself to so many new and uncomfortable technical challenges, but I felt utterly, uh,dumb, in most of them – carried, fortunately, by kind and helpful batchmates. Rust was hard, but now it seems like C might be a better path, and I’m doubting whether either language is the right way for me to spend time. C will teach me to work with memory, but Rust is a hyped language that people are actually writing in. But, perhaps I should focus on React, JS/Ruby, and interview prep – skills that I think help me get a job.Although these individual decisions seem hard, I am absolutely loving being surrounded by code 10 hours a day, and I’m confident I can get better at LeetCode/algorithms/interview-type problems if I keep working on them.
Next week, I want to (1) continue learning to touch type (2) settle into a consistent schedule with a project I could present in the next week or two (3) grab less coffee with people 😦 (4) continue to solve LeetCode problems (4) start working through Cracking the Coding interview (which I finally ordered for myself!) and actually understanding the algorithms. Most importantly, by the end of next week, I want to be able to say – look at thing thing (whatever it is); I made real progress on it.