May 2005 Archives

Up early (for a Sunday) to head up to Gambrill State Park for a bit of hiking. We got to see a big chunk of Rolling Thunder headed south as we drove up north.

climbing a hill shelf fungi spot the woodpecker!

(That third photo contains a woodpecker that I just didn’t have enough glass to do justice to. If you click through to the Flickr version, there’s an annotation pointing out where it is. Hint: look near the bases of the trees.)

Lunch in Frederick after the hike, then home for naps all around. More grilling in the evening; beef this time.

Fairly ho-hum Saturday. Spot of running around in the morning, nap with TheChild in the afternoon, and then grilling up some nicely smoky tuna in the evening.

Rather amazingly crap Friday. At least it’s a three day weekend…

Shuffled TheChild off to school in the morning, then got myself to work. Plugged away for a number of hours, then fetched TheChild back from school. Got some dinner into her, and struggled her down to sleep. Not long after, TheWife arrived back home, and we caught up for a bit before staggering off to bed.

Winn Schwartau, heap-big information security guy, is switching to Macintosh:

In the coming weeks I am going to keep a diary of an experiment that I began in my company at 6PM GMT-5, April 29, 2005. An experiment predicated upon an hypothesis that the WinTel platform represents the greatest violation of the basic tenets of information security and has become, indeed, a national economic security risk. I do not say this lightly, and I have never been a Microsoft Basher, either. I do not and will not dis any one company without a fair bit of explanation, justification and supportive evidence or experience. So bear with me as I attempt to document the results of my experiment and I will attempt be fair to myself, my company, our clients and the computing public at large.

Should be interesting to watch.

There’s no shortage of scary news on the avian flu pandemic front. Estimates of up to 7.5 million dead and 30 million needing hospitalization; current mortality rates are around 60%, and human-to-human transmission has possibly been observed.

Hectic day at work — lots of balls in the air. Managed to get most of them into place without dropping too many of them.

TheWife took off in the afternoon on another overnight business trip, so I picked TheChild up from school, and then we headed out to get something to eat before coming home for a bit of playtime. She was really resistant to going to bed, which was pretty frustrating for me.

Dreary, rainy Tuesday. Got quite a bit of catching up done at work, then came home and pushed another Feast On Feeds release out the door.

A partial list of changes:

  • Atom support; better RSS parsing.
  • Tons of visual tweaks. New “light” CSS file by default; old “dark” file also included.
  • Change ‘mark all read’ command so that it leaves ticked items alone.
  • Support for per-feed update intervals and item expiration times.
  • Fixed a database locking bug (I think).
  • Add an index to the feed table; speeds up the feed list display by 5-10 fold.
  • Quite a few other minor things — see the CHANGELOG in the tarball.

Here’s some screenshots of the new release:

two column viewper-feed preferencesfeed image support

Here’s the FeastOnFeeds-002tarball. Share and enjoy; questions, patches, feedback —

Not a great Monday. On the positive side, TheChild went back to school, and seemed to really enjoy getting back to her routine. On the considerably larger minus side, I forgot to take her lunch on my first trip to her preschool, which led to a lot more morning-time dashing around than I had planned for. Due to the extra trip, I was about 10 minutes late to the major planned activity of the day: taking my car into the dealer to get some work done.

I was taking the car in to get a couple of minor things looked at. The first minor thing — a broken hand-brake button — happened a few months ago, and I’ve just been dealing with it. It was annoying, but not obnoxiously so. The other thing — a small, slow transmission fluid leak — was pointed out by my usual oil change guys last weekend when I took the car in for the regular servicing. (It also provided an explanation for that puddle in the driveway…)

So, I sat around in the dealership for about an hour, and got caught up on some reading. Eventually, the service guy motioned me back into his office. He told me that the hand brake thing could be easily and quickly fixed, for about $75. Then he said, “On that transmission thing — man, that’s gonna be a fortune!” (This, by the way, qualifies as a Really Bad Sign.) It seems that at some point, somebody tightened something too much, which cracked the transmission case. Fixing that entails getting a new transmission case, taking the current transmission case (which contains the transmission) out of the car, taking the transmission out of the old case, putting it in the new case, and then putting the new case (and the transmission) back in the car. It also entails me giving them around $2500, which is right around what the car is probably worth on a good day.

(Aside: somebody needs to smack the Kelly Blue Book web site people with the clue stick. Let me put in the damn car info once, then show me all the various types of prices. Idjits.)

Unsurprisingly, I just went for the hand-brake fix. Getting that finished up took another 45 minutes, and then I grabbed some lunch and went home. Spent the afternoon catching up on stuff around the house. Picked up TheChild around 5:30pm, and went out to grab a bite of dinner. Back home for some playtime, and an unexpected bath, before bed.

TheWife rolled back in from her overnight trip around 10pm, and we caught up for a bit before turning in.

Pretty quiet Sunday. I spent a good part of the day working towards another FoF release, TheWife was headed towards NYC for an over-night business trip, and TheChild… well, let’s just say that things have firmed up in her neck of the woods, but it’s still not easy being green.

Started off the day with a community meeting — it’s the 20 year anniversary of the founding of our subdivision (at least, if you tilt your head to the side and squint, you can make it 20 years; in my book we’re closer to 16 or 18…) Had some interesting bits, and it’s always nice to get a chance to interact with your neighbors. I took some pictures as things were going on.

Out for a huge lunch with the family after that, then grabbed a nap. Pretty quiet evening; made a bookstore run, but that was about it — lunch left us so bloated that TheWife and I skipped dinner entirely…

In the PerlPoint posting last week, I mentioned a set of HTML-based slide templates I grabbed from Jessamyn West. Turns out that, contrary to my recollection, they were developed solely by her. You can grab a sample talk for yourself and see how they work — highly recommended.

TheWife had a number of work-related meetings today, so I got to stay home and wear the Mr. Mom hat (and, given the specifics of why the TheChild is at home and not at pre-school, the Mr. Mom extra-large box of wipes and the tube of diaper rash creme…)

We had a pretty calm day; she played (with books and blocks and Little People) and I played (with Perl and SQL and Atom), then we had some lunch, and then we took a nap. Out for dinner in the evening; all in all a good “recharge” day, which I think I really needed.

TheChild still home from school. We’re pretty sure she’s got the rotavirus; it is apparently making the rounds of her preschool.

Very blah day at work; never really got a chance to catch up on sleep from the long night Tuesday, which I think was finally taking its toll.

Alarming poop-related mail of the day from The Wife:

I didn’t know the human body could produce that shade of green. I’m calling the pediatrician.

Turns out that the purple dye in grape-flavored electrolyte replacement fluid turns green on the way through — a shocking, mid-80s-style neon green.

Aside from the shocking output of the offspring, it was a pretty pedestrian sort of day.

Better late than never: FeastOnFeeds-001 is available for download. Share and enjoy.

Requires a web server capable of running CGIs, Perl, and a whole raft of modules, most of which are so mindblowningly cool you should already have them installed. Has, like, installation instructions and everything, just like real software. Holler if you have questions or problems or (especially) patches.

And now I’m going to go think about the first things I want to add for the 002 release…

TheChild is on the mend — fever broken, spirits restored — but is now suffering from a bout of diarrhea that TheWife described as “apocalyptic”. I was in the shower when the first “incident” happened, but TheWife described it as follows:

She was standing next to me, then there was this “phhhhbbbbttt” noise, and then a SPLAT as it hit the back of the diaper. And then she said “toot”.

(Round about now is when people should be thanking their deity of choice that “smellcasts” haven’t been invented yet.)

Luckily, I got to go to work, but I’m told the rest of the day was pretty “incident” free — as was work, fortunately enough. Mainly a gnat-swatting day for me — knocking off a bunch of tiny things. Was planning on getting to a review, but ran out of time and headed home instead.

I’m told the Diarrheal Apocalypse continues, but I’ve managed to avoid personally witnessing any of it. TheChild is still staying home from school, still in good spirits, and still periodically producing vile Lovecraftian horrors from her nether regions, which TheWife heroically dispatches with the aid of some rubber gloves, a spray bottle of dilute Clorox bleach, and a flamethrower.

Speaking of vile Lovecraftian horrors, I tackled the FTP log rotation and analysis system at work today. Actually, first I did a review, of sorts, and had a team meeting, and came very close to throwing something at an interrupting co-worker — but eventually, I got around to fixing the FTP log rotation and analysis system. Well, the rotation half, anyway; the analysis part is planned but not yet implemented.

(For those of you wondering, no, my job really doesn’t deal with logs as much as it seems like it does. Well, okay, yes, actually, it does — but the in the last several weeks I’ve been reworking our FTP and web server logging systems to accommodate several new servers, some of which are located far away, networkologically speaking, behind high firewalls, which require some complicated handshaking to get through — so I’ve been doing the sysadmin/programmer equivalent of crossing my eyes, sticking my tongue out, and trying the thread a particularly difficult needle. Once I finish the FTP analysis crap (I <heart> Class::DBI plus SQLite…), I can hopefully get back to something a bit more interesting, like sticking every file I’m responsible for in CfEngine or going to meetings or something.)

For the past week or so, I’ve been hacking on something I’ve been calling “Feast On Feeds” — a port of the Feed On Feeds PHP/MySQL server-side RSS reader to Perl/SQLite. At this point, it’s both less and more than a straight port: there are some things missing (no Atom support yet), and some new things (some color coding, the notion (stolen from Gnus) of “ticking” something as important so you can find it later). I should have a tarball up in the next couple of days, depending on when I get around to documenting the installation process a little bit better.

In case anybody is interesting in using this or hacking on it (yes, Raster, I’m looking at you…), here’s some screenshots to whet your appetite…

In SafariIn FirefoxAdd a feedFeed added!Delete a feedFeed deleted!

In the past, when giving talks and lectures, I’ve used a CSS system that I ganked from Jessamyn (that I think she ganked from somebody else, actually, but I’m too lazy to dig out the file just now), and I’ve used a similar-but-more-overly-elaborate thing I crafted out of Template Toolkit and about three gallons of camel spit one evening when I should have been working on a talk. Both those methods involve writing your slides in vaguely HTML-ish text and then using a web browser for presentation.

Today I discovered PerlPoint, which looks like much the same, only more so, in a “this one goes up to eleven” sort of way . Here’s a lecture about it, and here’s the README from the module tarball, in case this sounds interesting to you too.

I had been planning on polishing up my TT+camel spit thing before the BioPerl class this summer, but maybe I’ll look into this instead. (More vaguely-relevant procrastination fodder — rock!)

As mentioned below, TheChild is fighting off some virus that’s laying a bit of a fever on her. This lead, in a roundabout way, to TheWife and I discussing whether it was “feed a cold, starve a fever”, or vice versa. I applied The Google Solution, and found that Google votes for the “feed a cold” form, but only at 3,440 hits to 1,430. That useless bit of trivia is going to be clogging my brain forever, but now I’ve introduced the same brainclog into all of your heads too — haha!

(By the way, The Staight Dope says:

Doctors have been trying to stamp out the above piece of folklore for years. Current medical thinking is that you want to keep an even strain when you’re sick with either a cold or a fever, and you certainly don’t want to stress your system by stuffing or starving yourself.

so there’s that.)

In the process of answering a question over at BackupBrain, Medley pointed to this cache of ASR quotes. There’s an hour of my life I’ll never have back again.

TheChild still sick — she spent the whole day in her pajamas. Anytime we asked her about getting dressed, we got a very firm “No.” Her temp was bouncing between 99 (at which she’s fairly normal but with a much shorter-than-usual “fuse”) and 102 (at which she’s a very warm, very whiny,fuzzy foot-in pajama-wearing lump), depending on how recently she’d had a dose of Tylenol.

I was still hacking away madly. By the end of the night, the only thing left for me to do is write a shell script to generate a release tarball, and write up some documentation (including the two pages worth of stuff for the TODO…) Go me!

Scheduled to have a picnic or some sort of downtown outing today, with the Likely Suspects, but canceled on account of (predicted) rain. Rain showed up rather much later; during the planned time of the picnic-ing, all would have been well. So it goes.

TheChild woke up from her afternoon nap with a fever and a less-than-sunny disposition. We applied drugs and cuddles and settled in to wait it out.

Despite the lovely weather, mostly stayed inside. Lots of Feast On Feeds hacking. Got about 35% of the stuff on the “pre-release” list done.

A mostly uneventful Friday. Knocked a few items off the todo list, but did I get to the weekly review stuff I had planned? Where I English, I could say “Did I bollocks!”, but I’m not so I can’t.

Send-off party in the evening for a colleague, then home around 9pm to slide TheChild into bed.

Pretty good work day. Got quite a bit done; the biggest victory was in mapping out how the new ftp log rotation and analysis stuff is actually going to work, and writing up the pseudocode for the three different scripts that are going to drive the rotation, archiving, and data loading side of things. Still have to deal with the visualization aspects, but I figure that can wait until I’m actually generating data to visualize.

In the morning, before heading to work, I finalized the FoF ToDo lists. The “before 0.1” list has 10 things on it; we’ll see how many of them remain by Monday…

Pretty typical work day. Couple meetings, whole buncha tiny “gnat bite” projects disposed of. Ho hum.

More FoF hacking in the evening. Started breaking my list down into “before 0.1” and “after 0.1”…

Back to work. Spent a lot of the day shoveling out various inboxes, and wearing my manager hat: pinging on the status of projects, passing along tasks, greasing wheels, patching fences. One of my least favorite parts of the evolving situation that is my job.

Did get to take off the manager hat late in the day, and throw the programmer/designer hat on. My next big coding project is fixing up the FTP log rotation and analysis process in much the same way that I did for the web log rotation and analysis process. I started out thinking about the analysis part of the problem, and eventually realized that in order to be able to do anything there, I need to rework the rotation/archiving setup too. Yay scope creep. On the plus side, I think I have a way to use RSS to present stat information that should work pretty well for people, so that’s something.

Home to a very tired TheWife and a not-at-all tired TheChild. Sent the former to bed, and tried (without notable success) to get the latter to do the same. In between telling TheChild to lay down and go to sleep, I made a bunch of tweaks to FeastOnFeeds, and assembled about two pages worth of things I want to add. It’s a wide-ranging list (everything from “check all this crap into CVS already, dammit” to “implement parallelized feed downloads with Last-Modified-Since support” to “make the control panel frame less asstastic”); I think the next step is to break things down into “before the 0.1 release” and “after the 0.1 release” categories and see how quickly I can get something reasonably featureful pushed out. (And yes, there are about a kajillion things I should be working on other than foisting yet another RSS reader on the world, but doing that is more fun than the rest of that stuff, so phhhhttttbbbth.)

Up on first-of-their-kind charges of blood doping, the best explanation Tyler Hamilton could come up with didn’t pass my smell test…

Last month, when the champion American cyclist Tyler Hamilton was accused of blood doping, or transfusing himself with another person’s blood to increase his oxygen-carrying red cells, he offered a surprising defense: the small amount of different blood found mixed in with his own must have come from a “vanishing twin.” In other words, his scientific expert argued, Mr. Hamilton had a twin that died in utero but, before dying, contributed some blood cells to him during fetal life. And those cells remained in his body, producing blood that matched the dead twin and not Mr. Hamilton. Or perhaps it was his mother’s blood that got mixed in during fetal life.

Here’s the rest of the story at the NYT.

Still suffering from the cold. Elected to stay home from work and take things easy — also wanted to keep a bit of an eye on TheWife, who was still moving around like a gimp in the morning.

Since I had the time, I decided to start a project that I’ve been kicking around in the back of my head for some time: porting Feed On Feeds to Perl. I’ve been using Feed On Feeds for some time; it was the first aggregator that I found that fit my particular set of needs.

One reason for the port was to make it easier for me to add some features that I’ve been wanting (per-feed update intervals and the ability to save items in a ‘ticked’ state are at the top of the list). Another reason was to play around with the ultra-spiffy Class::DBI and SQLite; I’m going to be using them for a project at work, which means this qualifies as “research”. (I’m also thinking about ways to work those two topics into this summer’s BioPerl class, so I could tell myself that this was part of the prep work for that too…)

I’ve looked at the structure of the Feed On Feeds code before (and made some very minor tweaks to my local copy), so it was pretty easy to lay my stuff out in a similar fashion. (Jacking the JavaScript that handles marking individual items and letting the user change their state was probably the biggest time saver.) And of course, the combination of Class::DBI and Template Toolkit makes for some pretty rapid RAD, especially if you go with the XP-style “simplest thing that could work” method. Here’s a screen shot of how Feast On Feeds (that’s what I’m currently calling the project) looks so far:

Feast On Feeds

There’s still quite a bit of work to do before I would consider releasing anything, but if I implement importing of the OPML that’s exported by Feed On Feeds, I could be eating my own dogfood here pretty quickly.

Dinked around for most of the day, then headed downtown for SIG-BEER. We had a decent crowd for a change.

Got home late, to discover a damaged TheWife. She had been re-arranging things in her office, and tried to move a desk over a few inches. She got the desk moved, but threw out her back in the process. She spent a long night with the heat pad and an occasional whimper.

TheWife had a pretty sub-optimal Mothers Day, due to the furniture moving activities of yesterday. Things improved in the afternoon, once she got her doctor to phone in a script and I went and fetched the drugs for her.

Out for a (very slow, fairly short) walk in the evening. The cold that I’ve been nursing for the past couple days started kicking up later in the evening.

Not the most productive Friday ever: had a meeting in the morning, then lunch, then another meeting in the afternoon — so it was basically 3pm before I had a chance to look around. Caught up on mail and decided to just head home.

Dinner at the mall; we had to do the periodic check of the TheWife’s wedding rings at the jeweler. Home after that, and early to bed.

Kyle dropped 10 Steps to Better Systems the other day; it’s a pretty direct port of the 12 Joel Steps to the practice of systems administration. I’d be tempted to add an eleventh one (“Do you use configuration management?”), but the intent arguably fits in with his numbers one and two.

Fives Day was a bit of a bust. Meetings in the morning, and then never really managed to pull the day together after that. Did end up doing some long-put-off directory house-cleaning, but that was more of a last-ditch “well, let’s harness the procrastination and roll with it” thing.

Early to bed because I couldn’t quit yawning, and then tossed and turned, coughed and snuffled. Either something I’m allergic to something that’s blooming right now (“Spring! Because bathing in airborne plant jizz is like an exfoliant for your immune system!”), or I’m coming down with a spring cold.

Today was “damn it feels good to be a gangsta” day at work. On DIFGTBAG day, you ignore email and boring crap that you don’t want to do, and work on things that are fun and interesting. I have discovered that when I follow this simple formula, my job rocks pretty hard.

It wasn’t all sunshine and rap music; I did have to go to a meeting in the afternoon. In the meeting, had an epiphany regarding the nature of humanity: when confronted with an unescapable task that is difficult or unpleasant, people generally reveal themselves to be one of two types. There’s the “okay, that sucks — now how are we going to do it?” type, and there’s the “oh, that’s impossible — we can’t do that!” type. That latter group is just a pain in the ass, really.

Excellent day. Ploughed through a bunch of review-type stuff in the morning, and had a pretty good team meeting in the early afternoon. Was trying to figure out how to fill the last hour of the day when I decided to add RSS generation onto an web server error log parser that I’ve been working on. Things went incredibly smoothly (thank you, XML::RSS), and I had a mostly-working feed by the time I headed home. (Yes, I rock those 2001 technologies like that.)

More hacking on the feed generation stuff into the evening — invested a lot of effort trying to solve a problem that turned out to not be a problem at all; just my usual feed reader doing something unexpected (and stupid) when given a feed full of <item>s that all have the same <title>. Throwing a timestamp into the <title> sorted that problem out nicely.

On the non-RSS feed front: There was some concern over TheChild’s right eye at pre-school today — the teachers thought that it looked puffy, and that she was keeping it closed most of the day. By the time TheWife got there to pick her up, however, she really couldn’t see anything out of the ordinary. Neither could I, once I got home. We sent her off to bed with a dose of Benadyrl, on the general grounds of “maybe she got bit by something, and well, it can’t hurt”. We’ll see how she’s doing tomorrow.

While I went into work (in an anti-Murphy judo move designed to ward off the trouble that would have occurred had I not gone in), TheWife and TheChild headed up to Baltimore to see The Imagination Movers, TheChild’s most favorite musical group ever.

TheChild rocks TheMovers TheChild rocks TheMovers

From the reports I got, everybody seemed to have a pretty good time.

The Big Thing officially launched at 8:30am, which meant I had to be at work at 8am (which is unusual ‘round these parts…). On the upside, I was munching on a donut at the time, so it worked out.

A mostly quiet day — no problems with The Big Thing, or at least none that were my responsibility to get fixed. Much of the morning was spent watching systems carefully, making sure they weren’t going to do something unexpected. Afternoon time was mostly head-down, ploughing through drifts of accumulated work and such, and doing a long overdue weekly review.

Relatively down day. Spent most of it cleaning things up on the laptop, and offloading things to CD-R. Then wiped it clean, installed Tiger, and set about putting everything back on. That process got derailed by the re-install of Dungeon Siege, which needed testing. Lots of testing.

After yesterday’s respite, The Bad Week was back. Spent most of the day in meetings and/or conference calls. The big push was all about getting a new system into production on Monday — something much more high-profile than we usually work on.

Dinner after work, of course. Also picked up a copy of Tiger at the Bethesda Apple Closet.

Finally, the day the Bad Week was all about. Since TheChild is going to a Jewish pre-school, her Spring Break isn’t near the Easter week, but over the Passover week. So she’s been out of school all week, and TheWife has been trying to do some sort of little activity with her each day, in addition to getting her work hours in while TheChild was napping (theoretically, anyway). I didn’t want to miss out on all of that, so the plan was that I’d take today off, and we’d have some sort of Family Outing.

hiking in rock creek parkhiking in rock creek parkhiking in rock creek parkhiking in rock creek park

That Family Outing ended up being a couple of hours of dayhiking in Rock Creek Park, which everybody enjoyed, followed by some lunch, and then home for naps all around.

Into work a bit later than normal, but other than that, a fairly typical Wednesday. Fixed a few bugs in the weblog stuff; went to the big meeting; tried to not spontaneously fall asleep.

The Bad Week of Work peaks — 17 hours at work, finishing up the new web log rotation/analysis software I write and putting it into production. Went mostly without hitches, amazingly enough — just a whole lot of hours.

The Bad Week of Work really starts to swing.

]The beginning of The Bad Week — into work for a number of hours.

Trip to the library in the morning, followed up with lunch, and then home for a nap.

Friday, so I’m sure we went out to dinner after work, but other than that, nothing too memorable about this day.