I read this blog post about phone interviews for software engineers today. A lot of it sounds like the phone interview I had with Google (I still can't believe what I said "fork" did). I feel pretty good about the material on this page, but there are two notable exceptions: First is some of the OO terminology that i'm fuzzy on, notably "virtual methods". Second, under the data structures section I can't quite recall what's so special about a "Graph", or how you deal with one practically. These are small issues in the grand scheme of things, but I need to hit some books now to satisfy my own curiosity.
In my own defense about the OO stuff, however, I will say that most of my recent programming efforts have been in MATLAB and Perl, neither of which has an object system that I would call "state of the art" (and MATLAB's objects are so broken and idiosyncratic that they hardly count as being OO). I know Perl 5 has Moose and other object frameworks to try and emulate the object environment of Perl 6, but I can't be bothered to learn a hack-around object framework when I could be learning the real deal.
I pulled out Parse::RecDescent today to help implement the knowledge base script for my expert system shell. It's been a while since I read through the dragon book, so I wasn't as sharp with it as I should have been. I also made the zealous mistake of trying to implement the entire grammar in a single run, when I should have done smaller test cases. I paid for it in debugging time, and am still having a persistent error with one of my productions. I'm trying to keep my grammar for this very light on the punctuation, although some of my recursions are suffering because there is a little bit more ambiguity then there would be otherwise.
I talked about wanting to learn SVN the other day, and now that I've started using it, I almost can't imagine software development without it. I'm half thinking about installing it on my office computer so that I can manage my thesis through it. Although, considering the effort to make this happen (which is, admittedly, very small) and the fact that I am so far along in my thesis, it's basically not worthwhile. I do have a rudimentary file-backup system in place, so I'm not worried about losing too much data. Next on my list of things to learn (or, "master") is make. I'm sure I'll fall in love with that program too, given the chance.
I wasn't feeling too good today, so I didnt get much work on my thesis. However, working on other projects has helped to clear my mind, improve my mood, and rebuild some much-needed enthusiasm for that project. I plan to work on it a lot within the next two days and over the weekend, so hopefully I can stay on schedule.