Monthly Archives: April 2007

Deterministic non-determinism


A colleague pointed me to a blog entry on a blog by the VP of VMWare. It talks about a new “replay” feature in the next version of VMWare — you can record the execution of your VM to a file, and then replay that file later. This will reproduce the VM’s execution exactly as it happened the first time. This is an unbelievably cool feature for debugging things like memory stomps and race conditions.

When trying to find a bug, the easiest way is to run it in the debugger, put breakpoints near where you think the problem is happening, and then run it, hoping that it fails the same way that it did before. If it doesn’t, well, try again, or tweak some part of the test case to try to cause it to be more reproducible. If it’s a race condition, it’s highly possible that attaching the debugger or tweaking the test changes the timing enough that the problem never shows up. With this thing, once you’ve reproduced a problem, you could then replay it (in the debugger!) and step through the code, knowing that the problem will reproduce. You can step “back in time” to just before the problem occurred, and then step through the problem as it happens. According to the web site, the recording process has no effect on the speed of the VM. This is not possible according to the Heisenburg Uncertainty Principle, which, strangely, is specifically referenced in the article. Ah, what did he know, anyway?

Apparently it doesn’t have SMP support, so if your problem is SMP-related, this won’t help you. But it looks like a very nice piece of software engineering, so kudos to the VMWare people!

Thunderbird


I made the big email switch this week, going from Outlook to the brand-spankin’ new Thunderbird 2.0. My company actually uses Lotus Notes as the “standard” email client, but after a few years of using that, I found that it sucked rocks, so I took a week and switched to Outlook. First I politely asked IT to set me up with an IMAP account, which let me access my network-stored email folders from Outlook. They did that, and I used that to suck down all my archived mail. Then I abandonded IMAP and went to straight POP, and life was good… for a while.

I think it was when I upgraded to Office 2003 that things started to go bad again. Every now and again, I’d go for several hours without receiving any email, and discover that Outlook simply stopped checking, or something. I would shut down Outlook and start it up again, and then it would download all kinds of stuff from the previous few hours. It also took forever to start up Outlook (as much as several minutes sometimes), and the search capabilities were terrible, although I found a tool called LookOut that solved that problem. However, Microsoft bought the company that made Lookout, and changed the product into something called “Windows Desktop
Search”. Apparently Lookout itself is no longer available. I still have an install though – email me if you want it.

I started using Firefox as my default browser several years ago, and I love it, so when I found out that the same team made an email client called Thunderbird, I immediately downloaded it. I tried using it for a couple of days, but I could never get the LDAP stuff working, so searching the company address book for a name would not work. This was a big pain, so I decided to wait until that bug was fixed, and I went back to Outlook. A year or two later, I tried it again, and ran into the same problem. I asked another guy in my department how he got his to work, and he had no idea, it just did. Then we looked at mine, and it just didn’t. We even went so far as to use a packet sniffer and point Thunderbird at a perl script that my boss wrote that acted as a proxy to the real LDAP server, and got nowhere with that either. After more searching, I found that this was a known bug in Thunderbird — the LDAP stuff did not work if IPv6 was installed on the machine. Since I was working on IPv6 for SQL Anywhere, I had it installed, which explained why it didn’t work for me. I followed the progress of the bug for a while, and found that it was not going to be fixed until Thunderbird 2.0, so I had to shelve my plans to switch to Thunderbird yet again, though I did switch to using it as my newsreader at that time, and have been pretty happy with it in that capacity.

When I heard last week that Thunderbird 2.0 was being released, I got all excited, and downloaded it immediately. I tested the LDAP support and it worked, and it (relatively) seamlessly imported all my Outlook contacts and mail, and I’ve been using it for a week now. Honestly though, other than being faster than Outlook, I can’t say I’m noticing much of a difference. It’s better at dealing with junk mail, but I prefer Outlook’s addressing — the To and CC lists consist of a single (expanding) text box where you can enter names separated by semicolons. The names are then expanded, and if more than one match is found, Outlook underlines it and you can right-click to choose the correct one. With Thunderbird, each address is listed on a separate line (so if you’re sending an email to 20 people, you have this huge list of names, rather than one text box). When you enter a short form, it searches your address books until it finds one that matches, and then replaces the name with that address and stops searching. If I type “Kurt” to send an email to the guy in my department named Kurt (who wasn’t in my personal address book), it searched the company directory, found someone named Kurt (probably the first one alphabetically), and used that address. There is no indication that the name wasn’t unique. However, you can click “Contacts”, which opens up a little sidebar that gives you similar functionality. I’m sure I’ll get used to it and it’ll be good enough — I’m just used to the way Outlook did it, not requiring the extra sidebar.

I should probably have waited until 2.0.1, or at least until a patch or two was released, since it crashes now and again, and I’ve even seen the same behaviour that I saw with Outlook — no email downloaded for a long time, but no error messages to say why, or even to indicate that there was a problem. But updates to Outlook were few and far between, while I’m sure there will be fairly regular updates to Thunderbird, so I’m going to continue with Thunderbird on the assumption that these irritations are a bit of short term pain that will eventually result in long-term gain. At least I’m supporting the open source community! That’s good, right?

Open Source


Maybe I’m naïve, but I just don’t get the big deal with open source software. I think it’s great that people are willing to put their time and effort into writing it, documenting it, and supporting it, but there are people out there that believe that all software should be open source, and that commercial closed source software is generally a Bad Thing. While I can certainly see the advantages of open source software, I make my living writing closed source software. It’s fairly simple: if Sybase didn’t make revenue selling SQL Anywhere, I’d be out of a job.

Thinking about it a little more, I’m quite sure that I am naïve when it comes to open source, because I don’t think I understand how it works. The extent of my knowledge about the process is this: there is a code repository somewhere on the web, and anyone can sync up to it and make changes to the code. But are there regular code reviews? Are there people checking every code submission to see if someone is adding bad code or trojans or anything like that? Who checks all the different platforms? Who runs regression tests to make sure that new features aren’t breaking old features, or that performance isn’t being affected? Who decides which
new features go in and which ones don’t? Surely there must be a full-time team of developers and managers that oversee all of these things, but how do they get paid? Who can afford to take on a full-time job that pays nothing? Is the open source world entirely populated by rich developers who don’t need an income? I doubt it. Is it enough to have advertising on the web site and a “Please donate” button with a link to PayPal?

I just checked the OpenSSL web site, and it says specifically that the project is volunteer-driven. The Apache Software Foundation is a non-profit charitable organization, and their annual reports (complete with financial information) are listed on their website. However, according to the 2006 report, every officer of the company received $0 compensation, and the total revenue of the entire organization was under $150,000. Total compensation, wages, and benefits were $0. Again, are they all rich and don’t need incomes? How do you squeeze in being a director or VP of such an organization if you already have a full-time job elsewhere?

I’ve been a professional software developer for over 15 years, so I probably should know the answers to these questions, and I’m feeling rather stupid that I don’t. If you do, please leave a comment and let me know how this works. Maybe I should stick to blogging about my kids or sports.

Second round picks


Well, I was 7 for 8 with my first round picks in the NHL playoffs. Let’s see how well I do in the second round:

  • Buffalo over the Rangers
  • Ottawa over New Jersey — have to say I’m not sure about this one. Ottawa won their first round series in 4, so they’ve been sitting and waiting for a week, while New Jersey had a hard-fought series against Tampa Bay, and might be riding some momentum. Maybe I should just predict that this series will go 6 or 7 and not actually pick a winner.
  • Detroit over San Jose
  • Anaheim over Vancouver

Nicky’s job


Part of a conversation Gail and I had with Ryan and Nicholas the other day:

Gail: We’re the parents. It’s our job to keep you guys safe, to protect
you. It’s also our job to teach you to be nice, polite, helpful, to help you
learn, give you food and clothes, a place to sleep….
Ryan: Drive us to school?
Gail: Yes, that’s another one. All of those things are part of our job as
parents. Nicholas, what do you think your job is?

(Nicholas then rolled his eyes and gave a big sigh, as though he’s given
this same answer a hundred times before)

Nicholas: Remember my shoes.

No spare tire, thanks very much


One year ago today, I started my weight loss program (blogged about it last year). I’m basically following the Weight Watchers program, without actually joining Weight Watchers. So far, it’s been a big success. When I started (April 19, 2006), I weighed 175.5 pounds, and by August 9, I was down to 160 even. Since then, I’ve hovered between 160 and 165 (maxing out at 165.5 twice) &mdash this morning I weighed in (for the third consecutive week) at 163.5.

I’m still following the program, but I’ve upped my points to 28 per day, and I don’t count points on weekends, though I try not to go too crazy. I’ve been doing that for about six months, and I’ve been maintaining pretty well.

I was never concerned about my weight until about 10 years ago. We were looking at some pictures of a recent trip to Collingwood with some friends. One of the friends was quite pregnant with her second child, and she joked about how her first child kept running up to her, pointing to her expanding tummy, and saying “baby”. While looking at the pictures, we came across one of me in a particularly unflattering pose. Gail jokingly pointed at my tummy and said “baby”. Now that I think about it, it would be really unlike Gail to say something like that, so perhaps it was someone else. Might even have been me. In any case, that’s when I resolved (it was December at the time) to get into better shape. Shortly after Christmas that year, we bought a treadmill, and I started cutting out snacks and stuff. I went from my high of 188 pounds down to 163 in four months. In the next few months I went up to around 170, and then stayed around there for a few years, though it kept slowly creeping up until I hit 175 again, and then Easter happened last year.

My ultimate goal is to never hit 180 pounds again. Right now, I would consider even getting to 170 as failure. I realize that I am almost for… for… f… well, I’m in my late thirties, and things will likely change, but for now I’m still eating pretty well most of the time, working out two or three times a week, and playing baseball again this summer. I think I look OK, and I feel great, so my short-term goal is not to hit 170 pounds before I turn for… for… f… oh, you know.

Doyle vs. Benesch


The Rock have now gone a full season without Colin Doyle. Are they a better
team without him? Well, no, but that may not be all his doing; they also lost
Brad MacDonald and Brian Biesel, and then traded away Rusty Kruger and Phil
Sanderson halfway through the season, and they also had a rookie coach. Benesch,
Fines, and Thompson tallied more points in total than Doyle did, but does that
mean the Rock really won the trade? Hard to say. Doyle played very well with San
Jose, who kind of pulled a Raptors — they were really bad last year (5-11
and a distant 5th in the west), and worse the year before, but this year they’re
9-7 and they made the playoffs for the first time in 3 years — and they didn’t just squeak into the playoffs like the Rock did.

Ryan Benesch looks like the “real deal”, winning Rookie of the Month for
February, Rookie of the Week a couple of times, and is a serious contender for
Rookie of the Year. He will be a great player in the NLL for years to come.
But then again so will Doyle, who already is a great player in the NLL,
and has been for years. Josh Sanderson’s point total dropped by about 15 this
year — he seemed to enjoy passing to Doyle who would just power through
the middle of the defense. Blaine Manning doesn’t do that as much (Manning is
still a very good player, but he’s just not the player he was a couple of
years ago), and Benesch doesn’t either, but man, does that kid have some moves.
Aaron Wilson also continues to improve, and no longer just waits around the left
side of the net for someone to pass it to him; he can score from anywhere.

So with all of these kids doing well, plus veterans like Veltman and Driscoll
(one of the best all-round players on the team, IMHO) around, and the ultimate
clutch goalie Bob Watson in net, do the Rock stand a chance against the 14-2
Rochester Knighthawks this weekend? Nope. I really hope I’m wrong, but I think
they’re gonna get smoked.

Philadelphia is in a rebuilding phase right now — just look at the kids
they have on their roster: Athan Ianucci, Geoff Snider (holy crap, is he ever
good at faceoffs), Kyle Wailes, Ian Llord, Sean Greenhalgh, and Rob Van Beek
— and their goalie Matt Roik is almost 10 years younger than Watson. They
might have sucked just as much as Toronto this year (they ended up with
the same record of 6-10), but let’s see how the Wings are doing, say, two or three
years from now, once all those kids have a few years under their belt. Compare
that to the aging Rock, who will have to deal with the inevitable retirement (or
at least decline) of Veltman, Watson, Ladouceur, and Driscoll. Wilson and
Benesch have many great years ahead of them, and I believe the Rock got a first
rounder for Phil Sanderson, but that’s a lot of people (and talent) to
replace.

First Round Picks


I looked at the hockey scores this morning and found that the winners of all four games last night were who I picked to win their respective series. Then I realized that nobody knew this because I hadn’t posted my picks! So here I go:

  • Buffalo over the Islanders
  • New Jersey over Tampa Bay
  • The Rangers over Atlanta
  • Ottawa over Pittsburgh — though I don’t think I’d want to play Pittsburgh in next year’s playoffs.
  • Dallas Detroit over Calgary
  • Anaheim over Minnesota
  • Vancouver over Dallas
  • Nashville over San Jose

I’ll make my second round picks once the first round is done, but right now, I’m picking Buffalo over Detroit in the Cup final.

Wii!


I have been looking for a Wii for several Wiiks (everyone reading this is thinking “Oh, please don’t start with the Wii jokes, they are Wii-lly annoying”) months now, and have had no luck. I’ve called numerous stores numerous times, and they’re always sold out, and nobody knows when they’re getting any more. The other day, a guy at work, aListair (he always capitalizes the L) emailed me that the EB Games near him had a couple of consoles, and would I like for him to grab me one. Rather than asking where it was and getting off my lazy ass and going there myself, I just said sure and let him do my legwork for me. He went on his way to work, and came by my office yesterday morning with a Wii console. You da man aListair!

I set it up last night (no internet yet, maybe this weekend), and played a few games after the kids went to bed (by the time I got it set up, it was bedtime; it’s not like I waited until they were in bed). I bought Wii Play on the way home, which is $59, but comes with a free controller! Well, it turns out that a more accurate description would be that it’s a $49 controller that comes with a $10 game. The game itself is pretty good for practicing using the remote, but not much else. Wii Sports is much better — it turns out that I’m a bowling expert. Who knew? I figured out quickly that because of the way I throw it, the ball always spins to the left, so I managed to compensate for that, and did pretty well. I didn’t manage to figure out why it goes to the left in the first place, but as long as you can compensate for it, it doesn’t much matter. Hey, that’s the same as my golf game!

We also rented some games from Blockbuster — Cars and Super Paper Mario. I never managed to figure Cars out, but I thought about it later, and I think you have to turn the remote sideways. I looked at Super Paper Mario as well, but the opening sequence (telling you the story) is, as aListair put it “very very very very very very verbose”, so after a while I just went back to Wii Sports.

This morning, I read an article on how the Wii shortage “could last months”. Thanks again aListair!

Speling – its important


I’m an English pedant. It annoys me when I read stuff that contains spelling, grammatical, or even punctuation mistakes.
Here is an article about proper punctuation, and here is one about grammatical mistakes. The second one contains all kinds of things that annoy me: “would of” instead of “would have”, “your” instead of “you’re”, and “it’s instead of its” (“it’s” is short for “it is” — it’s as simple as that).

A former boss of mine, Ed, used to say “irre-dis-regardless” instead of “regardless”. He was a very clever and funny guy, so I am quite sure he was kidding around, and didn’t actually believe that was a real word. We had a tool called “FIST”, which was short for “FIle STorage”, and one of my co-workers joked about the fact that “fist” sounded similar to the Polish word for (I think) potato. Ed, who was of Spanish descent, thought for a second and then told us that the closest you’d get in Spanish is “There was a bug but I fist it”. (Say that quote with a strong Speedy Gonzalez accent to get the full effect.)

Now that I think about it, the FIST tool was the source of another joke. FIST had both a client component (“front-end”) and a server component (“back-end”). One of our co-workers was in charge of the server component, and one day when he was working from home, someone asked where he was; the answer was that he was at home, doing the back-end FIST thing. Purely unintentional, but we all laughed for hours.