24 March 2003

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.)

Posted by shaver at 01:00 AM | Comments (0)
21 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
20 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
19 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
17 March 2003

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.

Posted by shaver at 01:00 AM | Comments (0)
16 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
15 March 2003

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.

Posted by shaver at 01:00 AM | Comments (0)
14 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
13 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
12 March 2003
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.

Posted by shaver at 01:00 AM | Comments (0)
10 March 2003
tooth and nail

I need to kiss and make up with my sleep cycle, so I'm going to bed after I finish with this. And then tomorrow, I'll get up and walk to work, and fix all my bugs. And then I'll wake up for real and see that I've slept through my meeting. You read it here first.

I thought I was supposed to have an in-car lesson today to make up for the one that got snowed out last week, but I never heard back. Even checked the messages. Ah well, I guess I'll see him Wednesday, though we didn't set a time for that.

I fixed some stuff today, and tried my first real failover with the new recovery code. Was looking pretty good, until I got spanked like a red-headed rented mule by some infelicity in the loop driver. Or ext3's data journalling. Or something. I don't really know, but it sucked. I'll use a different storage system tomorrow, and it should go much better. I really should have done that after the first hour spent debugging it, but I spent a while fearing that it was a subtle bug in my code — heaven forfend! — and then after that thinking that I could, you know, fix it with some configuration changes. Error.

Tyla made a great dinner tonight, but my appetite sort of disappeared. Sucks. City is showing Gunmen, and it's not any better than it was last time.

Posted by shaver at 01:00 AM | Comments (0)
9 March 2003
I didn't get an angry

I didn't get an angry call from Phil, but the patch did have some problems. All better now, and yay for me. I think I had extra hacking luck because I didn't get out of my PJs today.

Brined some chicken breasts overnight last night, in a rare burst of forethought, so I made some seared-chicken sandwiches for myself and Tyla for dinner. Mmm, much yum. The boyz also had a good brined-food experience, just to keep us in sync. (For posterity, the rub in question was: 1 tbsp each of cumin, chili powder and curry powder; 1 tsp ground black pepper; 2 tsp brown sugar. I think we're going to try it on tuna tomorrow.)

Madhava came over and the three of us watched Le pacte des loups. I drifted in and out a bit, but it was pretty good. Felt a little long, at 2:32 — this time, I might be interested in seeing the someone-other-than-the-director's cut — but it was pretty fun, and the visuals were great. Madhava said that some review described it as the product of an explosion in a genre factory, and the facts would certainly bear that interpretation.

I chatted with Andrei and Vlad about game design some more, railed against the NIH syndrome that plagues game-development companies, and registered for an online course in terrain rendering. I almost signed up for a cocktail-party cooking class as well, but then I remembered that I'm going to be at Coop's toboggan party on the weekend. Maybe the knife skills course, instead.

Hoye is quite right to view OO as a technique, and not a feature, and it's a position I've had to argue more than once in my days as JavaScript evangelist. I'm not sure that being able to #ifdef logging is the best argument I've heard for use of accessors, but I've always been a bigger fan of the whole meta-object protocol game than most other people. Especially if you restrict that set of "other people" to those that program, but have never programmed anything significant in a Lispy language. AspectJ™ and other bits of Aspect-Oriented Programming might interest like-minded individuals; logging is one of the "cross-cutting" pieces of software development that's often used as an example of a good A-O candidate.

Posted by shaver at 01:00 AM | Comments (0)
8 March 2003
reunion and celebration

We ran a little late, as we always do when I'm involved, but we still arrived early enough that our Mission of Cheese was successful. It was wonderful to see the family again, of course, but I really need to practice my drinking if I'm going to keep up in the future. Crikey.

Then we got a drive home with Chad and Jen, including a wonderful demonstration of cool-headed collision avoidance provided by Chad, and I did a little work on a bug that Phil reported to me this morning. It fixed another longstanding bug as well, so I'm generally happy.

I'm trying to decide if I should test that patch, sleep, or watch the overdue copy of Brotherhood of the Wolf that's been sitting on the coffee table for 9 days now, mocking me with its monkey pants. I suspect that I'll end up falling asleep while watching the movie, and wake up tomorrow to an angry phone call from Phil about the patch. Who says you can't have it all?

Speaking of movies, I was thinking that I'd try to find time to see The Life of David Gale, but now, well, maybe not. Zero. Huh.

Posted by shaver at 01:00 AM | Comments (0)
7 March 2003
return of the thing

I went into the office today, for the first time since Coop came to visit, and it's a much calmer place now. The renovations are complete, and the new lighting is nice. My desk and chair combination still suck, but I think I'll be able to fix that next week. Neither Chris nor Fixy were there, because of a late-night maintenance operation last night, so I'll have to wait until Monday to make sure that they haven't grown extra noses or anything.

I walked to and from the office — about 35 minutes each way, not counting the stop for dinner on the way home at 23h30 — and it was tremendously pleasant. I need to try to make a habit of that. If it were fattening or bad for my sleep cycle, I'm sure I'd have no trouble.

Today's diff was only about 300 lines net, but I did manage to remove more than I added yet again, keeping the streak alive. It can't last, but it's fun so far. Phil helped me sort out the last remaining problem in his refcounting work, so we're in a pretty good position now with respect to the architecture we need to have in order to deliver 1.0-grade recovery while that release-train is still accepting passengers.

Tomorrow is Papa Ross' 80th birthday party, so I need to do some compensating for last night's 4-hour sleep accomplishment if I'm going to be able to keep up with my family. 'night.

Posted by shaver at 01:00 AM | Comments (0)
6 March 2003
makes perfect

I wrote the other day about the various changes I was juggling, and how they were all proceeding in lockstep towards an as-yet-invisible point of completion. I'm not done yet, quite, but I'm about to fire one hell of a warning shot across the bow of our software:

21 files changed, 312 insertions(+), 1106 deletions(-)

Even if you're one of the folks whose eyes glaze over every time you see something here in a monospace font, I want to draw your attention to the fact that I'm fixing bugs while removing hundreds of lines of source code. I don't get to do that very often, but when I do, man, it's a great feeling.

What the hell, I'm going to geek right out — normal people can skip ahead to the ellipsis, and I won't be hurt at all.

Some great discussion about iterative development over in Hoyeland. Alex and the other other Mike have said most of the things that I wanted to say, but a few things remain to tempt me.

Most importantly, for all the times that I've been involved in projects that tried to do non-iterative development, I've never seen any that did. You always end up needing to make changes, unless you're building software faster than any outside factor (competitive landscape, customer needs, marketing whim) can change. I've never seen interesting software completed that quickly, and I've worked with some pretty sweet teams. So now you have two choices: "fall back" to iterative development, or start a new waterfall attempt. (Alex and Mike and Mike and I are going to chuckle about that link for a fair while, I think.) At Zero-Knowledge, I used to tell people to treat software change like rain. You can either spend your days doing rain dances to keep it at bay — design once, then never look back — or you can buy some bloody umbrellas and learn to live with it. Maybe plant some flowers.

The other problem with doing waterfall is that you're fighting a losing battle against time. You do a pile of design up front, it takes a month or two, you write code for 6 months of a 4-month schedule, polish and document and box and ship, and now, hey, look at that: you have software that's targetted at a 10-month-old market. Of course, if your market isn't totally moribund, it's moved a little bit in that time. Your customers need to integrate with new things, your competition has released some things with shiny new features that your sales guys have to answer awkward questions about, and, huh, who knew that you'd need a client for OS X? Oh, and of course, you were late. So now you really need to nail the next iteration, so you end up with a more ambitous — pronounce that "long and fragile" — design cycle, a development phase that's even more overblown, and you end up losing ground on the market by even bigger chunks.

I'm not sure if I believe in all of the things that XP would have us do, but I can buy all the way into short, sharp iterations with frequent review of what would be the best use of development effort now. (If Phik wants to send me to Italy to find out more, I can probably find the time to pack.)

SCO suing IBM about Linux is just pure comedy gold. Even ignoring the fact that SCO bought Caldera — yes, they named their company "smoking crater" — and is now suing IBM over putting things in Linux, the basic situation is that SCO is bringing a knife to an intellectual property gun battle. My current theory is that SCO's outside counsel pushed them into this, in order to get more money out of SCO than the bankruptcy proceedings would provide.

I'm not the CEO of Red Hat or anything, so maybe I'm just missing something, but I really don't see how Sun could produce a non-GPL'd version of Linux.


OK, I'm done now. I also went driving today with Alasdair, who was a very patient passenger, a source of calm wisdom about his car — did you know that the Mustang I'm taking lessons in can actually creep forward just on idle revs, without stalling? did you know that Alasdair's Honda can't? — and a pleasant dinner companion. He even tried valiantly to remain non-smug about the play of the Leafs the other day. We both miss Alyn. I don't think I hurt his car too badly.

(This is getting long now, no? Stay with me: this next one is really important.)

I should have written about this long ago, but I'll try to make up for lost time now. Back when I told people that I'd like people to give to charity in lieu of giving me birthday presents — and this was, I swear, intended not to solicit such things as much as to deflect people who were already intending birthday-gift silliness towards more reasonable practices — um...that sentence just totally got away from me. Anyway, Mehmet, about whom this paragraph is ostensibly written, combined big-heartedness and athleticism in his usual way, and risked his very life and limb at the Matterhorn Matt All-Night Charity Ultimate Tournament. By all accounts, a great time was had, and I'm touched that Met chose to participate "in my name" — I was, in fact, touched some time ago when Mehmet first told me about this. I don't know what I did to deserve this sort of thing, but it must have been in a previous life. All I did in this one is drag him out to arcades at very academically-questionable times and forget his birthday with a regularity that would make the USNO blush.

Posted by shaver at 01:00 AM | Comments (0)
5 March 2003

My driving lesson was cancelled today. Ah well. It's not like I don't have things to fill the time. And while I'm sure that I will, someday, be perfectly capable of handling a rear-wheel-drive vehicle on streets with 15cm of fresh snow, I guess it's reasonable for that to not be on the second day of in-car instruction.

Phil and I like to work together, because we have a psychic mind link which allows us to coordinate our efforts with the precision of an atomic clock.

cvs server: [10:40:40] waiting for pschwan's lock in
cvs server: [10:41:10] obtained lock in /cvsroot/lustre/lustre/include/linux
cvs server: Up-to-date check failed for `include/linux/lustre_net.h'
cvs server: Up-to-date check failed for `include/linux/obd_class.h'
[15 more]

S'ok, pal. I didn't have 400 lines of changes in my tree, or anything.


My last in-class session was today, and it was...well, it was. Wasn't bad, wasn't great, you know, the way most things in life are. They ran a video of "National Driver Test" that CTV and YD did a decade ago, and of course we all knew the right answers. So now everyone leaves that room thinking that they're near-perfect drivers, which is just what we need. I didn't bother to ask about the fact that the video was asking us to describe how we do drive, rather than how we're supposed to drive, and that it was possible that, you know, we didn't likely have an established driving style, since only three of us had more than one in-car lesson. Then they showed us another "drunk driving is bad" video, and asked us to fill out a feedback form. What? They were asking for it.

For the record, you know, I offered to do this job for them back in January of last year. I'm not really bitter, but it would make reading threads like this even more entertaining. The Wolfpack guys (and gals, I presume, though I never met any of their female employees) are pretty smart, and they really did a much better job designing their server software than I have been led to believe is common in that industry but I have this niggling suspicion that they might have won a little bit more if they'd had a little more in the way of state machines and a little less in the way of inter-thread communication. I mean, I'm working with a very limited set of data here, and I'm not one of the "state machines are what smart people use instead of threads" crowd, but still: that's what my gut says. Maybe I'll have to hit Austin and visit a pub with them again and see how very, very wrong I must be. (I understand that AC1 did a good job with their server architecture, though they ended up not using most of the fancier clustering and balancing features, and ran roughly over the shoals of not having enough flexibility in other parts of their engine. Not the first time that song's been sung in the software space either, of course.)

(No, I had no idea how I was going to get Tyla to move to Austin.)

I still don't understand airline pricing, but I did have a good time reading about it.

For dinner, I made some pork chops and pasta. Tyla asks that we never ever prepare pork again without brining it, and I think that's all I need to say about that meal.

Posted by shaver at 01:00 AM | Comments (0)
4 March 2003
don't turn your back on it

I didn't get to sleep until, uh, nevermind last night, and then I started today with a mildly irritating conference call, so this was looking like a Tuesday of unusually sucky proportions.

Right after that meeting, I got on a much better meeting where we figured out the rest of my work for LL 1.0. Well, the rest of the recovery work. You can see that I'm not doing all the work, but you know. I'll feel most nervous about it until it's done.

I like game design. It's fun. Even if I never actually get to work on a game — and these days it feels like I might never play a game again — it's a wonderful intellectual exercise, and it stretches my brain in different ways than the other stuff I do. In a parallel universe, where time has no meaning and I can plan my way out of a wet paper xylophone, I'd be off to the GDC again this year, to pay special attention to the Experimental Gameplay Workshop and everything that Doug Church comes anywhere near. Ah well, maybe next year.

More in-car driving lesson stuff tomorrow. There's a lot of snow on the ground, so it'll be pretty exciting. By which I mean, of course, that it will be a fantastic opportunity to improve my defensive driving skills, and that there will precisely zero skidding about and giggling. Alasdair, maybe it's best if you go back and unread this paragraph.

New MGB album out today. Consume, my friends; consume with all your consumptive might. I'm sure the rest of his old band did a wonderful job, and I quite enjoyed their performances, but this solo effort makes it pretty clear who put the "Matthew Good" in "Matthew Good Band".

I'm about to start reading the first book in the Wheel of Time series, which I have been led to believe will cause me to hate Robert Jordan — specifically, his publishing non-schedule — with great fury and passion. I'm already a patient fantasy fan, so I think I'll be OK.

I've actually read a few good books in the last few weeks (Pattern Recognition, Down and Out in the Magic Kingdom, Humans), and I should write more about my thoughts on them. Or, you know, keep meaning to for a month or two and then just forget about it once the moment has passed. I can play it either way; crazy like a fox.

Posted by shaver at 01:00 AM | Comments (0)
3 March 2003
let's go shopping

I've been sort of schizophrenic at work for the past mumble days, popping back and forth between different parts of the stuff I'm working on, as work on one change points out a need to get a little farther with another piece. Now I'm about 80% done with five nice changes, and I have nothing checkin-able to show for it. Frustrating, and it doesn't make dealing with my current up-and-down focus-swings any easier. But soon I'll be able to land a nice set of changes, and feel all good about myself.

Working on recovery stuff is weird. My job is really to make sure that relatively infrequent occurances don't make things hurt too badly. It's hard to measure incremental success — I don't get to make things a bit faster or bigger or more efficient: either we survive a failure or we don't. Also, as our software gets more stable, it turns out that it gets harder to validate my changes. I hadn't expected that.

Hoye raises a good point about useful diagnostics and error messages. One of the interesting parts of the work I've been doing over the last week is cleaning up our recovery-related error-reporting story. The core issue is balancing two things:

  • When a machine enters recovery — and, hopefully, exits unscathed out the other side — we want to tell the administrator a fair bit about the failure that occurred, what we're doing to fix it up, and how that process is proceeding. In many cases, these diagnostic messages may be the only forensic evidence available after the fact to help figure out what went wrong, so the compleatist in me needs to be indulged. But:
  • When you have a thousand nodes cough and sputter due to a single event, such as a critical server taking its ball and going home, what was once considered "helpfully thorough" quickly becomes "an unbearable onslaught of logging data".

I'm erring on the side of verbosity right now — I know, that must be very difficult to believe — but I have this feeling that I need to swing back the other way a fair bit. Is it OK to log a string of extremely concise description and just expect the administrators to learn to decode it, or hand it up the chain to their support contact? Should I be providing tools to aid in the interpretation? Is there any way I can make this a configuration problem, and thereby stick it on Robert's plate?

Whatever the answer is, I bet it's not this:

<Isidien>msvcprtd.lib(MSVCP70D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in GameObjects.lib(Player.obj)


As if that weren't geeky enough, I just have to say something about Judy. Zach pointed me towards it the other day, and the "shop manual" is a great example of technical documentation. I'm sure none of you like data structure stuff as much as I do, but this is my diary, so nyaaaah.

(Confidential to Kev: I still love you! I haven't even thought clearly about Halo in what feels like an eternity. Soon, though. So soon.)

Posted by shaver at 01:00 AM | Comments (0)
2 March 2003
brown paper bag

We pushed out a new interim release of Lustre yesterday, only hours before Phil discovered an embarrassing bug in the recovery code. I'm not 100% sure I caused it, but it did reveal a significant gap in the test set I'd been running. Fixed, but still shame-inducing. I think I'll pause my part of the rearchitecture work — letting Phil continue to kick ass, of course — and just bang on recovery with a test-mallet for the rest of the evening.

After we go watch Madhava's concert. I'm sure it'll be wonderful, even if it is in a church.


The concert was quite nice, though we showed up ten minutes late. See, I was showering, and we ran out of hot water, and...never mind. We were almost on time. While we were there, it got cold out, and in one heck of a hurry. Otherwise-pristine pools of water and slush became mirror-like patches of purest glazed treachery. And I forgot my hat.

I get to eat the pie soon, though I'll have to brave Hilary's company. Normally, that's not a big problem, but right now she has some lung thing that may turn out to be whooping cough. Mom sent me my vaccination info a few weeks ago, so I guess I should dig that up and find out if I'm going to die for the taste of lovely pie.

Posted by shaver at 01:00 AM | Comments (0)
1 March 2003
my piehole?

I mentioned brining in the past, and Phil is a fan, but I really want to drive this home. Even if you're not a fantastic cook, it is nothing short of imperative that you bring this technique deep into your heart. Cherish it, like a fond memory or a childhood toy.

To start with, it makes stuff taste better. I mean, you get to put salt and sugar and seasonings right inside the food, where they can mingle productively with the flavourosomes and other important parts of the chowganism. This is really reason enough to play the brining game, though it is possible to misapply brine in such a way as to turn tender, lovely, defenseless shrimp into Dark Warriors of Sodium. You won't do that, though, because you're smarter than I am, and therefore won't brine a handful of shrimp for 24 hours. (Well, you sure won't do it now.)

More important, though, is that brining puts water deep into enemy territory. Moisture mismanagement is the easiest way to screw up a dish, in my dish-screwing-up experience, and brining is like having a second chance in this regard. Like having a scratch monkey perhaps, only not quite as morbid. You can do things like cook your turkey to an internal temperature of two-hundred-and-stupid degrees, or develop a very crisp outside on pieces of chicken, without having to call for pizza. Plan ahead by a few hours, water+salt+sugar, bingo. You'll thank me later.

I burned my fingers cooking today, mainly because I really need to concentrate pretty hard to remember that the lid from an otherwise innocuous saucepan may be some 375 Farenheit degrees if it came out of an appropriately-hot oven recently. I was not concentrating hard enough, it seems. Ow.

Tyla made a pie today. It looks like it teleported in straight from the Elemental Plane of Yummy. I can't eat it, because it's for sharing with friends tomorrow. Friends and sharing both suck, I just decided.

I think it's safe to say that Tyla and I both think we should cook more often, and perhaps more ambitiously, but I don't think either of us are this crazy. And that's a damned shame.

Posted by shaver at 01:00 AM | Comments (0)