and this is why I need a holiday
Help. I’ve fallen and I can’t get up.
I’ve been reading trashy pulp fiction from Vince Flynn recently; since Clancy seems to have thrown in the towel somewhat. One story perpetuated by both Clancy and Flynn (among others) is that successful assassins, airline pilots with a penchant for driving into the Capitol Building and other heroes of note have one thing in common. A checklist. Pragmatic Programmers, a bunch of guys making a living writing books stating the utterly obvious (and very well at that) call this technique The List. Always obey The List. Imagine deific thunderous overtones on that phrase and you’ll about get it right.
Now, how successful I am at assassination is yet to be seen. I may not have needed to dispense killing blows yet in this lifetime; but I do happen to share one thing with these Clancy/Flynn heroes. I have a list. Whenever I start doing something, I try to keep track of all the fiddly little details. It’s a visualization technique which works well for me; in perhaps obvious (and not quite so obvious) ways.
Another weird thing about this list is that I sort it by a specific order. Which is excellent for a development task (committing something to a source repository is rather pointless if you haven’t done any work, right?); but can lead to some weird stares when my shopping list memorization leads me through a specific (read: bull in a china shop like) route through the supermarket aisles. But anyway, enough digression about my supermarket trolley antics - the main point here: I have a list. And I use it to bring order to the otherwise endless chaos of my existence.
Except, you see… yesterday, I was rather stressed out about several things and I forgot the list. I can only blame my relative lack of youth for this, because stress isn’t anything new to a software developer. I forgot the list. And what followed, obviously enough, was pure chaos.
For some of you who may not be in the know, I run a small RSS aggregator site. I may have alluded to this engine (or specific features of the engine) in earlier posts as well. Anyway, one particular RSS feed had been giving me persistent trouble because it insists on producing feeds which were not well formed XML. This is ugly stuff; because if your XML is invalid, there is really nothing very much that can be done to rescue that feed from the ignominy of a “Not well formed, invalid tokens present” error. Unfortunately, being borderline (if not outright) OC about having everything just-so, I took it on myself to fix the misshapen XML being spat out by Kottu before it reached my own RSS parser. Which is theoretically quite easy - one simple transform and you’re done. Only, theory is never really anything like practice and a few problems immediately arose.
See, for performance reasons; everyone caches RSS feeds. This includes my own RSS parser; the very cool but sadly no longer maintained MagpieRSS. I tried to place a filter between the XML file being delivered by Kottu and my own RSS parser. That worked. Only, my RSS parser’s caching inspected the file; decided that nothing was changed since the last time; and then served out the cached RSS file. Which is … uh … broken. Can’t blame the caching system because I was being sneaky about where I was placing the filter - the cache was inspecting HTTP headers which, obviously enough, had not changed since the last time. AAargh.
So, (thinks the guy who thinks he has devised a cunning plan, but hasn’t thought it all the way through) I just need to delete the cache, don’t I? I’m sorted then, aren’t I?. Yeah. So, instead of consulting the list, I hastily throw open a terminal window and blow away the cache. I may have forgotten that all the date/time related information (when a specific feed was fetched) was also stored in the cache directory. Actually, there is no may have, I just plain darn forgot.
So ordinarily, no biggie. No timing information, no cache. Everything should get fetched again and everything is hunky dory. Except, uh.. no. My dupe resolution system absolutely requires that some data already be present in the cache. Had I consulted my list, this would have been immediately apparent. But, (not to drive the point home or anything), I didn’t consult the list. Aaargh.
So, Ach died. I fumbled around foolishly trying to fix things for a while but yesterday really wasn’t a great day to be juggling lots of jobs. So, I stopped doing that. I had (as sage would say), teh respect. No more futzing around code without consulting the list. So, rebuilt the cache a few minutes ago. Played it safe and removed the fancy filter till I can test it. And we’re back.
The moral of the story is… don’t deal with anything called Achcharu unless you have an unjumbled mind. And always, always consult the list.
Just say it
Can't post a comment ? Any other commenting problems ? email lair - at - fierydragon . org