A letter-to-the-editor in the
Economist claimed that mandatory community service made no sense, since an hour of Person A's time is not equal to an hour of Person B's time if person B is highly educated. I think this is a very priggish thing to say, since the whole benefit to volunteer work (besides actually getting the house built) is a strengthening of character.
Still, his statement has a nugget of truth to it: shouldn't we volunteer some of our time to tasks which target our strengths? With this in mind, I started to volunteer my skills at computer programming. That was a while ago... and
one of those projects caught up such a following that I even decided to buy the domain name. I mentioned it in the last post; we're approaching another release.
Or so I though.
The other day, I was using the very same product I'd designed, as part of a routine check. Suddenly, it
crashed. Stopped working. Seized up. Let me make it perfectly clear that my programs do not
crash. Oh, sure, they've got bugs and glitches and errors and all that. I've spent countless nights staring at my laptop trying to figure out
what is wrong with a page of seemingly-correct text. I make lots and lots of mistakes. But when we're mere days before a release, and I've fixed all known bugs, we never,
ever get a random, non-reproducible crash. This would be like a veteran bicyclist falling off his bike after twenty years of solid riding. While stopped at a traffic light. With his feet on the ground. This kind of thing simply doesn't happen.
After posting
a frantic bug report with nearly every related detail I could think of, I narrowed down
the error: it was something that I had never learned about the language I was coding in. To give a brief estimate, I could probably fix this with a week or two of hard work.
I must say, I was legitimately agitated for a few days. Not about the time necessary to fix this mess (I actually enjoy rewriting lots and lots of code; don't ask me why). Rather, I was upset that I'd let ignorance creep in to a project I wholeheartedly cared about. Granted, I was lucky: this error occurred on a side project, with a relatively small user base, on a non-essential feature, and was caught
just before release. For my first professional mistake, it could have been much worse.
What brought me out of my gloom was the realization that it was time for my favorite part of being a computer scientist: arcane knowledge! I knew
exactly what book I needed, but I couldn't find it in the public library, as the last major update was circa 2000. I knew the quality of the author's knowledge on this subject, though, so I looked in the private collections on campus and found a dusty pre-release dating back to 1997. And there you have it: a single book in a "restricted" (to the public) library contained the Knowledge (capital K) I needed to fix the mess I'd gotten myself into. This is the kind of thing you'd see in a sci-fi/fantasy movie! (Note: I also checked Google Books for the "search inside" option, but it wasn't there.)
I love the feeling of such arcane knowledge, especially as it is so rare for a computer scientist to
need anything from pre-2005. Since I'm pretty much going to have to re-write all of the core routines in my program, I thought I'd first brush up on language details by reading the entire book. So far, I've found nothing that surprises me like the previous error did. That is to say, I was tripped up by a tiny technicality that I should have thought about more. I
did, however, find a lot of really great
new techniques I can put to good use. The new code will be even stronger and more maintainable than before the crash, thanks to the quality of this book.
Well, that's that. Like I said: arcane wisdom
FTW! I can't help but love an endearing story, and mystical ancient powers make
any tale more exciting.
Speaking of story-telling, I think it's time for a....
Mini Movie Review!Star Trek: Excellent job, guys! Very entertaining.
Angels & Demons: Very disappointing ending, compared to the book.