I packed up all my things and left Hacker School a little after nine this past evening. It is likely to be my last time there as a regular Hacker Schooler, for whatever future I can envisage. Over the past twenty-two months Hacker School has been the center of my intellectual life as a programmer. I expect to return for Monday-night lectures and to remain in active contact with the community, but time spent coding on-site is likely to be rare for me now that I have full-time work.
When younger I would have seized on “bittersweet” to describe my sensations tonight, but a moment ago I reached for the word and found it gone stale on me. More vividly, I am aware that I am at a joint in time — a rapid, stark shift in my experience of the world. These days between Hacker School and my job are a “moment”, in its etymological sense as a “moving instant”. I accept the passage of time, or more precisely my passage along time, and also the wreckage I leave after me in memory because of that passage. I was conscious of a mood of ceremony as I took one last look at my table and left the building alone.
I did one programming exercise today, start to finish, in the HS space: a Python generator-implementation of the Knuth-Morris-Pratt (KMP) sequence-matching algorithm (here is a patient, readable presentation in case you’re tired of going to Wikipedia for everything). I wrote my code along with a suite of 15
Pytest unit-tests, but next I want to write a
Unittest version in parallel to the
Pytest, since the company I am joining seems to prefer that. After that, perhaps I’ll find time to use
pdb to explore the code a little, as a way of refreshing my knowledge of those tools. Actual coding probably won’t start at work till after Thanksgiving, and I can believe I’ll still be working on my own projects for a little while.
I have wanted for a long time to understand KMP — I was exposed to the germ of the idea in the Fall of 2010, during a professor’s digression as he gave my class a review session for a test on finite automata. It has been sitting in a raw state in the back of my attention ever since. So today I picked it out of the cobwebs and wrote it up. I based my implementation on the presentation in the fat algorithm book by Cormen et al., so there is nothing very original in my work. But for me there’s no better way to understand a computational idea than to wrestle with it in the form of actual code. There are always off-by-one errors that come about when you convert Cormen’s 1-indexed arrays, along with all that they imply for loops, to Python’s 0-indexed lists. Rubbing those gremlins out is a good way to make sure I understand how an algorithm actually works. Cormen’s variable names are always abstract, too, so doing the study necessary to pick fresh ones helps clarify the moral philosophy of the algorithm. Besides all that, I decided to return the result lazily with a
yield statement rather than as a finished array. That’s all, then — a good, low-key piece of hands-on-learning, an ideal project for a single day’s work on Alumni Thursday. It was a good mark with which to punctuate my time at Hacker School. And since it took me four years to get around to this famous problem and its clever solution, it is the perfect seal to affix at the end of the period* I spent preparing myself to become a software engineer.
Hacker School’s motto is “Never Graduate”. I understand that is meant to answer the conventional understanding of “school” as a place you attend for a little while and then leave, supposedly complete in some rigid course of study. “Graduate” in this view equals “stop learning and leave,” but Hacker School wants its students to think of learning as an unending process. Quite right, too. Then again, my background is different from that of most other Hacker Schoolers — I’ve been “in” school, in various capacities, for almost half a century. And I understand “to graduate” in the sense “to rise a step or progress to the next level”. It was not in error that graduating used to be called “commencing”, which survives in our “commencement” for a graduation ceremony; to graduate is to begin, not only to end. So I am happy to accept that I have graduated many times in the past without ceasing to learn, and hope to do so again many times more. Today I did experience a moment of graduation from Hacker School, in that sense. I won’t insist on the word, though, since the Institution dislikes it. But I think no one would deny me the sense of ceremony, right now, that is entailed on both “graduate” and “progress to the next level”.
- Isn’t it interesting that a “period” is both a cycle and a mark you use to indicate the joint between two cycles?