adventures in elisp

samer masterson

significant conversations

Everyone here is incredibly fun to talk to, but I want to talk about the significant conversations with alumni and facilitators I’ve had that have influenced my “plan” for hacker school, and have significantly influenced my progress. For reference, I came in knowing I wanted to write a go compiler in go, because compilers are black magic to me, and I’ve become enamored with go over the last two months. In more-or-less chronological order:

  • David Branner: we met during the pre-hacker school dinner. He thought that having an overarching project that you contributed to “by default” for the batch was a good idea, but you should let yourself get “distracted” and work with your peers on unrelated, interesting things. This was already kind of what I was thinking of doing, and it was nice to get a little validation from an alumnus.

  • Aki, my hacker buddy: sent me a blog post by Sasha Laundy, an alumna, on how to get the most out of hacker school. What stuck with me the most was the advice that one can be done with a project before a project is “done” (and if you’re thinking, is it more correct to say “done” or “finished”, this is an interesting blog post on the subject), and if you’re past the intense learning stage of a project, it’s okay to drop it and move onto something else. Aki told me that he got too wrapped up in a project he was trying to finish during his batch, and that he should have dropped it sooner. So I thought it was surprising when he said he liked David’s idea of having a default project that one returned to after getting “sidetracked” by other interesting things.

  • Tom Ballinger: after letting me know that it’s totally fine to do just a bunch of small projects with no plan in mind, he told me that he noticed that people who want to work on compilers often start by writing an interpreter.

With Tom’s observation in mind, I worked on a lisp interpreter in go for the next two days. Wish Sasha’s advice in mind, I stopped working on the interpreter after I had learned my fill: I was more interested in how interpreters worked than completing the semantics of my baby lisp language.

  • Jordan Orelli: did a code review of my interpreter, and got me thinking about solving problems using channels. Showed me a video on lexing using channels in go, which was incredibly eye-opening.

  • Aki, again: we met for coffee and talked about the road to a fulfilling job without getting a PhD, and the trade-offs involved. We had also talked about continuing to work on side projects after leaving hacker school. With those things in mind, I’m thinking about changing my plan to be submitting a patch to a free (as in freedom) compiler. Building a go compiler in go is definitely on the path there, but it’s more okay to put it aside once I’ve learned enough if the goal is contribute to a compilers project, instead of the goal being the compiler itself.

And, of course, all of the interactions I’ve had with my batch mates, the facilitators, and the other alumni have been incredibly rewarding. I still can’t believe how important one’s environment is to doing good work, and it’s affected me more than I thought it would. I’m not used to being around so many different people I can geek out with.

I set the time to a minute before midnight, because I want this to count as my blog post for Friday :)