I discovered that I am really quite serious about my displeasure with the current state of my writing. When Saturday started to near an end I just couldn’t bring myself to write another lame paragraph about how I spent the whole day typing in my pajamas, then ate food and went to bed.

The daily update schedule is its own reward, generally, but after 11 months of forcing myself to spit out some nonsense just to have some text on the page, I think it’s past time that I figured out a way to have something more interesting to say. So there’ll be a brief hiatus while I get that sorted out. I hope some of you are here when I return, but really, this is all about me.

(Anatole points out that blogger is a lying sack, or was at least mildly untruthful, and that the link below was broken. The right one is apparently this, but that doesn’t render because of a MIME-type problem. Top Men are working on it. I’ll update the original link when that gets resolved.)

life during wartime

Orin Kerr thinks that people are making too big a deal of the fact that this war is being watched in what’s basically real-time. I agree that it’s a little unsettling, but I think that’s good: just as with capital punishment, I think that the public’s visibility into a war conducted on their behalf is very important. I’m sure there are a lot of people 8 time zones from me that would love to be bored of the war, too. (Yeah, I know Canada’s not in the war right now.)

I moved the two new links into the traffic analysis section, because that’s where they properly belong. I’m not really thrilled with most of this new Clayton guy’s posts on the Conspiracy, but Eugene continues to deliver.

When the military conducts itself more sensitivity and grace than the so-called statesmen, it makes one wonder if we shouldn’t have let the professional “last-ditch-diplomats” take over earlier.

Anatole has justified my blogroll faith with some new updates, including a choice bit of Fleischer deconstruction.

The lady at Air Canada tried to convince me that their war-in-Iraq rebooking policy only applied if I was changing my ticket “because of the war”, but she relented pretty quickly when I asked what that would mean, exactly. So I’m off to Boston a little early.

you never get it back

I’m looking for a new doctor, if anyone has Toronto-area recommendations to share. I’m leaving my current one partly because there is no schedule management at all, partly because there is minimal “patient management” — if you know the doctor is 3 hours behind, say so when I arrive 5 minutes before my appointment — and, well, it was the record management that really broke the deal for me. In spite of telling both her and her assistant twice during the visit, they didn’t seem to believe that I’d been a patient before. And they didn’t have any records from my last visit, so I guess they might as well have been right. I got to go back over my whole history again, spar a little about whether or not I should be on Celexa “that long”, blah. I could go to a walk-in for that, and probably wait less.

And then it rained on me on the way back to the office.

Got to have a nice dinner with Tyla and Kev at Tiger Lily, and then come back to work and actually get some good results out of llite/11.

I bought the Get Your War On book at Indigo today, along with some other stuff. It was right next to the books of anti-war poetry, so I didn’t linger long. (I’m not really pro-war, and I think that the US has screwed the process fifty ways to Sunday, but I do think that use of military force to remove Hussein is likely required, and very likely appropriate. Maybe I’ll say more tomorrow, but I spend all day talking about it, and, well, others — see below — say most of the things I’m thinking in much more interesting ways.)

Two new additions to the links section today, and they’re the first two people linked up there that I haven’t met and wouldn’t consider to be friends. But they write very well, and while I don’t agree with all of their politics, I very much enjoy the way they present their positions, and enjoy even more the way their writings sometimes make me poke around a bit at the reasoning behind my own positions. (Strictly speaking, the Volokh Conspiracy link points to the writings of more than one person, but we’ll just let that slide. Won’t we?)

I haven’t been very happy with my writing here lately: a lot of things are being left unmentioned because I’m too tired when I get around to updating, and, to add insult to what cannot really be described as injury, the quality of the text I do produce isn’t that great. I think I need to devote a bit more time to it.

prime time

Phil is back from Edinburgh, which meant that I didn’t have to put on a Phil mask and trick the DLM into telling me secrets about the causes of a bug I encountered. Also, I got to talk with him for a while on the telephone, which is always fun. It’s good to have him back.

I’m not going to write about the upcoming war today, if that’s OK with everyone. I would like to say, however, that it’s harder than I expected to find a list of signatories — or, if you prefer, High Contracting Parties — to the Fourth Geneva Convention.

Went out for µPowered this evening, and had some fine conversation with other local geeks. I was up $60 in the darts gambling before my sense of fair play started to erode my winnings. (Gavin and I had, strangely, bet on each other in a game that we played, and I was too much the gentleman to blow it at the end. Ah well.) I think I ended up $20 down, but I’ll get him back next time, for sure.

I don’t recall which of Gavin or Kris won the bet on the start-date of the war, but it was a near thing.


I had intended to hold off until about 3 or 4 o’clock before I started drinking today, but then I ran into some more nonsense on another test cluster just after noon, and James was here waiting for Chris and me, and then the next thing I knew I was at James’ place playing videogames and wondering where my first 3 beers had wandered off to. Mom assures me that I’m plenty Irish for this sort of thing, so don’t be giving me no guff.

I didn’t see Deb on this trip, but I don’t think it’s because I’m a loser. Which is to say that even if I weren’t a loser, I might not have seen her.

Tomorrow, back to Toronto. I miss my little woman, I must say.

mediocrity; mediocrity; excellence

I had only one concrete plan for today, so small that it was really just a planette, and that was to see The Hunted with Coop. Don’t believe the anti-hype, it’s really not all that bad. It felt like it was edited with a heavy and perhaps somewhat overmedicated hand, but what was left was not unpleasant. Unless you have a problem with blood, in which case maybe you should just stick to Carrie.

The bug I was pretty sure I fixed on Friday may or may not be fixed. I’ll find out tomorrow, before I start drinking to forget in honour of St. Patrick’s Day. I must be part Irish somewhere, given that my mother’s name is Halligan, so I figure I’m entitled. Also, it will keep me from, you know, going insane.

It took some doing, because a lot of places close at five o’clock in this fair city, but Chris and I returned to the house with some nice thick pork chops, assorted vegetable matter and some fatty cow juice. Over the following few hours, we turned them into some a-little-too-spicy, but still oh-damn-that’s-juicy pork chops, not-as-overdone-as-I-feared broccoli, a very nice pilaf — note to self: Korean pear; who knew? — and a crème brulée that, on its very own, justifies the continued existence of dairy products. I only spilled a little wine, and in my defense I think there are quite a few human endeavours where an error margin of a mere few inches would be considered a virtual bullseye. It’s not like I bombed a Chinese embassy or something.

Kittens: still damned cute.


I woke up a little later for this morning’s train than I’d have liked — Tyla’s lightning reflexes slayed the alarm clock after but a single bleat, it seems, so I never really noticed — but because it’s a Via train it turned out to not matter very much. By the time we arrived in Ottawa, we were running 45 minutes late, which apparently entitles me to a 50% refund-credit thing. It’s annoying to be late, as anyone who has ever done a time-sensitive thing with me can attest, but I wasn’t in an enormous rush, so I think I’m happy with the trade.

Chris graciously met me at the new Fallowfield train station, and after some en-route beer and wine purchases, we arrived at Chris and Kristina’s lovely house, where I got to meet their new kittens for the first time. Adorable as all get out, which I think is why they call them “kittens”. I apparently made quite an impression on Saba, because he sat on my lap for an extended period of time. Chris says that this is pretty much unheard-of, and I think that if he were going to lie to me he’d do it about something more important. Regardless, I squandered that goodwill later by hissing to get him (Saba, silly) and Miso off the table later in the evening, so it’s of little historical interest.

Between the waxing and waning of my friendship with Saba, there was a lot of snow-oriented fun. About a dozen of us trekked out to Bruce Pit, a short walk from — but, as you will hear, a longer walk to — the house in question, where we proceeded to fling ourselves down washboard-like hills until the combination of fatigue, deep-muscle bruising and dangerously low blood-beer levels drove us back to shelter. Well, some people drove back to shelter. I wanted to walk back and take the “shortcut” through the snowy park, because it was a nice night, and because I thought it would be fun, but mainly because I have the sort of foresight that may well someday lead me to attempt a mid-December infantry invasion of Russia. The trip back, distance-wise, was quite bearable; definitely under a kilometer. As the crow flies, it represented a significant savings over our previous route. Given that we were unable to find anyone in the “shortcut gang” with the gift of flight, however, we ended up trudging in thigh-deep snow for about, oh, a decade. These are my thighs I’m talking about here, so probably a good 80cm of snow. If you ever find yourself in desperate need of lower-body fatigue, drop me a line; I have a great source.

The rest of the evening was food and chatter and beer, all the ingredients of a wonderful party. Chris-and-Kristina’s house is truly lovely: wonderfully decorated and furnished, immaculately maintained and, of course, nicely catered. Some day I’ll grow up and be able to have nice things like this.

I wrote some code on the train, just a few hundred lines, because I finally had a few hours with a computer and without the seemingly-everpresent distraction provided by truly world-class test flailing. It’s good to be back, or something.

damage control

I slept late today, but not too late. I’m going to try to get llite/11 at least reporting useful results, but not too hard. I’ll put some work together to do on the train tomorrow and on the weekend, but not too much work. I’m going to get on an early train tomorrow, but not too early. I figure I’ll give this balance thing a decent shot, see what it can do for me.

Intelligence analysts once assumed that terrorists organize in isolated cells. But [...] the active structure resembled that of an IBM project team.

I thought the ads linking drug use and terrorism were a little far-fetched, especially coming from a government that poured money and training into their designated terror bad guys (Taliban, and to some degree Iraq) for decades. But the idea that file-trading funds terrorism is mind-boggling. They can’t even show that the commercial piracy operations are funneling money to Evil Men, and it’s a little amusing to watch them flounder around suggesting “public service commercials” — well, I guess the RIAA is a part of the public too, in a way — to “highlight that alleged connection between piracy and organized crime”. It’s mainly sad, though. “If more American parents understood the connection between the pirating of intellectual property and organized crime”, Mr Wexler, they’d realize that the biggest societal risk present when their kids pass around the digital equivalent of a mix tape is that Kazaa or some other piece of loser software will send piles of personal information floating around the net, helping the growth of identity theft. Hey, this tenuous-link thing is kinda fun. Maybe I should run for office.

I think they do themselves and the public a disservice by distracting effort from the genuine intellectual property violations present in commercial piracy operations, but I’m not really sure that I mind anymore. Someone has to be their worst enemy, and I guess it might as well be themselves. I mean, I have always made my living off of the strength of intellectual property rights, and they’re totally failing to generate sympathy in me. Can they imagine how ineffective they must be with people who only see IP rights as the reason they have to pay $20 for a new CD, hundreds of dollars for prescription medication, or $30/month for cable or satellite signals that are “out there already”?

Hahahahahahahahahahaha. Hahahaha. Ha. … *sob*

Jamie, dude, I feel for you:

: ptlrpc; history | grep -c “killall.*gdb”

I cannot believe how badly the last 6 hours of my life have been wasted. Even my Halo break didn’t go well, but that is nothing compared to the utter squandering that was my evening. I can’t even write about it. Augh.

not just a river in egypt

Let’s just not talk about work today, OK? I got to do some fun stuff, sure, and I managed to beat the recovery test back into submission, but the rest of it was just purest pain. Frosted with agony and served with a frustration coulis.

Instead, I’ll have one of these weird blog-conversations with Hoye. (This will make no sense in a few months, because I have no idea how to link to a Hoye-blurb in a future-proof way, but don’t worry about that. Live in the moment.)

You don’t make a method or a field private because you don’t trust the person using your classes. It doesn’t matter if they have the source or not, it doesn’t work. “#define private public” and “#define class struct” before your library’s headers and all of the sudden the parents are out and the liquor cabinet was mysteriously left unlocked. It’s like const: a way of setting policy for the use of your objects, in such a way that the compiler can provide strong hints. You make something private because it’s not suitable for general use; people who want to use the class safely — which you could usefully define as “in a manner which permits the class to perform its functions as documented”; the kooky design-by-contract Eiffel folks might like that — will play by those rules, and the compiler will help them. (In some runtime environments, such as Java’s, data hiding is used as a security mechanism as well, but that’s largely an extension of the same concept: it’s very hard to write security-safe code without controls on the way your classes can be poked and prodded, and for many classes, the Java system is relying on it keeping its contract to avoid a breach of the whole system. I don’t care if that didn’t make sense, because it’s not central to my point.)

Good code ownership isn’t just about setting up fences around the squishy parts of your data structures, though. It’s about making sure that the code is properly factored, and designed, and tested, and documented, and that it interacts in a polite and friendly way with the other parts of the system. Collective code ownership disperses that responsibility throughout the development team, meaning that you can and should fix all those little things in all the other people‘s code that just aren’t right. It also means, along with pair programming, that you develop experience with and exposure to lots of parts of the software. This means that it’s easier for you to work in “other” parts of the code, but it also means that it’s easier for you to design “your” bits so that they fit well with “other” bits.

(I say “other” and “your” with the quotation marks, but I only half mean them: while everyone owns the code, people will often work mainly on one part of it. That’s not a failure of collective code ownership, though; everyone on an Ultimate team is responsible for the team playing well and having fun, but some people will handle more, and others will usually show up in the cup.)

Pair programming is a fantastic thing. It’s one of the things I miss most when I’m telecommuting, and even then I try to find excuses to talk to people on the phone while I’m coding and debugging. When I’m on the ground with someone else — even when I’m actually in the air, actually — I’m a lot more productive, and I think it’s the case for my coworkers, too. Talking to someone about what you’re doing, having them that you really typed “foo++” when you meant “bar++“, the presence of an extra brain and pair of eyes that can stay a level or two above the syntax details looking for things like repetition and opportunities to refactor — priceless. Just being able to toss the keyboard to someone else when you find yourself rewriting the same loop condition over and over is enough to make you a believer, I think. This is an OK article about pair programming. You may not find the “interpersonal interaction” bits interesting, but the benefits are very real. I’ve found that students and new grads are often reluctant to get into it because they have bad memories of group assignments. It’s not like that. I promise.

I think the real money is in DoTheSimplestThingThatCouldPossiblyWork and YouArentGonnaNeedIt. For me, I think that’s because I sort of “grew up” as a software person with this awed reverence for The Right Design, and didn’t realize until much later that you can’t design a system really well until you’ve built it. So the trick, I think, is to move the code towards the design, and then move the design towards both the code and the (constantly refining) goal, in lots of little steps. But you’ve all heard this before. I really want to believe that a lot of these things apply outside of software, but I may never find out because I’m sure I’m driving away all my non-geek readers.

I remembered what I had to do today: get tickets to Ottawa. I did most of that, but now I’m not sure that I actually purchased them. I guess I’ll find out when I go to pick them up tomorrow.

It’s a little after midnight — OK, it’s about four hours after midnight, fine — and I’m still chasing my tail. It’s not as easy as it could be, because my tail is caught in the jaws of “llite/test/11″, and test/11 itself is being yanked all over the map by hardware and software failures of all kinds. Maybe I’ll take an early train on Saturday, so that I’m not filled with blinding fury when I reach Ottawa. I’m not invited to the ballet, anyway.

contact with the enemy

The first part of my plan worked very well: I was perky and productive and fixing bugs all over the place until about 9AM. At that point, I realized that I was going to have to take a nap if I was going to be both effective and polite during the day, so I went home and slept for two hours. Which is 90 minutes more than I had planned for, truth be told, but for some reason the single polite chirp of my cell phone wasn’t enough to wake me up.

After I woke up, my day degraded into chaos. I spent about 10 hours involved in setup for a test that should have been set up and running days, if not months ago, during which I actually performed useful work for 10 (fixing some configuration scripts) plus 5 (fixing an honest-to-goodness bug in recovery) minutes. By the end of the day, I was clinging to the last shards of my veneer of implacable professionalism. The kid gloves are coming off tomorrow, because my time is worth more than my reputation for pleasantness with these particular people.

My driving instructor just sort of showed up today, apparently expecting me to have been ready to go out with him, even though we had had no communication in a week. Specifically, we had had no communication since I responded to his message about rescheduling my last session, and his suggested time slot for that — which I had indicated in my message was just fine — had just slipped on by. I was pretty frazzled by that point, so we just booked a session for next week and I sent him away. Nobody wanted me behind the wheel of a car anyway.

More time has passed, and has mainly been wasted. I’m supposed to be writing some license text for a contract we’re otherwise ready to sign, but I think I’m going to do that tomorrow, because right now the combined effects of fury and fatigue have caused a state of intellectual near-paralysis. Oh yeah: we released our beta today. The release notes are full of scary warnings about recovery, because most of my choicest fixes missed the train, but all in all I think it’s a pretty good beta. The next one will be unbreakable, let me tell you.

Tomorrow, really need to [ed: I fell asleep at this point, last night. I don't know exactly what I need to do today, but I'm sure it'll come to me.]

11 March 2003

judo chop!

My sleep cycle and I are still not getting along. The insomnia or time-shifting or whatever is very strong, and very aggressive, so I’ve decided to use its strength to my own advantage: I’m not going to sleep tonight, and then (hopefully, sweet heavens) fall asleep like a narcoleptic who lost a Nyquil drinking game. Speaking of narcolepsy, it appears that you can get Modafinil on the web, and it would seem to be a legal import here. But that’s such a fantastically bad idea. I can already hear Hilary frowning at me. (And man, the email I would get from my Mom!)

I had to check yesterday’s entry to remember what I was working on then, but I did indeed get past the problem with the underlying filesystem. I’m sure you’re all thrilled for me. Today I fought with computers that didn’t want to come back up after I put them down — and this is what I do, testing-wise, so it got old in a right hurry — and some testing missteps at another site, but things picked up in the end.

I need some better headphones, and I need to make the sound card on the machine at work, well, work. I should also buy a new keyboard, and probably a headset for the desk phone. I’m sure I’ll have time for that really soon. Uh huh.

Simon Weijgers sent along a link to an interesting article about OO, in case you didn’t get your fill yesterday. I also had cause to visit WikiWikiWeb again today, and I got lost for an hour or two in various fascinating software development topics. You can have a good time there, if you let yourself.

I have yet to find anyone who doesn’t think this whole “freedom fries” thing is nonsense, but I’m sure there are some out there. I think Tyla had a good take on it, and I’m not just saying that to make up for staying at the office all night:

If they are that pissed at France and want to do something really symbolic, they should return the Statue of Liberty. At least that would be an actual comment on their country’s ideals, rather than the needless renaming of tasty but irrelevant foodstuffs.

Now, I think this is mainly the result of a few nuts having the authority to deliver their clever culinary riposte without needing any sort of meaningful consensus within their branch of government. And that’s probably for the best, because, really, who wants to risk a filibuster over every change to a cafeteria menu? I bet the Representatives’ press secretaries will be laughing about this for a long time to come, once they finish destroying all records of their employment.

next page »