I have learned a tremendous amount in the first two weeks of Hackerschool. I've had my "I know macro fu" moment (think the Matrix). I've realized how SICP's Yin Yang of the Metacircular Evaluator is really just an elaborate example of mutual recursion. And I've learned what it takes to write A* in Clojure (think Rodin, the work of art is the art in process. I learned something like that in art history class once). But, in this post I want to focus on some of the emotions that I've experienced.

First, it is exhilarating to be the definer of your own work. Exhilarating in the terrifying, flying the seat of your pants kind of way. I've been using two things to guide me: the joy of programming, and the pain of confusion. The process of going from "I am going to write a compiler" to "I am going to write an interpreter for Scheme in Clojure" to "I am going to write a meta-circular evaluator for Scheme in Clojure" to "This meta-circular stuff is nonsense --- meta-circular Scheme evaluator" and so on, has been tremendously rewarding. I'm no weight lifter, but I think this compares to lifting free weights versus using weight machines. In school or at work people give some definition to your work. Somewhere a line is drawn separating from what is to be done and what is not to be done (and there was morning and there was evening --- the first day). At Hackerschool you draw this line for yourself.

Second, working with people who are happy is true joy. Everyone is ready at all times to explain what they're up to with great enthusiasm no matter where you fall on the 10,000 hour journey to programming mastery. And here's something special: everyone understands that you too are enthusiastic about your work so no problems when you want to get back to it.

Third, relish the details. A detail isn't just some artifact of some piece of software. It's something interesting to explore. Yes, understanding the difference between python's list.append(x) and list.insert(0,x) is interesting. No, it's not "good to know" (though it is that too), nor is it just "useful." It is interesting. Fun! At Hackerschool, everyone seems to feel this way. No one is going to say "So what?" I literally feel like a child playing.

Fourth, you can understand all those things that you are interested in. Pairing with a few of the facilitators has driven this point home. Take a problem and let your personal sense of justice in understanding reign free. What I mean is: go through every single little detail until you have that drunken feeling of having understood everything about the problem. Do it just to feel that way. It's great.