recursing(recursing(recursing(...
I never mentioned it explicitly in my previous post, but getting admitted into the Recurse Center is what birthed this blog. The culture of writing and ossifying that which has been done is a wonderful practice ingrained into the RC experience when one participates, and constantly seeing everyone post in the #checkins
channel about their progress regularly has been both a great accountability and discovery mechanism to randomly see the lives and passions of your fellow batchmates.
Many past and current Recursers have written and continue to write wonderful, in-depth, fun blogs (as the steady stream of automated updates on the #blogging
channel every time someone posts will testify), ranging from dependent types in functional programming to the effectiveness of simply measuring βΒ there's something for everyone.
And in the face of such an intimidating corpus of knowledgeable, witty text, the writer's block I had in wanting to push out similarly high quality writing was inevitable.
Yet, at a certain point, there's only so much merit to spinning your wheels before it's best to just:
Probably one of the most fundamental lessons I've learned thus far in my time at RC 1. So here I am, writing about my time at Recurse Center. Hooray!
There will indeed be blogs down the line that I plan on writing concerning interesting technical problems faced while tackling my projects or cool things I want to flesh out more through the written word, but I think the experience of being a Recurser has already been rich enough (in fact, so much so that I decided to extend my half-batch to a full 12-week one!) that at this halfway point I feel it best to write about the experience itself.
The beginning
The initial idea I wanted to work on coming into Recurse Center was a market-making algorithm deployed on Kalshi, a prediction marketplace offering event contracts on as many events as possible (the name itself is actually Arabic for "everything"). Being a relatively new startup platform that obtained CFTC regulatory approval as of last year, liquidity and volume are in short supply. Hence, contributing to make the market more efficient through an automated script utilizing their API seemed like a fun, intellectually interesting project to tackle.
In typical Recurse Center fashion, however, the mind wandered as I was yak-shaving around how to approach my trading strategy, and through meeting others and checking in on the ever-nascent channels popping up across Zulip, I slowly but surely was delving into topics I thought I'd never touch again since leaving undergrad.
Though I had always heard about CIS500 and how seminal my old professor Ben Pierce's work Software Foundations (and his even more famous Types and Programming Languages) were, only in RC did I finally start to delve back into the world of proof assistants and regain an interest in programming languages by reading his textbooks with a study group led by the wonderfully lighthearted Nick Dupoux.
On a similar note, after spending half a semester coding in OCaml for CIS120 where I first met Prof. Pierce (and vowing to never touch functional programming languages again), I started working Haskell for the first time to try and make generative art and indeed touched functional programming languages again. (My prompt for Impossible Stuff Day was: "it's impossible for me to enjoy functional programming again, so I'm going to try and build something in a functional programming language". And now here we are)
Related to Haskell, another regret of mine is not taking CIS552 with Stephanie Weirich while I had the chance to learn from such a foundational Haskell contributor, or even just focusing more on OCaml and lambda calculus in classes while I had the brainpower in undergrad. Alas, c'est la vie, at least now I have the actual passion to want to learn it (one of the biggest accomplishments I felt this batch was wrapping my head around how fixed-point/y combinators work 2),
It's been a wonderful, eye-opening experience feeling inspired again about programming in and of itself. To learn content and be interested in how it works, piecing it together and struggling to understand til you finally get how it works. Stretching one's gray matter and conceiving things that were inconceivable moments prior. For someone who was on the verge of disavowing tech as a career for the rest of my life just a few months prior because I was convinced that other careers were a better fit (more on that another time), it's refreshing and relieving to see that deep down, the interest is still there.
The now
Am I still wrestling with
asyncio
in Python and trying to get all this complicated timing and concurrency behavior to work out in response to live market trading activity? Yes.
Am I still wrestling with how monads and monadic binds in Haskell really work, even if I can kinda get by with some working knowledge of it? Yes.
Am I still really behind on Software Foundations and desperately trying to catch up on all the Coq exercises? Yes 3.
Have I still avoided trading a single dollar yet on platform because I'm afraid I'm just going to lose all my money the moment I deploy this thing because I left a bug in the code somewhere and my strategy is complete trash? You guessed it, yes 4.
But above it all, am I still doing? And am I learning at the edge of my abilities. I'd like to say βΒ yes! And that's what has mattered most and been inspiring to say the least, the process of doing.5
Shoutout to my friend Daniel Kyungjae Lee, who showed me Sol Lewitt's letter to Eva Hesse in which Lewitt motivated her out of an artistic rut with one word in bubble letters and bolded at the end of his letter, pictured here: "DO"↩
Rhea Jara's example in JS is infinitely helpful in trying to wrap one's head around why they work, in more familiar syntax to the programmer's eye↩
Sorry Nick.↩
Related to finance and these footnotes, subtle nod to Matt Levine and his Money Stuff newsletter, my long-running favorite newsletter of all time that made me consider a career change into finance in whatever form possible earlier this year after I got laid off (honestly, I still kind of daydream about it on any given day). His footnotes are always where the real treasures are. ↩
Thought that this couldn't go without saying at least once or in the footnotes: I think what's really been inspiring on top of all the learning and wonderful resources that RC provides has ultimately been the people that the community draws in β truly humble, intelligent, diligent people who are all here for a reason: because they want to do the program! There's no prestige-flaunting, no inflated egos, no who's-better-than-who βΒ everyone is just trying to self-improve and learn from each other as much as they can. And I think that it's absolutely splendid and is what makes the Recurse Center the Recurse Center. ↩