What is Hacker School?
Hacker School (now called the Recurse Center) is a three month retreat, for programmers and people interested in programming. The ‘school’ is a floor of a lower Manhattan office building, with a row of desks running down the length of the room, surrounded by office chairs. Several smaller breakout rooms line the room, each labeled with the name of an important contributor to the the computing world–such as Babbage, Church, Lovelace, Turing, and Hopper.
I use the word ‘school’ loosely, it’s not really an adequate name for what’s going on here.
There are no classes, no (explicit) teachers, no assignments, and no homework. Instead, the chairs of Hacker School are filled with individuals capable of self-determiniation; people who, when left to their own devices, teach themselves. And explore difficult concepts. And build things for fun.
The application and acceptance pipeline for Hacker School filters for this sort of mindset. While there is a filter for making sure people know at least some of the basics of programming (including writing FizzBuzz in a favorite language and an online pair-programming interview), the process also really looks for people driving themselves to learn and explore for the sake of it.
As a result, the people around me come from widely varied backgrounds (and age groups). Looking around, I can sight people with CS bachelors degrees, CS PhDs, several with backgrounds in physics, statistics, microbiology, and sociology. Some of us have worked in the software industry previously, some are in grad school, some never went to college, and some even have children. All of us are either in front of our own laptop, or staring over at a neighbors’, and all of us enjoy learning for the sake of it.
Hacker School is not really at all like Fullstack Acadamy, or Dev Bootcamp, or App Academy. Where those programs are primarily focused on the zero-to-sixty of programming–getting people in, up to speed with a given development stack, and then out the door–Hacker school is geared towards giving people with some degree of experience room to play and explore without structure.
Every morning at 10:30 there’s check-in, where we break out into the little rooms in weekly choose-your-own groups and go around in a circle, talking about what we did the previous day, and what we plan to do in the current. It’s a bit like scrum, for those who’ve done that. This is probably the most structured Hacker School gets, and if you miss checkin, no one’s coming to hold you accountable.
There are also regular seminars and workshops given both by the hacker schoolers and by the 6 more permanent “facilitators”, who run the organization. The workshops are based on interest and expertise, where those with the latter can pass information to those with only the former.
Four weeks in, I cannot emphasize enough how awesome this program is. This is what university should be like. I’ve learned more here in 4 weeks than I have in whole semesters of undergrad, both because of the sheer focus granted as well as the beautiful lack of structure. There’s an interesting effect at play, with a room of ~60 people all working on at-least-vaguely programming related projects. When I find myself getting distracted, I can almost draw energy from the people around me. Of course I can get this explicity, if I ask questions and get help, and unstick myself from wherever I’m mired. I can also regain focus in a more subtle way, through the vibes of raw concentration in the room. Maybe I was hanging out with the wrong groups in college (I doubt this, s/o to my Purdue buddies), but I never remember being around this many people as engrossed in and excited about their work.
Some current and former Hacker Schoolers have a hard time with this lack of structure. We in general, as modern human beings, are so used to the structure imposed by the school system or by our offices, that when left to our own devices we have no ability to self-mediate or generate focus and direction. Some say that they spent the first third of Hacker School floating, drifting from project to project, in a sense mentally coming to fully grok the actual freedom that Hacker School gives. It’s not a stretch to say that even in this float-y case, the time ostensibly wasted was well spent, as a necessary tax for the time to spin up one’s ability to work in this sort of unstructured environment. In a way, it’s empowering.
Projects I’ve worked on
Traceroute implementation in python. I did this one half for fun, and half in honor of a former hacker-schooler friend of mine who also implemented traceroute, and through whom I came to learn about Hacker School. Github.
Haskell primer. I spent a few days working on learning Haskell, doing the first several chapters of the widely acclaimed CIS-194 course, taught by Brent Yorgey. Freenode’s #haskell pointed me straight at this course when aksed about learning resources, specifically the Spring 2013 one I’ve linked. There’s a great page here on more learning resources for Haskell.
Diffie Hellman Key exchange, generalized to n-participants, in Scala. This is the secret key exchange algorithm used in SSH as well as many other secure applications. Implemented as an exercise in learning both Scala and more cryptoGithub.
GoScore, an iOS app project using OpenCV to score the board game Go. Swift, bridged through Objective C to C++ is remarkably complex. In its current state, the app detects circles reasonably well, but we (myself and another hacker schooler) decided this is the wrong / overly complicated way to go about doing this. This project is on a backburner while I work up the courage to refactor and tackle OpenCV again. Github.
Rhythmic, an album-centric music player in Scala. I listen to music as whole albums generally, and music players are generally more geared towards an individual track experience. This is an experiment in building an album-focused music player with a clean art-heavy UI. Github.