Return Statement
I’ve finished my time at Recurse Center, and a small tradition is to write a “return statement” about what you did in your time there.
Attending Recurse Center was a very rewarding time for me, personally and professionally. I succeeded at studying some difficult topics, I learned about a number of things I’d never have thought to look for, and even more important I got to spend three months with a group of curious, kind, smart, generous developers. I am both proud and humbled to be a part of the Recurse community.
I was a bit unusual among Recurse attendees in how narrowly I focused on studying Haskell, so most of this list of things I did is other stuff:
- Finished a solver for Shenzen Solitaire, a Haskell program to tell me how bad I should feel about my results at the game (very bad, around 99% of games are winnable). I got practical experience in Haskell modeling data, managing state, testing, property-based testing, debugging, and tooling. I’d been working on this for a few months at Code and Coffee before I started.
- Soldered and assmbled a Planck keyboard, then configured it using the very nice QMK firmware with a Norman layout, then trained that up to an acceptable 75wpm. I’ll write a longer post about keyboards at some point, but for anyone who gets curious to buy a kit and might buy from MassDrop, let me mention that I ended up deleting my account over how badly they mismanaged the process and how dishonestly they communicated about it.
- Became the sysop of Lobsters. This wasn’t because of Recurse, but it was a big life event that happened during my time at RC. I planned the migration, learned ansible to help administrate the new servers, and started writing Rails code again for the first time in a year to maintain and improve the site.
- Met with a twice-weekly Haskell study group to work through Haskell Programming from First Principles. I was mostly ahead of the group from prior study, but still learned from all the discussion and helping others. The group split up around Thanksgiving as folks decided to focus on various personal projects.
- Got an introduction to MetaMath and had a multi-day conversation about isomorphisms between different branches of mathematics and computer science, as well as a number of related topics like the role of git in collaborative projects.
- Attended a reading with Q&A by Ellen Ullman, whose book “Close to the Machine” is a cornerstone in my understanding of the experience of programming and its effects on programmers and the world at large.
- Had an interesting experience in sleep deprivation: I started to do some system administration, but quickly recognized that I was too tired to be logged into anything as root. I changed gears to refactoring Haskell and was able to make real improvements by leaning on the type system. Usually I would’ve been writing the commits that featured in the ‘git blame`s of next week’s debugging, but when I looked back they were all solid. The maxim “if it compiles, if works” seems to be true of Haskell refactoring.
- Learned about symbolic execution and concolic testing, an exciting new field of research in program correctness. It’s very academic now and I want to try my hand at writing a practical tool; if it can scale to real-world code it could be tremendously valuable.
- Gave a 5-minute lightning talk introducing functors. I’ll probably record this and put it up on my talks page before the new year. Came in under my usual ratio of one hour of prep time to one minute of presentation.
- Helped a family member’s small Wordpress hosting company recover from being defaced by an Albanian script kiddie. I miss when helping older relatives with tech meant setting VCR clocks.
- Spent two weeks awakened every morning at exactly 3:05 AM. Maybe a building heater had a new routine for the cold weather or something, but the NYC area is noticeably louder at night than Chicago.
- Attended several tech talks, most organized by RC.
- Visited Chicago for a wedding, which was a great chance to see friends and family after so long away.
- I’ve long dithered over the correct order for projects on my homepage. I cut the gordian knot by randomizing it with the rng seeded by year + week so it doesn’t change every single reload.
- Spent Thanksgiving vounteering to serve meals to the elderly and indigent at a restaurant. After taking orders and running food for a bit, I spent the rest of my day behind the bar serving drinks. This was a very rewarding day and I see more volunteering in my future.
- Restarted my use of spaced repetition study software (Anki + AnkiDroid) to shore up my American sign language and solidify the foundation of my Haskell knowledge as I shift into app dev. If the time I spend learning is an investment, SRS is a maintenance contract: I pay a little on a regular basis to ensure the investment doesn’t get lost.
- Took a sharp detour in my last week of studying. Rather than continue to the end ot the Haskell book, I worked on art project called An Inaccurate Clock. Learned SVG for it, which is a nice tool for interactive graphing and vector drawing that I’m glad to put in my toolbox. (This will probably not be released publicly.)
- Got to try an Oculus Rift VR headset, which I was nervous about as almost all 3D games give me motion sickness. I had a lot of fun with First Contact and Superhot and had only a mild reaction.
- Toured New York City a bit. I have family in the area and have visited a number of times, so I didn’t do much of this. Highlights included walking Rockaway Beach, the High Line, a picnic in Central Park, and many long walks through Manhattan and Brooklyn. Took a side trip down to Philadelphia and Baltimore (east coast cities are so close together!) to visit some old friends.
- Met a lot of very good people, saw their excellent, creative, strange, funny, personal, and impressive projects, and had a hundred great conversations about code, practices, careers, and life in general. (Veni, vidi, colloqui.)
If you’re considering attending Recurse, it is almost certainly worth your time. I’d be happy to answer any questions you have by email, on Twitter, or on Freenode.
If you’re considering hiring through Recurse (they keep the lights on with recruiting fees), it is an excellent source of high-quality developers. I don’t know what stronger signal you could get than someone choosing to spend three months learning and collaborating, really.