Word of the Day

Is it just me or is the American public getting dumber every day? Why in the world would Dictionary.com decide that "pot" is the word everybody needs to have a deeper understanding for?

Betwixt and Between

So there seems to be some sort of fad going around regarding closely observing mundane things. I thought I'd give it a try. Oh, what joy I found!

For the whole of last week, I carefully carried out my little observational experiment. It was quite an arduous task made more difficult by my desire to keep my actions close to my vest. I knew from our good friend Heisenberg that I might have an effect on the thing observed if it knew I was observing it.

Or was that Goodall?

At any rate, this is the thing I noticed: Every single day last week, there were three stations between Greenbelt and Fort Totten.

You might be thinking that this was no interesting feat. Perhaps you could have done the same thing yourself. My response has two parts: (1) Well, you didn't, did ya? and (2) How long would you have spent on the thorny question of the definition of "between"?

Your answer to the eternal between problem probably says a lot about you. A sports fan might frame it thusly: are you tennis or football? I guess I've learned I'm football. Fort Totten cannot be between Greenbelt and Fort Totten any more than the Earth can put itself between the Earth and the Sun. If it could, we would all gather behind telescopes to watch Terrestrial Eclipses. (Of course, we'd be careful not to stare. Or swim within 30 minutes after it was over.)

It's also a lot like relationships, really. You can't really be the person that comes between you and your significant other. Only Raoul or Sharona from the gym can do that. Actually, I guess you can come between you and your significant other, but only if you have real problems.

EoY Cleaning House

Well, since I can't actually go home and clean, I guess I'll muck with the blog while I wait for testers to test and developers to develop.

I've switched over to the new Blogger template method of mucking with design. It starts off as easier than the old html method, but if you know any html (and I'm not saying I do), it quickly becomes a pain because I just want to do X and it doesn't let me!.

Interestingly, it also seems to have removed all of the tags inside my posts, so there aren't any line breaks.

Blame it on Oblomov

A Weather Report

This weather has gotten me into a funk. Cold and snowy, I could like. Warm and rainy, I could deal with. But cold and rainy is awfully depressing for this time of the year.

It might also be this head cold that I have been battling off and on for months. Just when I think I've recovered, I get another bought of raw throat or coughing.

On the other hand, this morning I noticed a lot of other folks on the Metro shuffling around like shell-shocked survivors of some catastrophe, moping through the motions of returning to regular life after some kind of titanic disruption. Perhaps the holiday season is much like a volcanic eruption or earthquake that we do to ourselves every year and spend a few weeks picking up our pieces and trying to reassemble normality.

Or just maybe I shouldn't be reading Russian novels in the winter.


Wow! Two posts in one day!

One of the single most useful services on the web is called TinyURL. If you have a really, really long URL that will get broken when you put it into an email, you can go to TinyURL and it will convert it into a smaller URL that won't get a line break from your email system.

For example, say you wanted to tell everybody about your dancing cat at http://www2.blogger.com/post-create.g?blogID=6010810, but when you send it in email, the email changes it to http://ww2.blogger.com/post-
create.g?blogID=6010810. That's no good. TinyURL can change that into a smaller one: http://tinyurl.com/vwm3c

Today, though, I found that you can make it give you a URL that's longer than the URL you started with. I found this out because I accidentally pasted one TinyURL into the TinyURL generator. I got this:

TinyURL was created!

The following URL:


has a length of 24 characters and resulted in the following TinyURL which has a length of 25 characters:


Select * From emotions Where feeling in ('tired','grumpy','hungry')

Well, my little sign only lasted a day.

I was here until nearly eleven last night. I'm pretty beat. I sure hope we get this done soon. What is the deal with db people? It's like we don't speak the same language or something. When I hear 'ETL', I generally think that means we won't be able to have a single set of insert statements that works in all environments. Otherwise, it would just be an 'L'. Am I crazy or something?


So, there's this vending machine --

Wait a minute! Before I go any farther (further?), I have got to stop and say: "We went to a great party on Sunday." Oh, yeah, our neighbors pulled out all the stops, and we walked away with some excellent loot. The Brunette hasn't stopped singing into the microphone radio since Monday morning. Our neighbors rock. (Insert whatever it is kids these days express admiration for others.)
So, at any rate, there's this vending machine at work. As the week goes on, it gets covered with these tiny little yellow sticky notes that say things like, "This machine owes me 25 cents -- Susan" and "This machine ate my dime -- Tom" This morning, I noticed a new note. It says, "This machine gave me an extra 40 cents -- Roger". Now, I thought that was a pretty impressive thing for Roger to do. Personally, I thought he should go to Susan and Tom and split his winnings, but at least he fessed up to it. I also thought it was time to add another note to the machine, so I did. It said:

"This machine said bad things about my mother."

Tall Tall True, Tales (Dale Butler)

TALESWAPPER: Testing... Testing...
GREAT UNCLE LEADBELLY: What are you doing?
T: I dunno. It's just what you do at the start of a tape.
GREAT AUNT IVA: Leave the boy alone.
GUL: [unintelligible]
T: OK. Let's get started. This is tape one. I'm here today to interview my imaginary relatives. This is the beginning of a bit of oral history inspired --
GAI: Do you have to call us "imaginary"?
T: Well, you're not exactly real.
GAI: Oh! That's awful hurtful.
T: I'm sorry, Aunt Iva. If it's any consolation, you're the best imaginary great aunt I've ever known.
GAI: Sweet boy.
GUL: [unintelligible]
GAI: Are you going to snort and grown through this whole thing?
GUL: Maybe. We'll have to see.
T: At any rate...[ahem]...I'm here today
GUL: You said that already.
T: What?
GUL: "I'm here today." We know you're here today. That's why we can hear your voice on the machine thing.
T: Well, I...Ok. So, we're about to record a bit of the oral history of the family. I was inspired to start this effort by a book called Tall Tall True, Tales and Bermuda Traditions, which was written by a man in Bermuda.
GUL: Which you can tell from the title...
T: We received this book as a gift from our wonderful neighbors who had visited Bermuda recently. They have a nice little chihuahua and a strange looking, but friendly, cat. We watched the dog for them while they were on vacation.
GUL: Boy, you do go on.
GAI: Do you have any pictures of the dog?
T: Actually, I do. The dog looks tiny next to our cat, don't you think?
GUL: [unintelligible]
T: Sorry. I just wanted to set the background. This book had a lot of stuff about the author's childhood, followed by instructions for generating a similar family account. So, I thought...
GUL: OK. During the war, I remember looking at the General and telling him, "Ain't no way we're going to make it down the hill ahead of us and it's durn near impossible to go back down the hill behind us. So we're either gonna have to sit here on top of the hill and moon the enemy or...
GAI: Nobody wants to hear about your imaginary war record.
GUL: Fat lot you know. What do you want to tell him about?
GAI: I thought we could discuss my early sweethearts.
GUL: [unintelligible]
GAI: There you go again...
T: Actually, I think the instructions say to start with your childhood.
GUL: She was never young
GAI: He never grew up
T: So how many licks did you get as a kid?
GAI: Licks?
T: You know: beatings, spankings, that sort of thing. The book was all full of punishment. It was very funny.


GAI: We didn't really...Do you think there's enough tape?
T: I imagine there's plenty.
GUL: What else you got?
T: OK. Let's see. Did you enjoy the Gambey dancers?
GAI: You know we didn't grow up in Bermuda, right?
T: Sure, I just thought...I don't have much to work with here. I can ask about your favorite meals or the games you played. That didn't seem so interesting to me. What I really want to hear -- in your own words -- is what it was like to live through the last century. I think we can extract from that some nugget of truth about my roots and what eventually shaped me into who I am.
GUL: You're still rambling on. I don't know where you got that from.
GAI: Don't look at me, buck-o. We're imaginary, remember?
GUL: He's done talked so much we're going to run out of tape.
T: Oh, I don't think...
GUL: Hello? Computer? Is anybody out there?
T: Great Uncle, I...You don't have to lean so close to the mic.
GUL: I want to get a word in before the end.
T: Truly, I think there's still plenty of


A Quick Note

This week, I've been reading Thomas Pynchon's The Crying of Lot 49. On the same day I came upon his description of the play featuring the 15th century postal couriers Thurn and Taxis, I came upon the same name in Matthew Baldwin's list of 10 games that would make great presents.

Even better, just above this game was one called Wits & Wagers. Wits & Wagers was created by Greenbelt's own Northstar Games. Mensa has named it the "Best Mind Game 2006", and Games Magazine named it "Best Party Game 2007". Way to go Dominic and Satish!

The Abbot of Unreason

Sir Walter Scott provided this little tale about my ancestors:

The reader may be amused with the following whimsical details of this incident, which took place in the castle of Borthwick, in the year 1517. It appears, that in consequence of a process betwixt Master George Hay de Minzeane and the Lord Borthwick, letters of excommunication had passed against the latter...

It seems that the inhabitants of the castle were at this time engaged in the favourite sport of enacting the Abbot of Unreason, a species of high jinks, in which a mimic prelate was elected, who, like the Lord of Misrule in England, turned all sort of lawful authority, and particularly the church ritual, into ridicule.

This frolicsome person with his retinue, notwithstanding of the apparitor's character, entered the church, seized upon the primate's officer without hesitation, and, dragging him to the mill-dam on the south side of the castle, compelled him to leap into the water...The unfortunate apparitor was then conducted back to the church, where, for his refreshment after his bath, the letters of excommunication were torn to pieces, and steeped in a bowl of wine; the mock abbot being probably of opinion that a tough parchment was but dry eating, [the primate] was compelled to eat the letters, and swallow the wine, and dismissed by the Abbot of Unreason, with the comfortable assurance, that if any more such letters should arrive during the continuance of his office, "they should a' gang the same gate," _i. e._ go the same road.

I've been toying with the idea of changing the name of this site to The Abbot of Unreason. While I pondered this change, I thought I'd give it a try. That's a picture of me in my new outfit. What do you think?

Actually, that's me dressed up as the Bishop St. Nicholas. They like to pick someone who the kids won't recognize, and since I'm never at the church on Sundays, I seemed like a good fit. Unfortunately, the hat was not a good fit. It kept falling down over my eyes.

Festival of Lights - Greenbelt

It was an unseasonably warm evening as Greenbelt launched its annual festival of lights with a concert band, choir, and cookies. Santa visited. He arrived atop a very loud fire truck, which dropped him off and drove away. I wonder if it was in search of a fire.

It was also quite a windy evening and the ornaments on the tree flopped about but did not detach while we were there.

Every Blog Has One

Obligatory Cat Picture

So, the Brunette learns to knit. The cat gets a new hat.

The Man Who Was Thursday (G.K. Chesterton)

I was getting stuff together for a little oral history session with my Great Aunt Iva and her grumpy brother. I was terribly interested in asking them about how often they were punished as children. That's when there was a knock at the door. It was a zombie.

Now, the zombies in our neighborhood are nice enough. They don't tend to bother us for brains. Actually, as I think about it, perhaps that is something of an insult. At any rate, we get along with our zombie neighbors because, unlike some other neighbors I could mention, they don't leave their beeping alarm clock ringing all day long.

Ceaseless, endless, never-stopping noise of the most aggravating type. The kind that gets under your skin and wiggles next to your bones, so that there are these little pin-pricks of itching fire all along your ear drums.

Our zombies don't do that. The zombie had stopped by to drop off a book, which was very nice. She also handed me a sheaf of papers.

"What's this?" I asked. She shrugged.

"Looks like some endnotes to a book," she said. "You can tell they were typed because you can feel the imprints of the keys. I found them scattered in your front yard."

"We call that the service side," I pointed out.

"Right. Anyway, here you go."

I quickly looked over the end notes. I suppose someone must have been compiling them for some book under edit. It seem the pack was incomplete. Here's how the pages read:

72Cashew claw... This is a British term; the American form is "pillow claw," though I admit that the alliteration of the British term is more reassuring.

80...as bright as that tyger in the night forest. A reference to an American baseball team based in Detroit. The team was known in this period for performing better in games scheduled for night than in those scheduled for daytime.

82...made me assume the pseudonym 'Clubs' A clear reference to GK Chesterton's The Man Who Was Thursday, which recounted the adventures of a secret supreme council of anarchists. Each was identified as a day of the week. In this case, each member of the secret organization (though not anarchist in the least) is identified as a suit in a standard deck of cards.

84...and my heart went out to her. You know, I've never been a fan of puns.

86I turned to my google... In the early part of the century, Google was a popular internet search engine. The original intent of this line would have been to indicate that his companion was a person who could find answers. Later, of course, a google would be associated with a flood of useless data (much like a claven, only without the wit). The current connotation (unable to finish projects) derived from Google's perpetual beta approach.

88She was a long drink of water. I'm not sure what this is supposed to mean. What a nut bar!

89...finally encouraged him to join our club... The problem here is that there are only four suits in a deck and they already have four members. I suppose they could move to a Tarot deck and call him Cups or Rods or something. The author has really painted himself into a corner with this suits business. That's what he gets for trying to emulate Chesterton. Personally, I can't really see the allegory he's going for anyway.

90...called him 'Joker.' Oh, well, then. There you go.

91...more truth in heaven and earth Horatio... I'm not completely sure what this refers to, but it's obviously an allusion to something. My best guess is that he means to call to mind a famous cold war spy named Horatio Alger. Of course, I'll never know for sure because the executors of his estate won't let me anywhere near his notes! Weenies.

92...more progress than a pilgrim. Another sly reference to Chesterton's Thursday, truly an allegory for our times.

93...riding a horse of a different color. Chesterton's book is subtitled, 'A Nightmare.' Somehow, a lot of do-gooders running around trying to save the world from anarchists is a nightmare to Chesterton. What's up with that?

93...a horse to water. I haven't figured out a relationship to Chesterton aside from the obvious one.

94...taxi. This long, and (let's admit it) rather rambling, account goes on for much too long and could probably do with a little edit here and there.

95..1...2...2 1/2... This refers to a popular method of child behaviour management. It's a threat-based technique derived from a joke, which is reprinted in my ten volume work of short fiction, May God Bless You, Child, You're Gonna Need It (New York: Smitty and Sons). I'll quote the relevant parts here:

Then Bob started telling stories. I don't know what kicked him off, but it took a while to work out of his system, a little like they say about swallowed chewing gum. The problem with Bob's condition was not so much that he told jokes poorly (though he did), but rather that his innate nervousness stretched the jokes into interminable marathons. A knock-knock joke could take half an hour, easily, because he jumped every time there was a knock at the door.

"This man and woman got married," he said. He blushed at the word and started playing with the salt shaker. His brother had to kick him twice to get the joke restarted. Eventually, his annoyance at being kicked overcame his embarrassment. He plodded on: "They got married and celebrated and stuff. And the ceremony was in some other town, so they couldn't just walk." He stopped for a moment. "I guess you wouldn't ever walk to your own wedding, would you?"

At first I thought it was a rhetorical question and waited for him to proceed. After a few minutes, it became apparent that he wanted an answer. Since I was the only married man at the table, I had to supply a response. "Uh," I said. "I drove to both my weddings."

"Where was I? Had they left the ceremony?" We nodded, to encourage him along. "Did the horse stumble?"

"What horse?" The question escaped my lips before I thought about it.

"The one that stumbled."

"Oh, that makes it really clear," his brother said. "Where did the horse come from?"

"I didn't mention the horse?" Bob asked.

"No," I said. "Though I guess you might be considered to have implied him, what with the talk of not walking to the wedding and all."

"They coulda had a tandem bicycle," grumbled Bertie.

"Did they have bicycles back then?" Bob asked.

"It's probably best to not consider the bicycle," I said. "That is, if we ever want this story to end. Let's just assume the newly wed couple had a horse and were riding it home."

"Actually, they had a horse and carriage," Bob said. "He had to get out of the carriage when the horse stumbled. He said --"

"That's it?" I asked. "What's the punch line of the joke?"

"One," the zombie said. "Anyway, gotta go! The chihuahua is calling." Indeed, she was, and the zombie skipped back to her home.

"One?" I said to myself. "What the heck does that mean?" I wandered back into the kitchen, but the annoying alarm clock was doing its magic in there. So I wandered into the dining room, where it was no better. I went to the living room, where the distance from the constantly beeping and chirping clock should have shielded my sensitive ears.

It did not. I walked over to the wall in the kitchen and shouted at it. I shouted loud and hard.

"ONE!" is what I shouted. And it felt good.

Block This Out

So, I saw this advertisement at Takoma Metro Station as we moved by the platform today:

I got $1,500 today.
Without my W-2.
I got people.
OK, set aside the grammar in that last line. Yes, the grammar made me want to smash my head against the window. Yes, it is a terrible thing to have to see first thing in the morning. But look at that first line. Gosh dang it all to heaven, tho'; if you're gonna use vernacular, use it all the way through! Who is going to say "I got people" and also put that comma into the dollar figure?

The comma makes it look like the advertiser is saying, "one thousand, five hundred dollars." You know that anybody who says "I got people," is going to say "fifteen hunnert bucks."

Happy Turkey Day

That's all. Nothing else. Just "Happy Thanksgiving". And some words around it to make it look like I thought about it, but really, that's just window-dressing. The only important thing is the set of good wishes going out to you on this holiday season and all that. I don't know how else to put it, but you can't really put just a title up and leave it at that, can you? Somehow, you've got to make it work for people. Or make people work for it? At any rate, it's time to climb out of this stream of writing and go to bed.

Happy Thanksgiving.

Pattern Recognition (William Gibson)

"I'm fine," was all that Great Uncle Leadbelly's IM said. After that, all I could get out of him was, "I am currently idle."

I'm fine is not the kind of message that settles the stomach.

But I quickly convinced myself that my imaginary great uncle (on my sister's side) was too ornery to get himself into any real trouble. Besides, there were these daily IMs, but little else of excitement.

That short period of tranquility ended with a call. It was an administrator from Leadbelly's senior living community, the Republican Retirement Ranch and Conservative Community.

"I don't wish to alarm you," she said, "but your uncle hasn't been seen in a week."

"Has he missed a bill?"

"Oh, I wouldn't know anything about that, but I doubt it," she said with some disdain. Apparently, one does not discuss money with this level functionary. "We are simply exercising our due diligence and informing you we have noticed his absence, should you wish to take action on this information."

"I see. Uh, thanks."

"However, I am required to note that the Republican Retirement Ranch bears no responsibility, and will assume no liability, for his disapp-- that is, his absence. Have a nice day."

So, Great Uncle Leadbelly was missing. I was still pretty sure he was alive, considering the random IMs he had been sending. On-the-other-hand, I knew I had to show a little due diligence of my own. I walked outside on the garden side to clear my head and try to make some sort of decision. The bite of cold outside certainly achieved the head-clearing goal. Once it was clear, I thought to pat my pockets for the house keys.

"Stink!" I exclaimed. Locked out.

"What's wrong?" Prasad asked. He and that other kid whose name I never remember were standing on the other side of the hedge at the bottom of our yard. That is, I could see that Jimmy, Timmy, whatever, was standing there. I could only assume that Prasad was standing next to him.

"My mother wouldn't let me out of the house without a coat," the kid-with-no-name said.

"Well, I didn't mean --" I started to snap. I took a breath. "That is, I do not require the permission of my mother, of course."

The kids nodded wisely at this statement of independence. They had walked around the hedge, and I could now see Prasad. He adjusted his tie under his overcoat. Jimmy was wearing an overly-padded blue parka with fake fur around the hood.

"You're lucky," he said. "I'm awful hot."

"Have you guys seen my great uncle?" I asked to change the subject away from temperature.

"Not recently. Is he in trouble?" Prasad responded a little more hopefully than I thought appropriate.

"Oh, no, I'm sure he's in no trouble. I've gotten a few IMs from him," I said quickly. "But he hasn't been around his place lately."

"A missing relative. Mysterious computer-based communiqués. It's just like the book," Jimmy exclaimed.

"Look, kids, I don't have enough time for --"

"Does your great uncle know any women who are out to get him?" Prasad asked.

My great aunt's face flashed through my mind. I wiped it away. "OK, what are you going on about?"

"This book," Tommy pulled a copy of Pattern Recognition from one of his many oversized pockets. "It's the story of this woman who dodges competitors andMafiaa strongmen and junk in the search for the creators of mysterious web films while she tries to come to terms with her missing father."

"We thought it was going to be science fiction," Prasad said. "But it wasn't."

"But we still liked it," Tony added. "He sorta predicted You Tube, there."

"You Tube is so last year," Prasad said mechanically.


"That's what we've been told to say," Ronnie explained.


"Yeah, we're supposed to say that You Tube and My Space and - what's that other one?"

"I believe it is called AskANinja.com."

"Yeah, that one. We're supposed to go around saying that we're over those. They no longer have - what's it called?"

"The term seems to be 'street cred'", Prasad answered.

"I like AskANinja," I said.

"There ya go," Johnny said.

"We get free manga if we promise to spread the word," Prasad said. "We get different ones each month. Last month it was Friendster and text messaging. Once, they attempted to entice us into dropping the phrase 'so last year,' but they didn't really provide us with an adequate replacement."

"'So last year' is so last year," Jack said.

"'So last year' has jumped the shark," I suggested. They stared at me.

"At any rate, I have a suggestion," Prasad broke the awkward silence. "In the book, Cayce turns to a former spook for assistance. He calls in favors to get her information. The spook squats just outside the fence of a government --"

"Honestly," I started.

"Goat Man!" Donnie said excitedly. "D'ya think Goat Man can help? Goat Man lives over on the edge of BARC."

I sat down on one of the stiff-backed outdoor chairs. I jumped right back up. The metal frames of those chairs really do an excellent job storing coldness.

"The spook in the book lived on the edge of a secret intelligence compound. The Goat Man lives over on the edge of the Research Center. That's gotta be more than a coincidence."

"Prasad," I said in my best grown-up voice. "That's an agricultural research center, not an intelligence gathering facility. Besides, sometimes coincidences are just coincidences."

"That's what they want you to believe," Lonnie said. "Where do you think the Goat Man came from?"

"I am certain that Goat Man can help," Prasad said. "We only need to figure out what he wants in exchange. These people always require some quid pro quo."

"What did the spook in the book want?" I asked.

"Some old calculator," Prasad said. "We don't have any old calculators. I'm not sure how to proceed."

"Yep," I said. "Too bad we can't just ask him what he wants. Maybe it's just a jelly doughnut, but we'll never know. Oh, well. Thanks for trying to help out. Now, if you could --"

"I have a jelly doughnut," Lamont said. "Let's go."

"No, really, I have to--" I trailed off at a loss for excuses. I was locked out of my house and standing around in my shirtsleeves. I was starting to jump back and forth to keep warm. What could I lose? There couldn't really be a Goat Man. I could run along with them, the exercise would keep me warm, and when I got back the Brunette would be home with keys.

So we walked down to the end of Ridge Road. It's a long hike, but cutting along the off-road sidewalks sliced the road's arc. Along the way, the kids explained to me, in hushed tones, how Goat Man was the result of a research project gone terribly wrong. Some scientist had tried to cross goat DNA with monkey DNA. It just happened that his lab was at the intersection of the energy from cell phone towers for three major phone companies who were competing to make the strongest signal. I mentioned that I can never get a signal near BARC. Prasad mumbled something about 'destructive interference.'

We slowed down as we neared the end of Ridge Road, where the road turns gravel. We moved into the trees on a hill overlooking BARC. The leaves had pretty much left their posts for the year with the most recent rain, and nothing really stopped the wind from blowing up the hill from the farmland below.

"He lives beyond the 'Allis-Chambers,' according to the twins," said Prasad. "What's an Allis-Chambers?"

"I don't know," I said. "Why are we whispering?"

Prasad pointed. Just beyond an old rusted tractor engine, someone had erected a small tent. We froze. The kids looked at me. I looked back at the road. I hadn't really expected there to be anyone.

"Let's not bother --" I started, but Jerry strode on purposefully. He held the doughnut out stiffly with his left hand. Something in the tent moved enough to shift the tent. I jumped forward and grabbed Jerry by the hood. I took the doughnut and waved him back behind the tractor. The two children stood there expectantly. I looked back to the road, expectantly, but no relief came. Standing still allowed the cold to completely catch up with me, and I shivered. There's no such thing as a Goat Man, I told myself. It seemed that the only thing to do was to get this over with, so I continued on toward the tent and called out, cautiously. After all, a rational mind cannot be cluttered with things like goat men.

The tent shook with some violence and emitted a low growl. It occurred to me that something called Goat Man might not understand rational minds.

"Who dares disturb me?" The shout came from the tent and was quickly followed by the sound of the tent's zipper. It caught on something and the Goat Man cursed with some skill. I looked behind me in time to see the kids fleeing down the street. I had time to think, Traitors, before the doughnut was jerked from my hand. I turned, and there he stood before me: bleary-eyed, unshaven, with a bit of a funky smell.

Great Uncle Leadbelly.

"What are you doing out here?" I exclaimed.

"I could very well ask you the same question."

"It's my town," I said. "I belong here. You belong back at the ranch."

"Yeah yeah yeah." The doughnut's powder was only slightly whiter than his whiskers. "Anyway, thanks for the doughnut."

With a bit of cajoling and a dash of whine, I got the story out of him. Feeling despondent about the results of the recent election and tired of theharassingg women at the Republican Retirement Ranch, he had grabbed a tent and washed up here at the edge of BARC. Only, he hadn't thought to get any food. He had already started thinking about packing up.

"That's it?" I said. "That's the whole mystery?"

"Yeah, that's all there is to it. No more exciting than the mystery at the core of that book, huh?"

"I guess not."

"You know, it's not the loss itself that galls me so much as how we've lost the way," he said.

"Borrow and spend instead of tax and spend?" I asked.

"Not that, no. The Communists. We've forgotten the Communists."

I patted his arm, helped him strike the tent, and got him on a bus away from Greenbelt as fast as possible. As I had hoped, the Brunette was home when I finally stumbled back.

"Are you okay?" she asked.

"Oh, sure, why?"

"Well, you've been gone for a while out in the cold with no coat on."

"Yeah, I --"

"And you left the back door unlocked."

You Heard it Here

I heard it on the Metro (woman on mobile phone):

...So I just did not like his work ethics. He doesn't think he has to do any work. They told me they couldn't fire him and so they sent me to this stupid seminar on communication.

Last Ride?

This was a beautiful day for a bike ride; odd for so late in the year and considering last week's frigid temperatures. I definitely broke a sweat even on my leisurely wanderings.

My trip took me through the heart of the Beltsville Agricultural Research Center. One of the charms of riding through BARC is passing roads with names like "Pesticide Road". Honestly, it is a nice ride because the traffic is relatively low and (at least in appearance) the place is awfully bucolic for a stone's-through from the Beltway.

Plus there are nice horsies! They'll come up to you and ask for apples. Here's a map of my 10.92 mile ride.

Banvard's Folly (Paul Collins)

"Don't touch the poppadoms," I tell Bertie as he joins me at table at Bombay Masala. I am a big fan of this Indian restaurant in Greenbelt, mostly because they serve half-size dishes. Not only is that rare in these days of American blimposity, but it gives me an opportunity for taste variety. A bonus when meeting Bertie: the dishes are generally too saucy to lend themselves to easy snatching. Bertie is a serious grabber; hence my poppadom warning. Which Bertie promptly ignores.

"Kinda empty in here," he remarks. I look around. The place is indeed somewhat lacking in customers. If we had a customers-vs-staff basketball challenge, we would be evenly matched. Take into account that Bertie is imaginary and suddenly I'm going to be easily double-teamed.

"I feel a little bad for the owner," I say after our garlic naan is dropped off.

"Which brings me to my latest entrepreneurial concept." He flourishes a book at me. "It came to me while reading this book."

"You're going to sell blue-colored glass to restaurant owners so that people can blask in the healing glow?"

"No," he says with a snort. "Of course not. That was a silly idea. Besides, there's a patent on that."

"Fat lot of good it did what's-his-name. I think he died in poverty."

"I didn't get my grand idea from that story," he syas. "In fact, I didn't get my idea from any of the stories. However, that book was an inspiration."

"An inspiration? Bertie, Banvard's Folly is a book about losers. There are thirteen stories of people who had - for the most part - skill or knowledge, but they just couldn't make it."

"But I know what they lacked," he says with complete and utter confidence.

"What's that?"

"Determination," he says with a Crystal Cathedral drawl. "And a business plan."

I mull this over while the waiter brings my spinach and my chickpeas. My mind turns to the poor woman who lost her mind trying to prove Shakespeare didn't write his plays. The book had some interesting characters, but I'm still having trouble with the inspiration part.

"I will admit," Bertie says, stymied by my saucy main dishes but still able to grab a wedge of naan, "that one of the stories gave me an inkling of an idea... the moon hoax."

"The one about combining religion and science?"

"Sure. They missed out on the perfect pairing, if you ask me. They were close, but they didn't hit the Reese's standard."

"And what are you going to combine with science?"

"Oh, not science -- religion." He takes a moment to work on looking pious. He can't quite make it. He winds up with a look that is a cross between someone suffering through a large blister with a hangdog pragmatism and the maniacal glee of a child discovering how to open the cabinets (which just happen to be filled with deliciously noisy pots and lids). I'm not sure it meets the Reese's standard, either.

"Don't hurt yourself," I say. "And what are you combining religion with?"

"Commerce!" he says proudly.

"That's it?" I exclaim. "That's what you've got? Dude, Pat and Oral already beat you there. Shoot, every relic-hawker since the third century has beaten you there. Religion and commerce!"

"Not a specific religion," he says. If he is hurt by my scorn, he doesn't show it. Heck, if he were ever hurt by my scorn, I'd eat a meal in peace. "The essence of religious mania! I want to make evangelists for restaurants."

"For restaurants."

"Some people who are willing to spread the word about their favorite restaurants."

"You want munching martyrs?"

"No, martyrs are no good to me. I just need people who are going to win their friends to the cause. Save the soul of our favorite businesses. Gather round the sheep in our favorite eateries. Look at this place. It is as empty as Capote's secret vault."

"I think you mean 'Capone's'," I say. "I like the atmosphere. You can always get a table; it's never too noisy. The food is wonderful."

"A pox on both your houses!" he exclaims. "Give some thought to the poor owner of this place. If you're the only customer, he can't be feeding his family. Worse, he won't be able to stay in business. He'll have to close his doors for good."

I give a little gasp. He goes on.

"Consider other restaurants you have loved. What happened to them? Vivaldi's? Gone. Planet X? Vaporized. Mandalay? Disappeared."

"Mandalay only moved to Silver Spring," I point out.

"Dead to you, anyway. If you don't do something, this precious resource will be lost forever."

"I get your point," I say as I pay the bill. "Though I think you're overselling the value of this place. I mean, it's good food and all, but still. On the other hand, I think you're still missing the same thing all those people in the book missed. It's great to have a good idea. But how are you going to make money from volunteer preachers?"

Bertie hesitates. "Like I said, 'a business plan.' All I need is a business plan."

"You have a business plan?" I ask.

"Well, no. Not yet. But that's step 2, I'm sure. Any minute now, poof! a business plan."

"Well," I say on the way out. "Bombay Masala was a nice restaurant while it lasted."

Kweisi Mfume for Whatever

So, we're going to vote in a little while. As always, the national stage is underwhelming. The only interesting thing I can say is that we are recommending folks write-in Kweisi Mfume for Prince Georges County Executive.

I don't think he wants the job, but I'm a bit sick of Johnson and PG always voting in the default. Seems like a good protest vote to me.

If it were up to me, I'd write in Barak Obama for any of the races where I didn't like either candidate, but he already has a job and he's not a Maryland resident. Therefore, I recommend writing in Kweisi Mfume for any of the races where you don't like either candidate.

Did I Mention Robert Jackson Today?

It's been a rough week on the stomach front. Missed a few days of work from this flu thing. Hard to think straight.

We came down into DC tonight to see our good friend Robert Jackson's exhibition at Zenith, but I had to walk up to sit down because of the wooziness. At any rate, Robert Jackson's paintings are a fabulous combination of the realistic and the fantastic. Personally, I liked Banished the best from this show. It reminded me of realistic photographs from the '30s. Not sure why.

Click on the link to Robert Jackson's web page a lot. Then, he'll wonder who linked to him so dang often.

Another Success

So, I noticed that there's this decorative clock embedded in a box that sits atop our refrigerator. The exciting thing is: Sunday morning found it to be the only clock in the house (computers/mobile phones aside) that was correct. What an amazing feat of engineering is this old-fashioned looking, AA battery-powered device. Does it have some embedded OS that keeps track of the date? Does it have some special connection to the Naval Observatory?

No, it has an owner that never changed it to "Spring forward."

This Song is Just Six Words Long

Have I mentioned lately that work is an overwhelming nightmare? Well, it is.

When you don't have time for a novel, why not read something very short. Wired has a bunch of SF writers provide very, very short stories. They're smaller than micro fiction. Here are my two favorites:

Machine. Unexpectedly, I’d invented a time
- Alan Moore

Longed for him. Got him. Shit.
- Margaret Atwood

The Prestige (Christopher Priest)

I'm standing at the bus stop across from Roosevelt Center. It's probably a bit more accurate to say that I'm pacing back and forth at the bus stop across from Roosevelt Center. The sun has not yet risen, so I'm bathed in the glow of lights from the Mobil gas station. There are two steps behind the bus shelter, so I can walk from the curb, through the shelter, up the steps, turn, then walk down the steps, through the shelter to the curb.

My pacing, which would be annoying were I not alone, is equal parts heat production and weight control. Toss in just the slightest dash of OCD for flavor. It's surprisingly chilly for mid-October in the Mid-Atlantic. Moisture has condensed on the sides of the shelter, so I walk from clarity to haze to clarity. The weight control portion of the recipe, of course, is related to my theory that fidgety people are skinnier. I've tried my best to develop these little physical tics -- pacing, tapping my pen, bouncing my foot, Mongolian throat singing -- to add to my weight loss regimen. A side benefit is that I get a lot more space to myself at the office.

I stumble on the step up from the shelter. When I turn and come back through, I notice that a woman has appeared -- as if by magic! She is sitting on the opposite end of the bench. She wears a heavy brown coat. I hate to say it, but she has the largest ears I've ever seen, and it doesn't help that she's so small. Her feet don't quite touch the ground.

She is reading The Prestige.

I stop my pacing. I've just finished that book, myself. I read it a few years ago, and I thought that with the movie coming out, I'd take another gander at it. She looks up.

"Sorry," I say. "Don't mean to stare. I just finished reading that book."

"Oh?" she says, without putting the book down. "What did you think?"

"I think," says the man behind me. He has appeared out of thin air and is sitting on the step. He's wearing sandals, shorts, and a bright orange flower-print shirt. The bright orange shirt is somewhat alarming because he is nearly as wide as he is tall. I am so distracted by his closthing that I do not notice how he makes his copy of the book appear in his left hand. "I think that Hazel here is reading that book only because the movie is coming out."

"And why are you reading it, Tubby?" she shoots back.

"Because I enjoy a nice yarn about magic acts," he responds. "These two guys from the turn of the century have an interesting rivalry going on. I think Priest does a good job messing with our perceptions as we switch point of view from magician number one to magician number two."

"I could have done without the modern-era junk at the beginning," I say.

"That's simple misdirection," Tubby replies.

"Why does it matter whether she's reading the book because of the movie or not?" I ask.

"It's a cheat," he responds. "It's like watching a magic show on TV. If they do it with cameras, what's the point?"

"But doing it with mirrors is different?" I ask.

"That's a little different. There's still some skill involved in the presentation. It takes a bit of talent to set up and execute."

"OK, Mr. Purist," Hazel interrupts. "This book turns to the supernatural to explain some of the magic. Is that not a cheat?"

"In what way is that a cheat?" he asks. "Did you not know that Christopher Priest wrote science fiction?"

"Did you not know that meow meow meow," she mocks him.

From here, the conversation descends into a shouting match of name calling, partly because these two never get along, but mostly because I can't figure out how to move forward. I've touched on the main points I had in mind and I'm not terribly interested in drilling deeper into them. It was a nice book, but light. I briefly consider switching point of view for this story, but it's not really my style. The important thing is to get them to stop fighting. I squint up my eyes and clutch my fists. I figure if I could make these people appear, then I should be able to make them disappear.

Unfortunately, magic is never as easy as it looks.

The two do stop arguing, however. When I open my eyes, they are staring at me.

"Dude, you can breathe, you know," says the guy in the large orange shirt. I guess I've turned red from holding my breath.

"OK. Look," I say after a gasp. "I don't think that her reading the book just because of the movie's coming out is a cheat. Reading is reading. How many people will see the movie without even realizing that there is a book?"

"I hardly think that matters," hisses Tubby. "It's a sad thing to see the pure and straightforward love of books for their own sake dieing away in these end times. I suppose next you'll tell me it's okay to buy records you hear on the radio."

"Furthermore," I continue. "I'm not convinced that the fantastical elements are a cheat. The interestingly creepy ending is appropriate for our proximity to Halloween. At the end of the day, it was a good, though not great, yarn. You just have to decide where your suspension of belief begins and ends. Isn't that what a magic show is all about?"

I turn away from them because the bus has arrived. The bus driver looks over my shoulder as I touch my card to the reader.

"Weren't there other people at the stop just now?" he asks.

"It's just a cheat," I say as I stumble back to a seat. "They were only ever in my head."


A Weekend Report

Here is the result of this weekend. After a Saturday spent at the Renaissance Festival, I got seven hours of painting in. I call this "Software". Can you tell me why?

During this productive painting session, I listened to all five episodes of Radio Lab, based on a recommendation from Squuby. I think that if you're an Oliver Sacks freak, this is the kind of show that will appeal to you.


Well, I must have had a tailwind last night. I wasn't trying particularly hard.

Last year, I rode well into November, but this year we have three releases between now and Thanksgiving. I'm envisioning a lot of late nights. I don't trust drivers enough to ride in the dark.

Free At Last In Paradise (Ananda W. P. Guruge)

"What are you doing?" the Brunette asked. She had found me in the kitchen, where I had carefully queued the dishes on the counter. There were enough dishes that I had to cross the stove, too. It was a little like Hands Across America, only with dishes. And only across the kitchen.

"I'm applying iterative development processes to dishwashing."


I joined her in the living room a few moments later.

"Done already?"

"Well," I said and picked up my book. "Wow, this book is heavy."

"So that iterative process is pretty fast," she said.

"The iterations are small," I explained. "So they can result in measurable, uh, results quickly enough to direct the remaining effort."

"Hmm. Didn't look small. You had a lot of dishes lined up in there."

"I lined them up to determine which of the dishes would be the most architecturally significant."


"Well," I admitted. "None of the dishes is really architecturally significant, so I went back to the basic philosophy of the iterative method: Each 'iteration' should be designed to 'buy down' risk. If you attack your risks early, then your project is more likely to be successful. I chose the riskiest dishes and did them first. For example, by washing a glass, I determined how to do it without breakage. I now know how long it will take to do most of the dishes -- or I can estimate with some level of confidence, anyway."

"What's that book you're reading?" she asked when I paused. I knew if I blathered on about development processes she would turn to the book eventually.

"It's Free At Last In Paradise," I said. "It's an epic story of a man's life paralleling the hundred years leading up to Sri Lanka's independence. It's very long, but I've learned a lot."


"Oh, erm. Like I always thought that Ceylons were those evil androids on Battlestar Galactica, but it turns out they're more complicated than that."

"And did you learn anything that isn't culturally offensive?"

"I wasn't aware, before I read the book, of how large a role Theosophists played in the country's evolution. There's a lot more political maneuvering in Buddhist circles than I realized. Also, the main character is much more tolerant of the British authorities and evangelists than I would have expected."

"The author was a diplomat," she pointed out.

"True," I said. "He must have had some time on his hands, though. This is one long book."

"Yes, you've commented on the book's heft already."

"That's because it's a long book," I said defensively.

"It does cover a century," she said. "Have you had enough of a break from dishwashing?"

"It's not a break," I sniffed haughtily. "I'm conducting a phase review. Now that I've explored all of the risky use cases, I can exit --"

"One use case? The glass you mean?"

"Sure. So I'm cogitating on how to schedule construction since elaboration is done. See --"

"I think you have another iteration before you can exit elab," the Brunette said.

"Oh. I-- Why?"

"There's that casserole dish."

"The one all encrusted and sticky? I don't think it's terribly risky. Can't imagine breaking that."

"You're going to have to soak it, you know."

"Sure, I guess."

"Well, there you go," she said. "Schedule risk."

Our Cat Ate the Neighbor's Dog

A Neighborhood Report

Well, Tubby didn't really eat Hazel. They were a bit standoffish at first, but they seem to be tolerating each other. Hazel settled down for a nice nap and Tubby stared out the window. Finally, we were able to coax Tubby over with the magic fingers of petting.

What Did Taleswapper Forget Today?

His badge.

Hmm. This used to be a regular feature of my blog, but in the recent past not so much. I hope it's not the darkness coming along to get me.

As a side note, be on the lookout for my new book: Deployment Driven Design, or Why Do The Testers Get All the Fun?


This is one of those posts in which I meander around without any real point. But I wanted people to have something short to look at after those two really really long posts.

Of course, if I meander too much, then I won't be short, will I?

I'm finding that I don't want to say anything that even is a little witty, because maybe I can use that witticism in some future book tale or restaurant tale. So, the funny part of that is thinking anything I say is witty. That's not really true, though, I say witty things all the time.

They're just never the things that I think are going to be witty.

Maybe I'll just give you a link or two:

  • An audio link to an interesting story. Is it true? Is it fiction?
  • A regular link to a blog entry on how wonderful it is to work at Google
  • A video link to Ask a Ninja.

Whose Body? (Dorothy Sayers)

"I guess you might as well join us, too," Keith said to me after jabbering with the developers. "We'll be in the war room."

It's cute how Keith likes to encourage my little detective hobby without actually mentioning it. I gathered my paraphernalia and headed upstairs. The war room is a large conference room on the fourth floor. It has a big table, a whiteboard, and some network drops. I've tried to convince them to call it the "peace & justice room," but ever since the incident with the binder clips, "war room" just stuck.

The usual suspects were arranged artistically around the room. The Admiral had found a berth at the end of the table. His gravity pulled most of the others to that side of the room. Rocky, however, avoided the pull and set up closer to the other end of the table. I chose that end to help balance the look of the room. Rocky slid a little closer to the Admiral. You can ignore gravity, but you can't really deny it.

"So, we're having a small problem in prod," Keith said with his usual flair for understatement. In reality, I imagined that the "small problem" was leading to major loss of life in significant portions of the country. Without a quick and nimble response from yours truly, the company, the Agency and -- perhaps -- the entire world could be in jeopardy. I missed most of what Keith told us but he seemed to think that something called "servers" and "database" were at the heart of the matter. He had found a drop and connected his laptop. "It's still down," he reported.

"It's not," said Rocky. "Is it?" He grabbed the other drop and plugged in. "That's right. It's down." His fingers did that tappity thing on his laptop for the rest of the meeting. It really got on my nerves.

Stan and the Admiral looked at each other. Apparently, only two of the network drops worked. I, of course, had brought more important things and left my laptop on the ole desk. Keith asked some pointless question about the last time the software changed.

"Who would know something like that?" I asked.

"You are the CM," he said. "I'd expect you to track that."

"Quite," I said. "Shouldn't we check the room for evidence?"

"Oh, there's evidence all right," Stan insinuated. He wiggled his eyebrows and laughed.

"Interesting," Keith exclaimed, after a moment. "The system is back up."

"The database looks fine," noted the Admiral. "I don't see any unusual problems."

"We'll want to retrace the perpetrator's steps," I said. "Put ourselves in the mind of the bad guy."

"Ew," said Stan. "That sounds like no fun at all."

"I can't access -- " Rocky started. He furrowed his brow. "I've lost my conne-- Hey! You didn't take my cable, did you? You did!" This last bit was directed at the Admiral, who allowed his attention to slowly drift from his laptop screen to Rocky's red face.

"I needed to check the database. You can have it back."

Rocky grumbled, but took the proffered cable and attached his laptop to the network. "I'm going to take a look at the logs."

"Shouldn't we get some food?" I asked. "Lord Peter Wimsey always seems to want a bit to eat before he --"

"System's down again," Keith announced.

"It's not," piped Rocky. "Is it? It is!"

"Good!" I said. "In Whose Body?     Lord Peter had two mysteries to work on. He said it made the whole thing easier because when he was bored with one, the other was right there ready to be worked."

"I'm ready to be worked," Stan commented.

"Let's focus, people," Keith interrupted. "Let's go over the facts as we know them."

"Great idea," I said. "In mysteries, the detectives always repeat the facts to get their minds around the problem. And usually, the answer is staring right at them."

"Item number one," said the Admiral. "The database is still up and available."

"OK," started Keith. "Now --"

"Oi!" Rocky suddenly shouted. "You didn't take my cable again, did you? You did!"

"Item number two," Stan interrupted. "The system is up." We all gathered around Keith's laptop to look. It certainly seemed to be working.

"Hmm," Keith scratched his head. "Working or not, we must do a post-mortem to find out why."

"Perfect is the enemy of the good," Stan put in.


"Nothing. It's just that we've been in this meeting room for a while and nobody had said it yet, so I thought --"

Keith turned to the whiteboard. He stared hard at it for a moment. Then he turned back to us. He pointed at S. and the A. "I need you and you. We're going to get some markers."

While they were out of the room, Rocky retrieved his network cable from the Admiral's machine. Meanwhile, I took out my trusty super-magnifying monocle and examined the portmanteau in the corner. Granted, I didn't really have a super-magnifying monocle, but then again, we didn't have a portmanteau in the corner. I had to make do by examining the trash can with a flyswatter and a pickle jar. Things were easier back in Lord Peter's day. Back then, you could walk around with a walking stick marked in inches with a compass on top. These days, if you did that, Stan would beat you up. So I got by using a felt tip pen on my forearm.

"System's broke again," I said out loud. I was using my arm to measure Keith's screen. It went from that funny lookin' bone on the bottom of my wrist almost to my elbow. Too many lines on my arm to count. Besides, I'd written the lines on the wrong side of my arm, so I was all contorted around the screen and table, but I was able to see that the site was down when I bumped refresh.

"It is," Rocky confirmed. "WTF?"

He actually said it that way, by the way. My characters don't tend to use profanity unless the situation really demands it, so he just said the letters W, T and F. It's kind of strange to hear all these people in my head saying phrases like WTF, SOB, and KTR as if they were IBM.

Stan, Keith and the Admiral returned to the room. Keith and Stan were arguing about whiteboard markers. Keith seemed to be of the opinion that if pink was the only color available, then we'd just have to use it. Stan's response was that pink was too light to see; besides, pink wasn't very manly. Keith asserted that manliness wasn't the issue.

"Maybe not for you," Stan replied. I tried to keep tempers from flaring by pointing out that the system was down again.

"The database is still fine," said the Admiral from behind his laptop. Rocky was flailing his arms in the air and jumping up and down. "Hasn't been a thing wrong with the database any time I've checked."

"That's interesting," Keith said.

"People. People," Rocky interrupted. He stomped over to the Admiral and stared him in the eye. He shot his right hand out and yanked the network cable free. "Is the system up?"

"Um." Keith pecked a few keys. "No."

Rocky plugged the Admiral back in. "And now?"

"Ah. Yes." We all looked at the Admiral. Rocky unplugged. "Down again."

"It seemed most convenient if I could always have it with me," the Admiral said. He looked around uncertainly. There was a lot of anger in that room.

"I say," I said to the Admiral, trying to stand between him and the rest of the crew. I looked him in the eye. "The better part of valour and all that, don't you think? You might want to skedaddle."

"Well, I mean," the Admiral prevaricated, but he did drift toward the door.

"Is the production database actually on your laptop?" Keith asked.

"Well, I, ah."

"Get him!" Stan shouted, but the Admiral was already out the door with engines at full steam. The others were in pursuit, but I leaned back and smiled.

Another case closed.


Well, that's out of my system. No more geeky stuff for a little while, I promise.

ClearQuest SOA: Part V/The Consumer

This is part 5 in a series about ClearQuest and SOA. If you're not a CQ geek, you'll want to skip this. If you're interested in playing along, go over to that first article and get set up.

In past conversations, we created a producer. It's sitting out there waiting for somebody to come along and ask it to produce something. The something it can produce are ClearQuest query results. This time, we'll create two consumers. To show the range of possibilities, we'll create one using Perl and one using an Ant task, written in java.

We're using RPC calls, so the important thing to start with is: we're looking to run the method called query.run. We'll feed it the name of a query. It will respond to us with a structured set of hashes. Since the communication between our producer and any particular consumer is via XML, it doesn't matter what language we use to write the consumer. So, since we wrote the producer in Perl, let's write a quick test script in Perl.

In the tests directory, create a file called consumertest.pl and edit it. We want to see if we can connect to the URL, pass it a method and parameter, and absorb results. My script looks like this:

# Use the frontier client to help us create and talk to the XML
# from RPC calls
use Frontier::Client;
# we need to know what URL to talk to
my $url = "http://localhost/cgi-bin/cqws.pl";
# Create a new client (attachment to the producer)
my $client = Frontier::Client->new(
url => $url,
debug => 1,
); # the debug will show the xml that's moving around!
# decide which query to run (and name the method we're calling)
my $name = "Public Queries/All Defects";
my $method = "query.run";
print "Testing with " . $name . "\n";
# -- this line is slightly different than our last test
my $queryResult = $client->call($method,$name);

# everything else is the same as our last test
foreach ( @$queryResult )
my $record = $_;
foreach ( sort keys %$record)
print "\tcolumn: $_ \tvalue: " . $record->{$_} . "\n";
print "\n";
Now, you run this script by typing perl consumertest.pl, and it's going to go to your producer via http to get the information it needs. There will be a lot of verbose output because we have debug set to 1, so the first thing you should see is:

Testing with Public Queries/All Defects
---- request ----
<?xml version="1.0"?>
<param><value><string>Public Queries/All Defects</string></value></param>
This represents the request. It might pause a moment while waiting for the producer's response. When it comes, it'll look like:

---- response ----
<?xml version="1.0"?>
<member><name>Headline</name><value><string>Test Ant Task</string></value></member>
Only more so, I suppose. This is the XML that's being returned by the system. Don't worry about that XML, though. It's only showing because we have debug turned on. What we really care about is that the Frontier client will hear that XML and turn it into a reference to an array of hashes that we can iterate over and print out. The valuable output is the final bit that looks like this:
column: Contact value:
column: Headline value: Test Ant Task
column: State value: Submitted
column: dbid value: 33555483
column: id value: SAMPL00001051
Well, that's just grand there, bucko, you're saying to yourself. So, we can have a perl script call another perl script. Big deal. Ok. The exciting part (if you have a low excitement threshold) is that a) we could repeat this now with the producer on one machine and the consumer on another (the only necessary change would be the URL in the consumer) and 2) we can instead make the consumer in some other language, like Java. Our next step, in fact, is to create ourselves an ant task that will run some query.

We're going to need some special stuff now. I want you to make a directory called antstuff. In the antstuff directory, create subdirectories called classes, lib, and src. Go out onto the web and find these jars:

Drop those jars into the antstuff\lib directory. We need them to create ant tasks.

Great. Now, we'll want to create a build file with a target for building our task and one for using the task to run a query. We'll need to create an ant task with Java. Create a file called CQQuery.java in the antstuff\src directory. Edit it to look like this:

// these are classes we use for any ant task
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
// these are classes we need to take care of the RPC communication
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
// we'll need util just because
import java.util.*;

// every ant task starts off like this:
public class CQQuery extends Task {
String sURL; // the url we'll go to
String sMethod; // the name of the method we'll call
String sParameter; // the value that will be passed in
// the method call. For us it'll be the name of a query
// but maybe we'll want some other parameter for some other
// method.

// these setters all relate to things
// you'll pass in from the build.xml
// Notice how the name relates to the parameter in the
// build.xml file
public void setURL(String u) {
  sURL = u;

public void setMethod(String m) {
  sMethod = m;

public void setParameter(String p) {
&nbps; sParameter = p;

// this is where we do the deed
public void execute() {
// verify there is a producer provided
// (otherwise fail the "build")
if ( sURL==null ) {
throw new BuildException("ERROR: need URL");
// need to know what method to call
if ( sMethod==null ) {
throw new BuildException("ERROR: need name of method");
// let's provide a little feedback to the user
log("Calling " + sURL + " to execute " + sMethod);
log("The parameter is: " + sParameter);

Object[] paramSet = new Object[] {sParameter};

// try to connect and ask to run our method
try {
XmlRpcClientConfigImpl rpcConfig = new XmlRpcClientConfigImpl();
rpcConfig.setServerURL(new java.net.URL(sURL));

XmlRpcClient rpcClient = new XmlRpcClient();
// assume the result is always an ARRAY of HASHes
Object[] resultSet = (Object[]) rpcClient.execute(sMethod,paramSet);
for ( int i = 0; i < resultSet.length; i++) {
// add some error checking later
HashMap hResultSet = (HashMap) resultSet[i];
Set myKeys = hResultSet.keySet();
for ( Iterator it = myKeys.iterator(); it.hasNext();) {
Object k = it.next();
Object rs = hResultSet.get(k);
log(" " + k.toString() + ":" + rs.toString());
} catch (Exception ex) {
System.err.println("Error @ XmlRPcClient: " + ex.getMessage());
When we compile that, we'll have a little jar with an ant task in it that we can call in an ant target. Save this in a build.xml file and you'll be able to compile the jar and also run a query against CQ across the magical internet.

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="CQTasks" basedir="." default="jar">
<!-- properties for the compile -->
<property name="src.dir" value="${basedir}/src"/>
<property name="classes.dir" value="${basedir}/classes"/>
<property name="lib.dir" value="${basedir}/lib"/>

<target name="clean" description="Delete all generated files">
  <delete dir="${classes.dir}" failonerror="false"/>
  <delete file="${ant.project.name}.jar"/>

<target name="compile" description="Compiles the Task">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}">
<pathelement location="${lib.dir}/xmlrpc-client-3.0rc1.jar"/>
<pathelement location="${lib.dir}/xmlrpc-common-3.0rc1.jar"/>

<target name="jar" description="JARs the Task" depends="compile">
<jar destfile="${ant.project.name}.jar">
<fileset dir="${classes.dir}"/>
<fileset dir="${lib.dir}"/>

<target name="test_query" description="Use the task to do things" depends="jar">
<taskdef name="cqquery" classname="CQQuery">
<pathelement location="${ant.project.name}.jar"/>
<pathelement location="${lib.dir}/xmlrpc-client-3.0rc1.jar"/>
<pathelement location="${lib.dir}/xmlrpc-common-3.0rc1.jar"/>
<pathelement location="${lib.dir}/ws-commons-util-1.0.1.jar"/>
<pathelement location="${lib.dir}/ws-commons-java5-1.0.1.jar"/>
<cqquery url="http://localhost/cgi-bin/cqws.pl" method="query.run" parameter="Public Queries/All Defects"/>


There ya go! From the command line, run ant jar to make sure the code we wrote compiles. Or run ant test_query to get the thing to run against your producer. My output from this run is:

Buildfile: build.xml



  [cqquery] Calling http://localhost/cgi-bin/cqws.pl to execute query.run
  [cqquery] The parameter is: Public Queries/All Defects
  [cqquery]  State:Submitted
  [cqquery]  Contact:
  [cqquery]  Headline:Test Ant Task
  [cqquery]  dbid:33555483
  [cqquery]  id:SAMPL00001051
So, we are done. We installed ClearQuest and a web server, then we made a set of perl scripts to run a named ClearQuest query. We also wrote a little perl script that accepts the requests via XML (using RPC). Finally, we wrote some clients in perl and in Java to make the requests and get the responses. This last client can run from anywhere we can run Java! No install of CQ necessary on the client side.

I'll leave it to you to do all the other things that ought to be done to make this useful, like error trapping, changing into real, useful perl modules, fixing up that classpath loading, passing user credentials and making even more generic.

All the parts in this series:

How the Other Half Lives

If only it really were half & half

This doesn't have a subheading of "tale," so it is absolutely true, at least as far as my memory serves me.

Sometimes the world reminds us that living in our little community is different from living in other little communities.

On Sunday morning, the Brunette volunteered to help the run in Rock Creek Park that generated aid for women in Congo. I dropped her off and wandered over to the nearest Starbucks to surf the web do some work. The nearest Starbuck was just south of Chevy Chase Circle, one of the nicest areas of the District. Lots of hoity toities there.

After I exhausted my battery, I walked around a bit. There's a large fountain in the Chevy Chase Circle, built in the '30s. Far as I could tell, there was no legal way to walk over to the fountain, since it was in the center of the circle. But since there were benches arrayed around it, I thought it worth the legal risk to wander across and read for a bit.

Eventually, the drizzle was too much for me to risk a book to. But it was fine for walking, so I wandered around the neighborhood gaping at the big ole houses and finely manicured lawns. I stopped by their Safeway before driving back to the park. The cashier had some candy bars for sale supporting one of those be-ribboned causes. I believe it was breast cancer. At any rate, the cashier asked the gentleman in front of me if he'd like to buy a bar.

"No," he said emphatically. "I don't believe in charity. This is a dog-eat-dog world. People need to learn to look out for themselves."

I'm sure that cancer victims would be thrilled to hear they just need to pull up their own dang bootstraps. The cashier nodded slowly and finished his transaction. She asked him if he needed any help carrying his bags to his car. I waited poised to jump in with a comment, but he said, "No."

"Better not have," I said to the cashier. "That would have been charity."

Bikers Welcome

I rode my bike up to the Whole Foods in Silver Spring the other day. It was my lunch break and I thought it'd be a quick jaunt. When I got there, I discovered that the bike parking was serving not only as a place to rest the signs of local businesses, but as an anchor to lock them to, as well.

Which meant, of course, that only one of the spots was useful. Way to be bike-friendly Silver Spring!

Luce Women

Well, Cat's Eye horrified me with its depiction of the evil machinations of teenage girls and how they torture each other. We dropped by a revival of Clare Boothe Luce's The Women last night. Clare Boothe Luce eventually became an ultra-conservative Republican politician and diplomat who was held up as a strong opponent of FDR's plans. Perhaps this explains the misogynistic feel to her play. It is populated by grown up versions of Atwood's evil girls. This performance at the Greenbelt Arts Center was full of conniving women and sadly empty relationships.

It was also quite funny.

I suppose it might be insulting to say that Claire Williams was born to play Sylvia? She wakes up the rest of the cast and forcibly drags them through the action. She was an unsinkable Molly Brown, but with claws. I think she did a great job of pushing Sylvia to the edge of caricature. If she had reined it in even the slightest bit, we would have come away more disillusioned and angry; instead, we can laugh off the hurt in this play like we might laugh off the cartoonish violence of Wile E. Coyote.

Mostly, anyway.

Lori Libes also helped balance the hatred with her portrayal of Peggy. Peggy's reserve was the opposite of Sylvia's mania. Her expressive face reflected the turbulence of this little world created by the splashing around of the more externalized characters. Poor Peggy was buffeted and bruised by these backstabbing women, though she was not their main target. Everybody gets hurt by hurtful society, I guess.

Speaking of hatred, I have to say I hated the stage. At first, the complicated turn-table fascinated that gadget-fixated part of my brain. But eventually, it became a distraction. It was frustrating to see this Rube Goldberg contraption absorbing so much time in set up and scene modification. One would have thought that the only point of such a device would be to ease scene transition, but it seemed to require six helpers at several points in the play to move things on and off the great wheel. I'm particularly thinking of the scene changes required to set up the shopping scene in the first act.

But that's a minor quibble. Consider this thing a period piece and you'll enjoy the catty humor a lot, I think. And perhaps it'll also give you pause in thinking about "women's inhumanity toward woman."

You Have Answers? We Have Questions!

OK. I'm putting these here in case somebody comes along and can help. Or in case I figure out the answer and can put it here. Or in case I run out of the building screaming and flailing my arms: you'll know why.

ClearQuest Web 7.0
So, we've upgraded our little ClearQuest installation from 2003.06.15 to 7.0. It was exciting and fun and all that. So far, the only real differences I've noticed are:
  • The program icons have changed (but not the client interfaces otherwise)
  • The web server now asks for the database on the login page (like it used to a long time ago, but then didn't any more last year)
  • It demands you upgrade your Access .mdbs to a newer version of Access
We operate in a reverse proxy mode, with our web server being real Apache (not IBM's stripped down thing) funneling requests back to the Rational Web Platform running on a different port. We do this so we can have other apps running on the same web server as our ClearQuest. Ever since the upgrade, the ClearQuest Web has been "forgetting" its list of SchemaRepositories every few hours. All you have to do is go in and restart the CQ Registry Service and they reappear (we're on Windows), but a few hours will pass and the login page will once again have an empty list for SchemaRepositories (and databases, for that matter).

My workaround has been to create a scheduled task to restart the CQ Registry service every four hours. Ah, I love Windows.

CruiseControl, Subversion and Java 1.5
We're switching our application over to WebLogic 9.2, which will require us to move to Java 1.5. However, I still need to build in both 1.4 and 1.5. I haven't quite been able to get CruiseControl to build 1.5, yet, because its modificationset task dies with:
[cc]Sep-21 12:51:25 SVN - Error executing svn log command svn log --no n-interactive --xml -v -r {2006-09-21T16:35:04Z}:{2006-09-21T16:51:25Z} http://s ubversion.server/my_repository/branches/my_branch
java.io.IOException: The handle is invalid
at java.io.FileInputStream.close0(Native Method)
at java.io.FileInputStream.close(FileInputStream.java:245)
at net.sourceforge.cruisecontrol.sourcecontrols.SVN.execHistoryCommand(S VN.java:255)


I love my weekly statcounter reports (though they came a few days late this week). The keyword activity tells me what people are searching for (all twelve of them) when they find me through a search engine. They're looking for:

  • how is qualxserve Yeah, this one's recent because of my fun with Dell. The second guy was great: he called to keep me updated as his schedule changed through the morning, he actually showed up, and he fixed my laptop. But the company itself has to faulted: they are over-scheduling their tech reps, they do not handle non-stationary customers very well (don't get into the wrong territory!), and they do not have an escalation process
  • clearquest get count reference list This one pops up a lot, but I'm sure I've never addressed getting a count from a reference list. Is that really all you're looking for? You want to know how to count how many items are in a reference list? Or is it something else? Do you want it in Perl or VB?
  • dog puns Lots of these all of a sudden. I think I titled one of my posts "No Dog Puns" or something. Which ought to be self-explanatory: we don't have any dog puns on this site, so there's no need to "terrier" here any longer.
  • molten sulfer Oh, yeah, this blog is a hot-bed of molten sulfer information, let me tell you. I think I mentioned molten sulfer once, because I can watch trains carrying it go by in my window at work. But it was actually DC Cube who pointed us to what it might be.
  • don't ha ha ha paddy clarke I get a lot of searches that look like book report trolls to me. Not a lot this week, though. I don't get the "don't" on the front of this search. I wonder if the title overseas had "don't" in it.

A Walk in the Woods (Bill Bryson)

"I think we were somewhere in Ohio when I decided to kill you," the Brunette told me.


"Was it Findlay? Upper Sandusky?" She looked at the ceiling fan as if it might remember.

"You decided to kill me in Upper Sandusky, Ohio?" I asked.

"No," she said after pondering for a moment. "It was definitely before we got to Upper Sandusky."

I had been waxing poetic about Bill Bryson's book, A Walk in the Woods, when she sprung (sprang?) this planning for my demise thing on me. I liked Bryson's easy style and his humorous descriptions of various hikes along the Appalachian Trail. I related several of the funny anecdotes to my partner. It's possible I described the town in Pennsylvania that is perpetually on fire. I might have mentioned Bryson's fear of bears. It is conceivable that I suggested that it might be fun -- maybe -- if we tried the hike ourselves. A little walk to help cement the ties of our marriage.

"The AT is over two thousand miles long," she pointed out. I've tried to explain to her that this unusual attachment to putting "value" on "facts" like these is going to hold her back in life. She generally responds with some unrelated comment about "maps", "inability to read", and "two months forever wiped away, never to be recovered."

"I think it was when we rolled into McKeesport (near Pittsburgh) that I decided to never talk to you again," she continued. "But then I thought that might make it hard to keep close enough to kill you." I was beginning to think she might not be whole-heartedly behind the couple-conquering-the-wilderness concept.

"He never actually saw a bear," I pointed out. "At least, he wasn't sure if he ever did."

"Bears are not the issue," she said.

"Not that many people actually died on the trail."

"Did Bryson's wife go along?" she asked, significantly.

"Well, no. He went with his overweight friend. He was the funniest part." I told the story of his friend throwing away half their food because it was too heavy. She gave me a look I hadn't seen since we tried to bike across the country."There was Wisconsin, you know."

The ride up the Potomac from Washington to Pittsburgh was pretty much as we had expected, but it rained for most of the journey across Ohio. There were grumpy people in Indiana and Illinois, and Minnesota was hillier than expected. But Wisconsin is a touring cyclist's paradise. We were able to spend hundreds of miles on trails, the people were friendly, and the Brunette got to compete in a pottery tournament. In fact, when we got to Minneapolis, instead of going forward, we decided to bike back into Wisconsin and along the shores of Lake Superior.

She nodded. "Not a single mile of the Appalachian Trail is going to be like Wisconsin. Remember that even on a bicylce, we didn't get 2000 miles. You think you can walk it?"

"1500 miles is nothing to sneeze at," I said defensively. "Besides, think of the wonderful views."

"And where will those views be?"

That one had me stumped. I was pretty sure that 'on the AT' was too obvious to be the answer for which she searched. This is one of those things you learn by living with someone else: usually when people ask you a question, they're not interested in the obvious answer. They could have figured that out on their own. It's not like school, where you could pretty much guess the answer the teacher wanted just by how she phrased the question.

"And do polite people hit their neighbors with spitwads, Billy Blake?" the teacher might ask.

"No, Mrs. Throgmorton," is the answer you know she's looking for, no matter what you think of the politeness due to certain cretin neighbors who had been kicking you in the shin all day long.

It's just not the same in the real world.

"You're stalling," she said, interrupting my train of thought. "What was the most important thing we learned on our trip?"

"Padded bicycle shorts are supposed to be worn without underwear."

"OK," she said. "The second most important thing?"

"Oh, that's easy. Avoid roads that have Hilltop, Valley, and Crest in their names."

"And Mountain View," she added.

"So, why did we move to Ridge Road?" I asked.

"I think you see my point," she said.

"You have to admit, though, you never did kill me," I said.

"I think the third most important thing we learned on that very, very long trip was patience."

Maybe a hike in an isolated patch of wilderness, with no witnesses to speak of and a few too many handy cliffs, is not the best plan after all.

Talk Like a Pirate Day

I'm not much of one for bandwagons, but even the Metro is doing it. ARR Arr.

Computer Woes

A Dell Update

Well, the guy called to let me know he'd be late, but he was only 5 minutes late, and he was good enough to have called me twice. You have to give him credit for that.

And now my computer is working again, so tomorrow I can go back to whinging about something else.

A Time Line

A Dell Report

OK, just to keep everyone on track with my computer woes and to vent my anger a bit, here's a time line.


  • Early Afternoon -- Laptop starts blue screening. Not excited.
  • Mid Afternoon -- Call Dell support (our company has a next-day service contract -- Whicker Support or something). Speak with Neil. Neil is friendly, like all Canadians should be. Neil walks me through some checks to verify it is hardware related.
  • Late Afternoon -- I cut my thumb while removing parts of the laptop under Neil's direction. Neil lets me know that blood on the motherboard will not void my warranty because I did it under his direction.
  • COB -- I leave a diagnostic program running after having moved to an older saved software configuration. I let it run for hours and go home
  • 8:30am -- Neil calls back (on time!) to see how the diagnostics went. Unfortunately, the diagnostics didn't find anything, so we agree it must be a hardware issue. Grand. Neil puts in a ticket to send a part to Maryland and I wait for Dell's service contractor to contact me for an appointment.
  • 12pm -- A representative from QualXserve (or something) calls to tell me that someone will call by noon on Thursday to schedule the appointment. Great, I say, I'll work from Greenbelt tomorrow!
  • 1pm -- Nobody has called. I call QualXserve and ask when I might expect someone to schedule arrival today. The call center person apologized. The system shows that the part arrived at 8:30. The call center person will page the tech service rep and I should hear in an hour.
  • 3pm -- Nobody has called. I call QualXserve again. They are very sorry, but will try to get somebody higher up to call me. I mention that the day is getting awfully short. Oh, it'll be within the hour, she says.
  • 4:30pm -- Nobody has called. I call QualXserve again. They are very sorry. They want to try paging again. I wonder how somebody who hasn't scheduled an appointment might possibly be able to schedule, appear and fix my computer before the business day ends in thirty minutes. Perhaps QualXserve has an escalation procedure? Oh, the escalation procedure is to page someone. Perhaps, there is an escalation procedure within the call center? Oh, nobody else seems to be here. So my only escalation option is to go back to Dell?
  • 4:45 -- I fire off an angry email to my new best friend Neil, who eventually responds with an apology.
  • 5:30 -- The tech rep calls! Can he come by tonight? I'm sorry, I'm not sitting around here waiting for a tech rep who may or may not show up; I have to pick up my wife and go get dinner and lord knows what else. He suggests that we might (I am not making this up!) "settle this like adults." I don't know if he means with swords at thirty paces or with an extra cash incentive; either way, I don't like it. I explain that I will not be available tonight. Pehaps he can fix my computer tomorrow. Ah, but tomorrow I'll be in Silver Spring. The tech rep cannot go to Silver Spring. But it's exactly 9.1 miles from where I'm standing now, I exclaim. Not his problem. Perhaps he can give the part to someone who can come to Silver Spring? He'll have to call his boss. Perhaps I would like to have this fixed on Saturday? He can come to my house on Saturday. No, I would like my computer fixed tomorrow. Very sorry, he cannot help me.
  • 2pm -- The QualXserve guy calls. Wants to know if he can come and fix my computer in Greenbelt. I'm not sure if it's the same guy or not, so I do not say: "What part of the conversation did you not understand yesterday?" No, I explain that I am in Silver Spring today. Can he come to Silver Spring? No, he cannot come to Silver Spring. Perhaps there is somebody who is allowed to venture into Silver Spring? He doesn't know. When might I be in Greenbelt again? I tell him that I will never be in Greenbelt again as far as he is concerned. I made a lot of changes in my schedule to spend my day in Greenbelt and nobody showed up. I have customers to support, too. I need to be able to plan my days. He is sorry that he cannot help me.
  • 4:20pm -- A woman from QualXserve calls. She has me on her schedule as needing help in Greenbelt. I explain to her that I needed help in Greenbelt yesterday. Today, I need help in Silver Spring, perhaps she could have someone in Silver Spring fix my computer? Well, the guy who is scheduled to fix my computer isn't allowed to go to Silver Spring. I refrain from asking if there are border guards at the city limits. She will try to reschedule me with a tech rep from Rockville. Hopefully, Rockville and Silver Spring are both still honoring the ceasefire agreement.
  • 4:45 -- The woman from QualXserve wants to know what address in Silver Spring. Darn! I forgot that West Silver Spring and North Silver Spring are still staring at each other with angry eyes over the DMZ.
  • 4:55 -- The woman from Quallex calls to give me a new dispatch number. I should hear by noon on Monday when somebody might be able to heal my computer. She wants me to have a nice afternoon.
So, right now, I continue to be sans nice computer. I am working on the ratty backup laptop.