Sunday, November 22, 2009

Chrome vs. Firefox revisited

Attention Facebook readers: You might want to click the "View Original Post" link at the bottom of this note. Facebook sometimes messes up the formatting.

Back in May 2009, I wrote an article comparing the Chrome and Firefox browsers. Since then, it has been by far the most viewed page on my blog. From the day it was posted until today (almost six months), that particular article has accounted for about 80% of all pageviews on my blog. I've had days where 110 people visit my blog and 103 of them view that page and that page alone. I use mybloglog.com to track which pages are viewed the most and how people find my blog, and here's a piece of the results for one day. Note that this is a fairly typical day. I don't know why mybloglog can't collapse all of the "chrome vs firefox" entries into one.

bloglog

Anyway, after about six months of using Chrome pretty much exclusively, I decided to revisit this comparison and see how much of it is still valid. To that end, I reset my default browser back to Firefox for a week.

Note that I am comparing the "generally available" versions of Chrome (3.0.195.27) and Firefox (3.5.5), not development or beta builds.

Advantages of Chrome

  1. Chrome starts up almost instantly, while Firefox takes several seconds before it's ready to go. Both are still faster than IE for me.
  2. Chrome updates itself completely silently. Firefox tells you there's an update available and asks if you want to install it. Actually doing the install is pretty painless, but it asks you if you want to install the update when you start the browser, which is usually when you are trying to do something with it. Frequently I don't want to wait while it installs an upgrade and then restarts itself, so I end up trying to remember to do it when I'm done. I have no idea when Chrome updates itself, because it does it silently in the background and then the changes take effect the next time you shut it down and start it again.
  3. Chrome searches your bookmarks and previously visited sites extremely quickly, so when I start to type a URL, it comes up with probable matches really fast. For example, I don't have twitter.com bookmarked, but I can get there using <CTRL-L>tw<ENTER> because by the time I hit enter, Chrome has searched my previously visited sites and autocompleted "tw" to "twitter.com". Until I started using Firefox again, I did not realize how cool this feature was and how quickly I came to depend on it. I would visit a site and not bookmark it, and then the next day if I wanted to find it again, I could type whatever part of the URL I could remember into the address bar and it would just find it for me.

Advantages of Firefox

  1. Chrome still doesn't have plug-in support. If this isn't number one on the "must get this done" list for Chrome, someone needs to be fired. Yes, I know this is at least mostly working in the dev builds.
  2. When Chrome isn't going really fast, it seems to be going really really slow. I had a situation on my computer recently where everything seemed to be taking forever – compiling was taking 20-30 seconds per file (rather than the <1 it should take), and a test that was running at the same time was taking minutes rather than seconds. I looked at the task manager, and the two processes taking up the most CPU were Chrome and our stupid virus scanner that grinds my machine to a halt and IT won't let me configure it despite the fact that it prevents me from doing my job efficiently (but that's a rant for another day). I shut down Chrome, and within a few seconds everything sped up noticeably (though not as much as it should have because of the stupid virus scanner). I am going to keep an eye on this, but it may be a showstopper.
  3. Perhaps related to the previous problem - every now and again, usually when my machine is very busy, I enter a URL in the address bar, hit enter, and nothing happens. I have seen pauses of 30+ seconds before it even changes the status to "resolving whateverhost.com". Firefox doesn't have these complete blackouts, but just goes really slow in those situations. I rarely see this or the problem above (#2) at work, but it happens a lot at home – I think it may actually be related to the VPN I use.

Dead Heat

  1. When I first started using Chrome, it was quite a bit faster than Firefox, especially on javascript-heavy web sites. But when I switched back to Firefox for this comparison, I didn't notice much of a difference in speed, certainly not enough of a difference to consider it a Chrome advantage.
  2. Bookmark support has been improved in Chrome to the point where this is no longer an advantage of Firefox. Firefox supports keymarks which Chrome does not, but Chrome's searching of bookmarks is so fast this is hardly necessary, other than the magic %s searching thing that Firefox supports. XMarks support is still missing though (it's in beta).
  3. On a site with lots of Flash (i.e. games), sometimes everything seems to slow down to a crawl after 10-15 minutes or so. Sometimes it speeds up again after a while, but other times I have to just give up on the game. This happens in both Chrome and Firefox. Don't know about IE.

The Result

For now, I'm going to stick with Chrome, but as I said above, I'm going to keep an eye out for machine slowdowns and see if closing Chrome fixes them. If that continues to happen, I will have to go back to Firefox.

I kind of miss the plug-in support from Firefox, but Chrome is still pretty peppy and quite honestly, I feel like Firefox is starting to pick up the bloat that IE has had for years. Chrome still feels small and sleek.

I'm surprised that adding plug-in support is taking as long as it is, but I also understand that this basically amounts to allowing the general public to add executable code to your application on the fly. Getting this right and making it usable and flexible while remaining robust is difficult.

Wednesday, November 18, 2009

Best. Workout music. Ever.

I went for a run this morning, and my iPod played an amazing selection of music for my listening and distracting-me-from-thinking-about-the-pain-in-my-legs pleasure. It started with Alanis Morissette's Thank U, which is not a bad song, but I skipped it because at least half of my runs start with that song. It seems like the randomization of either the Nano or the Nike+ software really sucks for the first song – the first song is always one of about five, and it's mostly Thank U. The rest, however, was great:

  • Neon Crossing, Our Lady Peace
  • Load Me Up, Matthew Good Band
  • Down to the Waterline, Dire Straits
  • Coming Home, The Tea Party
  • Beautiful People, Marilyn Manson
  • Gravity, Max Webster
  • The Trooper, Iron Maiden

Beautiful People is a pretty good song, but I don't know much Marilyn Manson, so you can take them out of the equation. Other than that, each and every song is among my top 3 favourite songs by that artist.

Monday, November 16, 2009

C/C++: Five Things I Hate About You

Jeff Attwood said recently in a StackOverflow podcast that if you can't think of five things you hate about your favourite programming language, then you don't know it well enough. I started writing C code in about 1988 and C++ in about 1992, so I think I can say I'm familiar with them. I know that C and C++ are different languages, but there's enough overlap that I'm going to group them together. Here are five things I hate about C and C++.

  1. Lack of portability. Pure C or C++ code is generally portable, but we continually run into thing like "standard" libraries that aren't standard. Libraries for things like file I/O and threading can be vastly different on different platforms so if your application has to run on multiple platforms, you have to write the same code several times in slightly different ways. There are functions that are defined in a different header file on one platform than another. Preprocessor macros that have a leading underscore on one platform and not on another. There are functions that exist on one platform that don't exist – or work differently - on another. The C language has been around almost forty years, and we still have to have #defines in our code to cover stricmp on one platform and strcasecmp on another. We don't use exceptions in our code because different compilers deal with them differently, and we just started using templates because all the compilers we use finally support them in a similar enough way that they're usable. I suppose technically these are problems with the implementations rather than the language itself.
  2. Undetectable number errors. How many times have you done x-- on an unsigned type only to find that you "decremented" it from 0 to 4294967295, and everything went haywire? Doing this is completely legal and the only way to prevent it is to manually check for 0 before you decrement, and make sure you do it in a thread-safe way. PITA.
  3. Lack of memory checking. If you allocate fifty bytes and then access fifty-one of them, that's totally fine. Accessing that fifty-first byte may work, giving you random data, or it may crash. Writing that byte may work, overwriting some other variable and creating a terribly hard-to-find bug, or it may crash. Or even worse: it may overwrite some unused piece of memory, thus having no effect, most of the time (i.e. during development and testing) but then crash or overwrite memory occasionally (i.e. in customer deployments).
  4. Braces aren't required for if statements. (and while statements, and for statements) This is just asking for trouble. I've trained myself to see and fix things like this:
    if( condition )
    statement 1;
    statement 2;
    statement 3;

    and some editors and IDEs will automatically re-indent, making the problem obvious, but you can still miss them sometimes. In my code, I almost always put braces anyway, except for the occasional thing like this:
    if( condition1 ) continue;
    if( condition2 ) break;

  5. Named structures and typedefs are different. This has confused me for years. You can have a structure with a name, and also typedef it to another name, or you can typedef a structure without a name. For example, all of these are legal:

    // defines a structure called myStruct. You have to type "struct myStruct"
    // to use it
    struct myStruct {
    int a;
    int b;
    };

    // also defines a structure called myStruct, but you can use "myStruct"
    // as a type now. Or you can continue using "struct myStruct". The two
    // names do not have to be the same.
    typedef struct myStruct {
    int a;
    int b;
    } myStruct;

    // No different from the second example
    typedef struct {
    int a;
    int b;
    } myStruct;

    The second and third examples are exactly the same, though I remember having to go through a bunch of code and change typedefs of the third type to have a name after struct because the debugger (CodeWarrior, if I remember correctly) didn't understand them unless the struct had a name.

Monday, November 02, 2009

Halloween at Fern

Fern Resort is one of our favourite vacation spots. Is it as luxurious as a Carribbean all-inclusive or a Las Vegas casino resort? Well no, but the food is always great, the people are nice, there's lots to do, and most of all it's comfortable. We all know the place well enough and we feel safe enough there that we can give the kids more freedom than they're used to, which makes them happy. It also means that Gail and I have some more freedom as well. We've been there every summer but one in the last ten years, and our week at Fern is something we all look forward to all year. We also went once during the winter, which was also a lot of fun.

This past weekend we tried something new – Fern in the fall. They had a special deal on for Halloween weekend where both kids were free, and they were also discounting the prices by 10% or so, and because we've been there so often in the past, we get an "alumni" discount as well, so it ended up being quite reasonable. They also had some special Halloween things happening, including a costume contest, so Gail got quite excited about that and spent part of a couple of weeks making costumes for the four of us.

The middle of summer is obviously their busiest time, and that's when we generally go. When we were there in February a couple of years ago, we were amazed at how different it was when there were only about 70 guests instead of the usual 370 or so. This time, we arrived on Friday just in time for dinner and when we walked into the dining room, we were stunned by the number of tables set – maybe ten. We found out later that the actual count of guests for the weekend was 35. We asked how that compares to a normal Halloween weekend, and Mike the sports director said that they usually get around 100-120 people. He figures that the economic downturn is responsible for some of it, plus the fact that Halloween was on the Saturday night caused some people to stay home so they didn't miss trick-or-treating. The lack of people made things much quieter than we're used to at Fern. I think we might have been the only guests staying in the Main Inn - although that had its advantages too. We asked on arrival if one of the big suites was available and one was (I suspect that they both were), so they upgraded us. The fact that it was a suite was very nice, and while the balcony overlooking the pool would be great in the summer, we didn't spend much time (read: zero) there this time. There were a few programs that ended up being cancelled because nobody showed up, so the sports director and youth director had more idle time than they are used to. It seemed that our family and one other family were involved in the programs, but I don't know what the rest of the guests did all weekend. Other than bingo, the dance on Saturday night, and meals, we didn't see them at all.

One of the neat ideas they had was a pumpkin carving contest – there was a pumpkin on our table when we arrived, and we had all day Saturday to carve it in whatever way we wanted. They awarded three prizes: most humorous, most creative, and scariest. We brought a bunch of templates and idea books and such, but we ended up just drawing a face freehand. We alsoOur pumpkin checking out the kids menu forgot to bring all of our pumpkin carving equipment, so we had to borrow a steak knife and a couple of spoons from the kitchen. Gail had the idea of painting the pumpkin black so that the face would really glow when lit, so we brought some spray paint and after cutting out the face, we went outside and painted it on the grass (we'll have to check next August to see if there's still a black spot there). The small crowd worked to our advantage, as we won the scariest pumpkin award, which was announced at dinner on Saturday night. We were happy enough with bragging rights (though bragging rights among people you don't know aren't worth much), but the dining room manager came around and told us that our prize was a bottle of wine plus a chocolate monkey (an ice cream drink with chocolate and banana) for each of the kids. When we told them we didn't drink wine, they brought us a cocktail each – a Caesar for me (thanks for introducing me to those Jeff!) and a Smirnoff Ice for Gail.

The most popular non-food-related event was bingo, which happened a couple of times on Saturday and once on Sunday. Gail won a $5 gift shop voucher at one game, and Nicky won twice – his prizes were vouchers for Fern t-shirts.

We began brainstorming costume ideas a month or two ago, and the boys kept returning to Harry Potter. I half-jokingly said that one kid could go as Harry and one as Ron, I could be Dumbledore and Gail could be McGonagall. Gail thought about it for a minute and decided that it wouldn't be all that hard to make robes for us, so over the three weeks before Halloween, that's what she did (though she lost a week of that with a nasty cold). Saturday night after dinner we all got dressed and went over to Fireside (the building next to the Main Inn), where they had set up a haunted house / trick-or-treating area. About half of the rooms on the second floor had ghouls, goblins, or witches in them, scaring kids (and me in one case) and handing out goodies. Some of the goodies were your standard mini chocolate bars and such, but there was also some stuff from the bakery – some really good iced shortbread cookies and a big cupcake. Obviously the kids ended up with far less candy than on a typical Halloween, but they didn't seem disappointed. We were also fine with it, since we normally end up throwing out at least half of what they bring home because they forget about it by mid-November. Our wizarding family

After the trick-or-treating, they had a costume party and dance over at Mary Lou's, where Gail and I danced (I was very warm in the Dumbledore beard and hair, so I didn't dance much – and had to pull the beard down off my face to drink my beer), Nicky danced a little, and Ryan stood off to the side - he kind of wanted to dance but was just not able to pluck up enough courage to actually do it. He never actually said any of this, but I know that's how he felt because that's exactly how I would have felt when I was ten. The time came to hand out the costume award and once again, they had prizes for different categories. This time it was most creative, scariest, and overall best costume. Most creative went to "Mother Nature", a young girl who had stuck little paper butterflies and birds and (real) branches and leaves all over herself; a very clever costume. "Scariest" wasn't that scary but was also creative – a boy of about twelve who made himself into RoboCop with lots of cardboard, duct tape, and flashing lights. The award for best overall costume went to a strikingly handsome man dressed as Professor Dumbledore. (sigh) No, there wasn't another Dumbledore there, I am talking about myself. My prize was another Fern t-shirt voucher. I got the t-shirt (actually upgraded to a long-sleeved shirt) but Gail really deserves all the credit – she made my robes and hat (as well as the robes she wore), bought the hair, beard, and glasses, and even coloured my eyebrows – all I did was wear it. And as cool as my costume was, I think Gail as McGonagall was even better because she looked the part (though much younger) more than I did, and didn't hide behind a fake beard.

So we were at Fern from Friday dinner until Sunday lunch and won three t-shirts, $5, and a round of drinks. And we had great food all weekend, and stayed in the nicest suite in the place, and played some games (throwing eggs at the archery targets was particularly fun), and for all that we paid about 25% less than the normal price and the kids were free. A great weekend all around.

Thursday, October 29, 2009

Tool review: Microsoft Network Monitor 3.3

I have used Wireshark for packet sniffing and analysis for a number of years, starting back when it was called Ethereal. A little while ago I was using it to look at broadcast packets that our clients send out, and decided that it would be great if Wireshark could interpret our wire-level protocol and display meaningful information about the packets. After a bit of searching, I found that you can add plug-ins to Wireshark, allowing you to do whatever you want with the packet data. I found some detailed instructions on how to do this, beginning with:

  • Install a version of the Microsoft C/C++ compiler
  • Install a particular platform SDK
  • Install Cygwin
  • Install Python
  • Install Subversion
  • Get the Wireshark source
  • Configure the source
  • Build Wireshark

Once you're done all that, you can start looking at building your plug-in in C. I set up a Windows XP VM and spent a day or two doing all of this, but never got to the point of actually creating the plug-in. A few days later we had a team status meeting, during which I mentioned this project. A colleague, Peter, asked if I had looked at Microsoft NetMon, saying that he believed it allowed you to add your own parsers as well. I downloaded it and took a look. Thank you Peter, for saving me days, if not weeks of development time. In less time than it took me to set up the VM in preparation for writing a Wireshark protocol analyzer, I had analyzers written for the majority of both our UDP and our TCP protocols.

Writing parsers

As a packet sniffer, NetMon is not really much different from Wireshark, though I find the interface a little more intuitive. This might be because I'm running on Windows, and Wireshark has always looked to me like a Unix program that has been ported to Windows rather than an application written for Windows. They both support both capture and display filters. NetMon has colour filters as well – particular packets or conversations can be coloured based on the filter results. You can view packets as they are captured, save them to a file, and load them back in again later.

But writing a parser is orders of magnitude easier than writing a Wireshark plug-in. You simply tell it what ports your protocol uses and what the protocol looks like in a proprietary language (called NPL – Network Monitor Parser Language) that's vaguely C-like but very simple. Some properties of this language:

  • it handles bitfields, ASCII and Unicode text, and binary data, as well as various types of numeric values (8, 16, 32, or 64 bits, integer or floating-point, signed or unsigned, big- or little-endian)
  • you can define your own data types
  • there are a number of special data types built-in; if your packet contains a 32-bit IP address, for example, you can just specify it as IPv4Address and it will get interpreted and displayed as expected
  • you can make structs which group pieces of the data together, and arrays which hold collections of the same type of data
  • you use while loops and switch statements to modify behaviour. For example, your protocol might have a byte that indicates the type of packet, and then the structure of the packet depends on the value of that byte. No problem.
  • you can indicate both storage format and display format, so if you have a byte that's 0 for a request and 1 for a response, you can display the words "request" and "response" rather than just 0 or 1. The rest of the code can reference this value by name and get 0 or 1. The display string can be as complicated as you want, even referencing other pieces of the packet by name.
  • it supports conversations, and there are variables that have global, conversation, packet, or local scope

The help file installed with the app describes each of the language features, and I found a document that describes an example protocol in great detail.

Drawbacks

The biggest drawback of this tool is the parser editor. It's not very powerful – it makes notepad look feature-rich. I use Ctrl-Backspace (delete previous word) and Ctrl-Del (delete next word) a lot, since it's supported in Windows Live Writer, Word, and emacs, but support is spotty – sometimes it works, sometimes it deletes the wrong word.

The main feature it's missing is undo. It doesn't even have a single-level undo. If you hit backspace one too many times, you'd better remember what that last character was because it's gone. An editor that doesn't support undo is pretty much unacceptable in this day and age, and I lost data more than once because of it. Once you realize that you can't undo mistakes, you end up clicking Save a lot more often, and do things like copy the file to a backup file before you make big changes. I checked my files into source control and started checking them in periodically, which is a good idea anyway, but if the parser stuff wasn't so damn cool, the lack of an undo feature might be a showstopper. Emacs supports Ctrl-A and Ctrl-E to get to the beginning and end of the current line respectively, and sometimes I instinctively use those keystrokes in editors where they're not supported, like this one. Unfortunately, Ctrl-A here means "select all", so doing that and then typing something is disastrous because there's no undo, so you just lost your entire file. You need to quit the file (do not save!) and then reload it, losing whatever changes you had made. Even a single-level undo would save you from that.

The compiler has some problems as well – there were a number of times where I got compilation errors that were badly written or vague enough that I didn't know what the problem was. It would point to what looked like a valid statement and say that it was unrecognized or invalid, and it turned out to be because of a missing (or extra) semi-colon on a different line, or a language rule that wasn't obvious.

Once you've made the changes to your parser, you have to save it and then click "Reload Parsers", which reloads all 370+ parser files it knows about. Surely there could be a way to just reload the one that I changed? Now, there are dependencies between files, so changing one file might require that a different file be reloaded, so reloading them all is the safest but it's slow. Ideally, the tool should be able to figure out the dependency tree and only reload files that depend on the ones changed. And the tool should prompt me to save if I have an unsaved file and I click "Reload Parsers".

If anyone from the NetMon dev team reads this, here's a bug report: If I load a parser file, then paste some code into the file, it's not marked as "dirty" until I actually type something. Also, if I load a display or capture filter from a file, this generally means "replace what's in the textbox with the contents of the file", not "insert the contents of the file into the textbox at the current cursor position". I can see how that feature might be useful in combining filters, but it should not be the default.

As powerful as the NPL language is, there are things it simply can't do. In my case, some of our packets can be encrypted or compressed, but the NPL language can't decrypt or decompress them. It would be nice to be able to write a small plug-in that could do these types of things, but it's not supported. The Wireshark approach would work for that.

Experts

For those analysis needs that are not satisfied by parsers, NetMon supports things called "experts", which are external programs that can read the data from a capture file and analyze it in whatever way it wants. It sounds similar to a parser except that it's written in C or C++ (or C#, I think) and has the limitation that it only works on saved files, so you can't look at the results in real-time as you can with a parser. I've stared to write one of these to solve the decompression/decryption problem I mentioned above. There doesn't seem to be a way to decrypt the data and write it out into a new capture file, but I can at least decrypt, parse, and display the data. I can reuse the parser code I've already written, since the program is dealing with pre-parsed information, but I have to grab each field individually and display it, so I essentially have to rewrite all the display code in C.

Summary

Overall, this is a very cool utility and has replaced Wireshark as my packet sniffer of choice. The documentation is pretty thorough and it includes some good examples. If all else fails, the parser code for all the other supported protocols is right there. There is a help forum to which I've posted a couple of questions and gotten quick and helpful responses. I wrote a while ago about how cool Windows Live Writer is, so kudos to Microsoft for yet another cool utility.

Amazing stats of the day

Before their win over Anaheim on Monday, i.e. over the first eight games of the season, covering almost 485 minutes, the Toronto Maple Leafs had played with a lead for a grand total of six minutes.


The last time Mariano Rivera gave up runs in different innings in the same game was June 1999, and he has never done it in the post-season (ref: Ed Price). His career postseason stats are unbelievable:

Division Series: 34 games, 51.1 IP, 0.35 ERA, 0.58 WHIP
League Championship Series: 30 games, 45.2 IP, 0.99 ERA, 0.83 WHIP
World Series: 20 games, 31 IP, 1.16 ERA, 0.97 WHIP.

Sure, he gets worse as the post-season goes on, but his "bad" is everyone else's "amazing". It's people like him, Andy Pettitte, and Derek Jeter that make it harder and harder to hate the Yankees. But I'm doing my best.

Tuesday, October 20, 2009

PMH 5K Run 2009

Last year, I participated in my first 5k run, and almost killed myself doing it. This year, I decided not to let that happen again, so I've been training since July. As a result, not only did I feel fine the day of and the day after the race, but I beat my time from last year by almost five minutes. I finished 5km in 27 minutes 18.5 seconds, a pace of 5'50"/km. I was the 458th person (out of 2552) to cross the finish line, though that's misleading because some people that finished ahead of me may have had a slower overall time. Unfortunately, that's the way they order the finishers, so in terms of absolute time, I don't know where I placed. I was 284th out of 930 men. They originally listed me as "Male under 24", so my ranking there is meaningless as well, but doing the math myself, 25 out of 87 men in the 40-45 group finished with faster times than mine (one beat me by over ten minutes). These numbers assume that most people are listed in the right groups, though Nicky and both of my parents were also in the wrong groups, so who knows.Me and the boys with our medals (staring into the sun) I've emailed the people who do the stats, and they have already replied saying they can fix them, so I'll check again before I post this and see if it's been updated. Update from next morning: They've moved me over to the right group, but some other things must have changed too, because now I'm ranked 30th out of 88 men 40-45. Whatever.

It turns out that I wasn't training quite as thoroughly for this race as I thought I was. I used my Nike+ iPod and it decided that the route was 5.49 km. Since I finished in 27'18", that gave me a pace of 4'58". I'm assuming the route was actually 5 km even, so I guess my iPod measures a bit long. It looks like those runs I did that were reported as 5.2 km weren't even five and the 4.4's were probably about four. The iPod reported after the race (with a message from Lance Armstrong!) that this was my longest workout to date, which means that none of the runs I did in practice was as long as the real race. Apparently the iPod gives you the ability to recalibrate it, so right after the race I should have selected "Calibrate" and then told it that I had just run 5.0 km, but it's too late now. Sometime in the near future, I'll have to drive around the block and measure exactly how long it is, and then run it and do the recalibration. Regardless, it was close enough that it didn't really matter. I wasn't in pain at the end of the race – I even had enough left in the tank to increase my pace (not quite sprint, but I definitely ran faster) over the last 50 metres or so.

This year Ryan and Nicky joined in the fun as well (Gail was away at a scrapbooking weekend). They walked the course with my parents and finished in about an hour. They seemed pretty excited about being part of the team, and having special t-shirts, and the sensor on their shoe, and especially getting a medal at the end (Nicky said that the 5K on the medal means that it was 5 karat gold).

To all of those who sponsored me, a huge Thank You! I raised over $300 myself, and our team raised over $3000 for gynecological cancer research at PMH.

Monday, October 19, 2009

I Believe in Our Saviour, The Brian

So the Leafs haven't started the season so hot. In fact, they can't really be any colder than they have been. Every part of the team is having troubles, and word on the street is that this is the worst team in the league, which means that the Leafs might have sent Boston a first overall draft pick in exchange for Phil Kessel. There's been a lot of talk about some of Burkie's deals, and the fact that he is so obviously building a team full of fighters and tough guys. But surely there's a method to his madness: his teams in the past have always had tough guys protecting his skilled players and allowing them to do their job. Nobody was going to run Teemu Selanne because they knew Chris Pronger or Brad May or someone would be on top of him in a second. This gave Selanne a little extra space, which he used to his advantage. That's the strategy that Burke is using in Toronto as well – get a bunch of tough guys to protect the skilled players. Of course the problem is that there are no skilled players to protect. That's why Colton Orr is only averaging 7 minutes a game – he's got nothing to do, so he's always hanging around Phil Kessel's house.

But if you are planning on purchasing a fifty-karat diamond, wouldn't you get the state-of-the-art security system installed first? You're not going to buy the diamond and then leave it on the kitchen table until the security system gets installed a week from Tuesday. You make sure that the security system is in place and working flawlessly before you go pick up the diamond. So when Phil Kessel returns and Burkie trades Lee Stempniak, Jason Blake, and a third round pick to Washington for Alex Ovechkin, he's already got the protection in place.

Of course, that trade isn't going to be quite that easy. Might have to bump the draft pick to a second-rounder.

Please note that this article might be one of the only ones written this season about the Leafs and Brian Burke that didn't use the word truculence once. Go me.

Saturday, October 17, 2009

Top Ten Rock Cover Songs

I had fun putting together the list of Top Ten Rock Instrumental Songs a little while ago, so I decided to do it again. This time, I'm listing artists that took a good song and did an great cover. Again, these are in no particular order.

  1. Manfred Mann's Earth Band: Blinded by the Light. The Springsteen song is all right, but Mann's cover blows it away. I wrote about this song a few years ago.
  2. Dream Theater: Funeral For A Friend / Love Lies Bleeding. I love the original Elton John version as well but Dream Theater's live version on "A Change Of Seasons" is excellent. They also do a great version of Deep Purple's Perfect Strangers.
  3. Aerosmith: Come Together. They didn't make vast changes to it, but they managed to make it sound like an Aerosmith song. If only we could forget the terrible movie it came from.
  4. The Ataris: The Boys of Summer. Make no mistake, the Don Henley original is one of my all-time favourite songs, but I really like this cover. Weird – a one-hit-wonder band, and the one hit wasn't even their song.
  5. Creedence Clearwater Revival: I Heard It Through The Grapevine. The original is a Motown classic, but the CCR version is a rock and roll classic – eleven minutes long with a number of guitar solos.
  6. Van Halen: You Really Got Me. I was a huge Van Halen fan back in the 80's, and now whenever I hear the Kinks original, I just think "how lame". Van Halen actually did a number of pretty good covers in the David Lee Roth days (i.e. back when they were good) – Where Have All The Good Times Gone (more Kinks), Dancing In The Streets, Happy Trails, Ice Cream Man, You're No Good, Big Bad Bill, Oh Pretty Woman.
  7. Metallica: Turn The Page. I'm a fan of Bob Seger, and this is one of his best songs, but Metallica's version kicks serious ass.
  8. The Tea Party: Paint It, Black. Of all the bands to take a song with a sitar in it and do a cover without one. They just made it a straight-ahead rock and roll song and did a great job.
  9. Queensrÿche: Scarborough Fair. Can a hard rock band take an acoustic Simon & Garfunkel song, add distorted electric guitars, and make it their own? Yup, turns out.
  10. Faith No More: War Pigs. I really prefer Faith No More's version of this song to the original, though admittedly I'm not a huge fan of Ozzy or Black Sabbath. Faith No More also did a cover of Easy by the Commodores, but rather than doing a Faith No More version, their version sounds like the original.

Runners-up: U2: All Along The Watchtower, John Mellencamp and Meshell Ndegeocello: Wild Night.

Honourable mention: Seether: Careless Whisper. Started off as a joke during a concert, but they did a good enough job of it that the fans loved it, so they actually recorded and released it. Cool song.

Monday, October 12, 2009

iPod Meme Redux

I originally did this a few months after getting my iPod. Revisiting two years later. Old values that have changed are stroked out. Shortest and longest songs, and first and last artist and album have not changed. I've added over 850 new songs.

Attention facebook readers: You might want to click the "View original post" link at the bottom of this note to see it as I originally wrote it. Facebook sometimes messes up the formatting.

 

How many total songs?
6919 songs, 20.9 days, 41.79 GB
7773 songs, 23.4 days, 46.55 GB

Sort by song title - first and last
First: A by Barenaked Ladies
Last: 99% Of Us Is Failure by Matthew Good
Last: 999,999 by Nine Inch Nails

Sort by time - shortest and longest
Shortest: You to Me (0:04) by Bystander
Longest: Octavarium (24:00) by Dream Theater

Sort by Album - first and last
First: "Abacab" by Genesis
Last: "90125" by Yes

Sort by Artist - first and last
First: AC/DC
Last: 54-40

Top five played songs:
1. Fake It by Seether - 18
2. Be Yourself by Audioslave - 17
3. Found Out About You by Gin Blossoms - 13
T4. Like A Stone by Audioslave - 12
T4. White Shadows by Coldplay - 12
T4. High Class in Borrowed Shoes by Max Webster - 12
T4. Elderly Woman Behind The Counter in a Small Town by Pearl Jam - 12
T4. Emotional Rescue by The Rolling Stones - 12

Find the following words. How many songs show up?
Sex: 6 21
Death: 4 59
Love: 239 327
You: 535 822
Home: 42 48
Boy: 34 56
Girl: 60 80

First five songs that come up on Party Shuffle
1. Cesaro Summability by Tool
2. White, Clean and Neat by Robert Plant
3. Local Hero by Bruce Springsteen
4. Resist [Live] by Rush
5. Gimme The Love by Junkhouse

It looks like I've added a lot of "death" songs, but most of them are actually album names - "Death Magnetic", "Live After Death", "Life, Death, Love, and Freedom" (and the corresponding live album "Life, Death, LIVE, and Freedom") , and "Viva La Vida or Death And All Of His Friends". There are only 6 actual songs with "death" in the title.

Similarly, 15 of the 21 "sex" songs are on "Blood Sugar Sex Magik" by the Red Hot Chili Peppers and don't have "sex" in the song title. There are only 6 songs with "sex" in the title, and two of them are "Sexy Sadie" by the Beatles (on different albums). I guess I'm just not that into sex. No wait, what I mean is... it's not that... um.... <blush>

Wednesday, October 07, 2009

European coaches in the NHL

Back in the 70's and 80's, there were only a handful of European-born or Russian-born players in the NHL, a few Americans, and a ton of Canadians. You had your Borje Salmings and your Peter Stastnys and your Jari Kurris but it wasn't until the late 80's and early 90's (after the breakup of the USSR) that you really started seeing a lot of Russians and Czechs and Slovakians and such in the NHL. So over the last twenty years, there have been hundreds of European-born players in the NHL, and many of them have had long playing careers. Some have even made the Hockey Hall of Fame.

So where are all the European coaches?

Former players moving on to coaching is commonplace: of the thirty current NHL head coaches, twenty of them played in the NHL at one point. (In case you're curious, the ten that have not are Paul Maurice, Ken Hitchcock, Peter DeBoer, Todd Richards, Jacques Martin, Barry Trotz, John Tortorella, Cory Clouston, Todd McLellan, and Andy Murray.) But not one of the thirty current NHL head coaches was born outside of Canada or the US.

Are Europeans simply not interested in coaching at the NHL level? Are they being discriminated against somehow? I don't have any insight or opinions as to why this is happening, but I think it's an interesting question.

Tuesday, October 06, 2009

Goodbye J.P.

J.P. Ricciardi was fired the other day as Blue Jays GM, which I am happy about. Ricciardi's reign as GM resulted in no World Series victories, no playoff games, heck, not even anything close to playoff contention. His time had come, and the Jays now need to rebuild and go in a different direction. But that's not to say that Ricciardi was a terrible GM. Here's a list of his best and worst moves, and I'll list my personal favourites (in both respects) below. Note for the record that I wrote well over 2/3 of this article before finding that link, so I'm not just summarizing it.

Ricciardi certainly made some bad moves. He negotiated an expensive contract for Alex Rios, then allowed Chicago to claim him on waivers, getting nothing back. He signed Reed Johnson to a contract and then released him a month later, only to replace him with Shannon Stewart, who got injured and released within a couple of months. He paid both B.J. Ryan and A.J. Burnett a ton of money – each had one great season and a couple of not-bad ones. He also released Ryan and Frank Thomas with a lot of money left on their contracts.

But he also made some good moves. Bringing in Overbay was a good move. He got Jeremy Accardo for Vinnie Chulk and the grumpy Shea Hillenbrand. He grabbed Matt Stairs, Joe Inglett, Scott Downs, and Rod Barajas off waivers. He traded two players I've never heard of for Marco Scutaro. Trading for Glaus was good, but then he wanted out. So Ricciardi turned him into Scott Rolen. Then Rolen wanted out, and he got a couple of young pitchers for him. He drafted Hill, Marcum, Litch, Lind, and Snider.

Some players didn't work out (Royce Clayton, Tomo Okha, Victor Zambrano), but they were cheap anyway. Just about every pitcher spent time on the DL, but that's not Ricciardi's fault. In fact, I'm surprised there wasn't an investigation of some sort into the Jays' pitching coaches at that time.

You might notice that I did not include the Vernon Wells deal in the list of bad moves. You can't deny that Wells hasn't earned his eleventy gazillion dollar contract since it was signed three years ago. OK, so he hasn't even come close to earning it. So from that point of view, this is a terrible deal. But nobody complained about the deal when it was made because Wells was coming off a couple of great seasons and looked poised for lots more. Three mediocre and injury-filled seasons later, it seems obvious that Wells is not the superstar we all thought he was at the time. He's simply a very good player that had a couple of great seasons. Should Ricciardi have seen that coming? Maybe, but nobody else did. If instead of signing Wells he had traded him or let him go, he would have been ridiculed endlessly (which he likely doesn't care about) and not taken seriously by other GMs (which he likely does). He had little choice but to sign Wells to the contract and hope that he wasn't a flash in the pan. Oh well.

Ricciardi was touted as the next Billy Beane, an expert in the whole Moneyball concept, and should therefore be able to bring a winning team to Toronto without increasing the payroll astronomically. This was key because the Jays play in the same division as the rich Yankees and Red Sox, who have no trouble outspending the rest of the league, and seem ready to sign any and all free agents regardless of the cost. But eight years later, what did Ricciardi whine about the most? "We can't win because we don't have the payroll of the Yankees and Red Sox. I don't have enough money to do what we need to do. We can't win in this division without increasing payroll." Um... isn't that why we hired you and not someone else?

I think Ricciardi's biggest problem was that he didn't know when to shut up. Every time there were trade rumours, Ricciardi was right there telling everyone who'd listen who he was offering, who other teams were offering, what deals didn't happen and why, and so on. He would talk to the media and tell them whether certain players were interested in re-signing after their contracts were up, even if the players hadn't come to a final decision yet. That's the kind of stuff that does not need to be published. He publicly questioned Adam Dunn's work ethic and passion for baseball. Even if he was right (and I have no reason to believe he was), you don't say stuff like that. When rumours started flying that he was shopping Roy Halladay at the trade deadline this year, Ricciardi didn't deflect attention and didn't refuse to comment – in fact, he talked on and on about it, and even gave a meaningless "deadline" before the real trade deadline. In so doing, turned the thing into a media circus. On the day of the deadline, the FAN was doing minute-by-minute reports on whether or not Halladay was still a Blue Jay. Then there was the thing with B.J. Ryan, where Ricciardi knew that Ryan required Tommy John surgery but told the media that the injury wasn't that bad. When the truth came out and he was called on it, he famously said "They're not lies if we know the truth", which simply told everyone that they couldn't trust anything he said.

Having said all that, Ricciardi wasn't the worst thing ever to happen to the Jays. No, they never made the playoffs during his time, but at least he didn't turn the team into a laughing stock (lookin' at you, John Ferguson Jr.). They only finished last in the East once, even made second place once, and finished above .500 for four of the eight seasons Ricciardi was here. He took a mediocre team and turned them into... a mediocre team. There were times over the past few years that the Jays had the best hitting team in baseball, and other times where they had the best pitching staff. Unfortunately those times never coincided. He didn't leave the team in total shambles – there are certainly some players that can figure prominently in the Jays future plans. They have some good young hitters, a really good bullpen, and if all the injured pitchers return next season (OK, that's a big "if"), they could have an excellent rotation (how does Halladay, McGowan, Marcum, Litch, and Romero sound?). As I said before, Ricciardi has proven that he's a pretty good baseball guy and I'm sure he'll land on his feet somewhere. In any division other than the AL East, he might even be successful.

Monday, October 05, 2009

Sarah's Story

SarahIn the four and a half years that I've had this blog, I've written over six hundred articles (and trust me, nobody is more stunned by that number than I am). Most are about sports, technology, music, movies, and my family, as well as the occasional article on things like religion and politics. None of them are as important as this one. If you are only a casual reader of this blog, regularly skipping articles about subjects that don't interest you, I implore you to read this one to the end.

I first met Cindy Marshall in 1994, when her sister Kerri married my friend (and best man at my wedding) Jeff. I don't know a lot of my friends' siblings, but Cindy and Kerri (and their parents) are very close, so you can't know one without knowing the other. Cindy had her first child, Sarah, in February 1997, and Kerri had hers, Rachel, in June. But the fact that both children were girls and both were born in the same year is just about the extent of the similarities. Rachel's most significant physical problem is that she needs glasses. Sarah, on the other hand, had surgery before she was born, has had a number of surgeries since then, and has been close to death more times than I care to remember. The fact that she is still alive has been called a miracle.

Part-way through Cindy's pregnancy, a routine ultrasound showed that the baby's bladder was enlarged. Upon further examination, doctors discovered that it wasn't draining properly, so she underwent two surgeries (called "bladder taps") in-utero. At this point the doctors thought there was an obstruction of some kind and believed that it was a relatively mild problem. Sarah was born five weeks early on Valentine's Day 1997, and weighed less than five pounds. She wasn't yet two days old when she had her first major surgery, an attempt to repair her twisted bowel. Immediately following the surgery, her appendix ruptured and had to be removed – the first of a number of organs to be removed from Sarah's tiny body.

After three more surgeries in two months looking for bowel obstructions, Sarah was diagnosed with "megacystis microcolon intestinal hypoperistalsis syndrome". In a nutshell, her bladder was enlarged, and her intestines were pretty much non-functional. Sarah spent the next five months at Sick Kids hospital in Toronto. She was started on TPN (Total Parenteral Nutrition), which means that she was fed completely intravenously. This is not a big deal for adults – many adults can live on TPN for years – but it's very hard on an infant's body. It kept Sarah alive, but at a price – within a couple of months, it destroyed both her liver and pancreas. She already needed a bowel transplant, but now she needed a new pancreas and liver as well. In May, Cindy was told that Sarah's only hope was a multiple-organ transplant and she was placed on the transplant list. At that time, no child as young as Sarah had ever survived such a transplant. I don't know if Cindy knew that then.

Rock climbingSarah's life expectancy during this time varied, but was usually measured in months or even weeks, and at times much less. I remember being at a gathering at Jeff and Kerri's house in Newmarket (for Jeff's birthday, I believe) when the phone rang. The call was from Cindy at the hospital, basically saying "You better get down here now", and Jeff and Kerri immediately grabbed their coats and left. I was standing right by the front door as they left, and as long as I live I will never forget the look on Kerri's face. The party broke up shortly after they left as we all contemplated what was likely to happen that night. Thankfully, Sarah made it through that night and a number of others like that before something both terrible and wonderful happened – another infant died.

I feel like a monster for even using the word "wonderful" in a sentence describing the most painful thing that could happen to a parent. But on what must have been the worst day of their lives, the parents of the child who lost his life (all Cindy knows about him is that he was a ten-pound baby boy) made a decision that saved Sarah's – they agreed to allow their child's organs to be harvested for transplant. Sarah was flown from Toronto to Children's Hospital at the University of Western Ontario in London and at the age of 5 months 24 days, she received a new stomach, pancreas, liver, and bowel. In addition, both her gall bladder and spleen were removed. The date of the operation was August 7, 1997, a day that Sarah and her family and friends still celebrate as "Life Day".

The transplant saved Sarah's life, but it hasn't all been roses since then. She spent the next five months in the hospital in London before finally coming home for the first time at the age of ten months, and to this day returns to the hospital regularly for treatment and checkups. Transplants are funny – the body can live with a transplanted organ for years, even decades, and then suddenly decide that it's a foreign body and needs to get rid of it. As a result, Sarah has to take several different kinds of medication every day to avoid rejection, and will for the rest of her life. The medication has serious side-effects as well. She never crawled as a baby because she simply didn't have the strength and needed help on stairs until the age of four or five. Sarah is a full foot shorter than her cousin Rachel (who is younger by four months), and despite being twelve years old, she weighs less than 60 pounds. She has very thin arms and legs with little muscle. She loves to dance and has been taking dance classes for years, partially because she enjoys it and partially to help her build up her strength.

Not only did the operation save Sarah's life, but it was special in a number of other ways as well – it was the first pediatric multi-organ transplant in Canada, and only the second ever with those four organs. Sarah became the youngest multi-organ transplant recipient in history, and has a certificate from the Guinness World Record people to prove it.

Sarah and her brother Austin Despite all the hardships she's had to deal with, the surgeries, the medication, the procedures she still has to have done every day, all the trips to the hospital in London (did I mention that she lives in Cobourg, about 300km away from London?), Sarah remains a happy, bubbly, delightful little girl. She doesn't have the physical strength to do things that other kids do, even some much younger than her, but I have never once heard her complain about it. Now don't get me wrong, she gets grumpy now and again like any other kid. And Cindy has probably heard her complain on numerous occasions, but note that I said "I've never heard her complain". Seriously though, Sarah is almost always smiling, she loves having her picture taken, she adores her baby brother Austin, and she's just always fun to be around. She's spoken at public events about her experiences, and has been interviewed for a number of magazines. You may remember a Wal-Mart TV commercial a couple of years ago, where a number of people said "I was one", "one" being a child whose life was saved at children's hospitals. The little girl at the end who whispered "I am one" was Sarah.

Like all of my friends who know Sarah, Gail and I have signed our organ donor cards and quite honestly, other than having religious beliefs prohibiting it, I cannot think of one compelling reason not to. If Sarah had not had her transplant, she would almost certainly have died within a year of her birth, and those of us who have gotten to know and love her over the last twelve years would have been deprived of that. I signed my donor card so that I might be able to help others have a similar experience. Please sign yours.

Sunday, September 27, 2009

Nike + iPod

As I mentioned recently, I'll be running in the 5K Your Way run in October (feel free to sponsor me!) like I did last year. Last year I expected to walk and ended up running the entire thing, but I was in pain for several days afterwards, so this year I decided to train for it. I started in May, as soon as the weather got nice. I chose a path that's about 3-3½ km long, and started out by alternating walking and running – I would walk for 90 seconds and then run for 60. The idea was that you do this for a week or two, then gradually increase the amount of time you were running until you were finally running the whole thing. I found that this plan didn't work very well – I found that I hated the running part and while running, looked forward to when I could walk again. Then when my walking time was up, I though "Oh crap, I have to run again". One time when I was out, I decided "Ah screw it, I'll just run the whole thing" and I did. My legs hurt a little for a while afterwards, but I preferred just running to alternating, since I didn't have to keep checking my watch and I didn't have the dread of having to start running again. I took a break in July when we went to Scotland and then tried to get back into it when we came back, but was having trouble getting motivated. I was well into baseball season at that point, and I didn't want to run hard enough that I couldn't play my best. Not that I'm an all-star ball player or anything, but I wanted to contribute whatever I could to the team, and taking myself out of a game in the fifth inning because I couldn't run anymore wouldn't be much of a contribution. But then my birthday came, and everything changed.

I went up to my parents' place the weekend after my birthday, and when it came time to open my gifts, they gave me two little boxes and told me to open the top one first. I opened it and it was a thing called Nike + iPod, which is a little sensor that you put in your shoe that communicates with a thing you attach to your iPod, and it tracks how fast and far you run and uploads that data to the nikerunning.com website so you can keep track of your runs. Very cool, but right on the box, it said "Requires iPod Nano". My iPod is a 80 GB 5G, but I thought that maybe Trudy (who has an iPod Classic similar to mine) had done some research and found that it works with my iPod as well. Nicky, sitting beside me, grabbed the second gift box and said "Maybe this is an iPod Nano!"  I gave a little chuckle and said "maybe", not for an instant thinking he was right. Of course, he was – it was a beautiful silver Nano.

I don't wear Nike shoes. I've had Nikes before and they never seem to fit my feet properly. But the Nike+ sensor is supposed to go into a little cut-out inside some pairs of Nike shoes, so I had to improvise by stuffing it under the insole in my Reebok's. It was a little uncomfortable at first, but I got used to it pretty quickly. It's amazing how much this little thing has changed my workout patterns. I started running once or twice a week, and found that my legs quickly adapted, and while they would be sore for an hour or two after the runs, I was still able to play baseball and didn't suck any worse than I usually do. By the end of August, I was running at least twice a week, and my distances were growing as well. I don't think the sensor was completely accurate for me (perhaps it slides around under my foot and that affects its distance calculations) – Google Maps thinks my original route is about 3.9 km, but Nike+ has recorded it as anywhere between 4.3 and 5.48 km. I did run a little further than normal on the second one, but not a full kilometre and a half. I recently bought a Shoe Pouch for the sensor that fits on top of the shoe, which works very nicely. The distances are more consistent now so I end up trusting them more.

The device itself is very cool – you can tell it you want to work out over a predetermined distance or just keep running until you say stop. Then you pick a playlist and say "go", and it starts recording and playing the playlist. When you're done, it tells you how far you ran (or walked – it can tell the difference), how long it took, your average pace, and how many calories you burned. You can also choose a "power song", which it plays if you press and hold the center button down. The idea here is that if you need some inspiration, you can play your favourite pick-me-up song whenever you want. The next time you sync your iPod, it will update your Nike+ account.

The Nike+ site is pretty Flash-heavy but slick, showing each run you recorded, when it happened, and how long you went. It will also show you a graph of your pace throughout the run, with a little mark at each kilometre point, as well as whenever you pressed the centre button during the run (which updates you on how far you've gone and how long it's been) or played your power song. It keeps track of your fastest mile (7'30"), 5k (21'31" – though I think that was based on the 4+ km run I did that it recorded as 5.48, so it's unreasonably low), and 10k (none... yet), as well as your total number of workouts (15), kilometres (61.50), length of time (5:20:49), calories burned (4989), and average pace (5:13/km). You can set up goals (i.e. run 10 times within 4 weeks (which I just completed the other day! Yay me!), or run some number of total kilometres in so many weeks), or join challenges, which are competitions in which you join a team of people with something in common (could be men vs. woman, or something like fans of different baseball teams) and add to the total for your team.

I hooked up the Nike site with my facebook account so whenever I sync my iPod, it updates my facebook status with the results of my latest run (eg. "Graeme ran 4.41 km on 9/25/2009 at 11:37 AM with a pace of 5'20"/km"). I did this with the idea that if I broadcast to everyone whenever I run, I have some accountability. If I skip a week or run shorter than usual, everyone will notice. Of course nobody will really notice – nobody's paying that close attention to my running patterns. But it still sticks in my mind when I'm thinking of cutting a corner or taking the shorter path, "people are going to see 3.8 km instead of 4.4 and think I wimped out, so I'll take the longer route". And I do, and I end up glad that I did. Amazing, the power of peer pressure, even imagined peer pressure.

If you are a runner, or want to be, I highly recommend the Nike + iPod. Not only is the Nano a slick little piece of hardware, but the Nike+ part is very motivational. Well, not really motivational, but it certainly makes it more fun. I ran 5k once last year, and that afternoon I couldn't walk down a flight of stairs. The next day I had to work at home. I was in pain for three or four days. I've been training with this thing seriously for only about a month, and last week I came within 1 km (4.53, 5.2, and 4.4 km, a total of 14.13km) of doing the 5k run three times in five days.

Thursday, September 24, 2009

Help make cancer history

In October of last year, I participated in the 5K Your Way run, part of the Toronto Marathon, to raise money for cancer research at Princess Margaret hospital. Princess Margaret was where my sister Trudy went for her cancer surgery last year, and thanks to their early diagnosis and subsequent surgery, she is now cancer-free. Obviously this is a very important cause for me, so once again I'm looking for donations for this year's event. Last year, our team raised over $6000, of which I personally raised $480. My goal for this year is to surpass both the amount we raised and to beat my running time from last year. I have been training most of the summer, so I should be able to run the 5k race and climb up and down a set of stairs on the same day.

Any donation you can make is very much appreciated. Click here to visit my personal page where you can sponsor me. Don't forget to click "Go To Team Page" above the lovely picture of me and Trudy and check out the list of team members and a picture of all of us from last year's run – you can even sponsor my kids or Trudy directly if you'd prefer.

To those who do sponsor me and those have done so already, thank you very much for helping Princess Margaret hospital in their quest to eliminate cancer in our lifetime.

Tuesday, September 22, 2009

Alan Turing

Sorry, I'm a little late to the party on this one. After reading an article written by my colleague Glenn Paulley, I decided to write about it as well, mainly because Glenn's blog and mine have different audiences. The story he writes about (and I'm about to cover) is both tragic and infuriating; I wouldn't call the ending "happy", but it's certainly the best that could be expected under the circumstances. Note that this is not a technical article at all. It is about a computer scientist, but it's mainly the story of a man.

If you've never studied computer science or cryptography, you have likely never heard of Alan Turing. Computer Science students don't learn much about Turing the man, but you can't study computer science for long before coming across his name. He was a brilliant mathematician and cryptanalyst who not only developed some of the most basic fundamentals of computer science and artificial intelligence, but helped to end World War II. Turing was one of the scientists who worked at Bletchley Park, and was instrumental in breaking the German "Enigma" code, among others. Turing was awarded the OBE (Officer of the Order of the British Empire) for his work during the war.

Turing also happened to be gay, which was illegal in Britain at the time (and remained so until the late 60's). Only seven years after World War II ended, Turing was arrested, charged, and convicted of gross indecency. As a sentence, he was given a choice: chemical castration or prison. He chose the former, and was given estrogen treatments to attempt to kill his libido. This was successful, but also caused Turing to grow breasts. His security clearance was also revoked, thus ending his employment with the government. In 1954, two years after his conviction, Turing committed suicide by eating an apple laced with cyanide. There are some that say that his death was not a suicide at all, but accidental. Regardless, the death of this brilliant man at only 41 years of age was a tragedy.

In late July of this year, a British computer scientist named John Graham-Cumming started an online petition asking the British government to apologize for the treatment of Alan Turing. Within weeks he had several thousand signatures and on September 10th, British Prime Minister Gordon Brown issued an official apology to Turing.

Congratulations to John Graham-Cumming on getting this done, and kudos to Gordon Brown and the British government for doing the right thing and apologizing for the appalling treatment of Alan Turing.

Saturday, September 19, 2009

Balsillie vs. Bettman, Round Two

So it's down to the NHL vs. Jim Balsillie now. Should the NHL be allowed to own of one of its own teams? I would have imagined that the league owning a team would not be allowed, though I suppose MLB owned the Expos for a short while. The really weird thing about this – scratch that. One of the really weird things about this is that the NHL has publicly stated that if they win the auction, they will consider moving the Coyotes out of Phoenix.  I beg your pardon? Isn't that one of the main reasons that they refuse to let Balsillie into the club? They keep saying that an NHL team can be successful in Phoenix (despite the fact that it hasn't been in fourteen years), so why would they need to move them? And if they're not against moving them, what's the problem with letting Balsillie do it?

The NHL has stated that the other main reason that they're so dead set against Balsillie is because of his supposed "lack of integrity". Right. Because NHL owners are just packed to the gills with integrity. Here is an article listing five former NHL owners who have spent time in prison, and that doesn't include the recently-convicted Boots Del Biaggio.

But even if the NHL wins the auction, then what? The number of season tickets sold in Phoenix for this year is in the hundreds (compared to the twelve thousand plus for the Leafs), they'll have the same trouble finding sponsors and selling advertising that the previous owners had, and they've stated that they may move or sell the team. Jim Balsillie is the only one currently interested in buying the team. So the league will spend well over a hundred million to buy the team, lose millions of dollars operating the team, and then either move it anyway, or sell it at a loss. That's a lot of money to spend just to spite Jim Balsillie. And if they end up selling it to Balsillie anyway, it will all have been for nothing.

Stephen Brunt said on Prime Time Sports the other day that if the NHL loses this auction, Gary Bettman's days as commissioner are numbered, and he's probably right. Which means that Bettman is gambling not only hundreds of millions of dollars of the NHL's money, but his job as well. Is keeping Balsillie out of the ownership club really that important?

As much as I would love to see an NHL team in Hamilton, I can't say I support the way Jim Balsillie has done this. His tactics have been heavy-handed and he's certainly not making friends of the other owners nor the league executive. Would an NHL team work in Hamilton? I think so. There are enough hockey fans in this area, plus there would be lots of people from the Guelph-Cambridge-Kitchener-Waterloo area that would come, not to mention all the GTA people who can't get Leafs tickets. I found it amusing a couple of years ago when a group of people who wanted to bring an NHL team to Hamilton proposed boycotting pre-season NHL games in Hamilton to "send a message" to the NHL. Good thinking guys – show the NHL how wrong they were by allowing them to hold a pre-season game here to an empty arena. The next time they're considering expansion or moving a team, they're not going to remember a boycott, all they're going to remember is playing to an embarrassingly small crowd in Hamilton and quickly scratch the name off the list.

Opponents of an NHL team in Hamilton point to the lack of interest in the Hamilton Bulldogs as proof that the NHL won't work here. But that's a faulty argument, and here's why.

I am a Hamilton resident who would be interested in watching and supporting a Hamilton NHL team but isn't interested in the Bulldogs. I'm sure the Bulldogs are full of talented young players, but honestly, they're a farm team. The whole idea of the team (and the AHL in general) is to give the players experience and get them ready for the NHL. It's really hard to get pumped up for a team whose players would leave in a heartbeat if they get a call from the big club. You can't blame them for that – getting to the NHL has likely been a dream for every one of the Bulldogs players since they first laced up the skates as a child. The AHL is mainly made up of three types of players: those too young or inexperienced to be in the NHL, those who simply aren't good enough to be in the NHL, and those who have had a taste of the NHL but were the lowest on the totem pole when it came to sending someone down. But the NHL is the pinnacle of professional hockey, containing the best players in the world. Any way you slice it, the quality of players in the AHL is lower than in the NHL. Doesn't mean that AHL games can't be exciting – as long as two teams are roughly equivalent in skill level, you can have an exciting game at any level. But if you combine the lower skill level with what I said before about players bolting the second they get the chance at an NHL team, I cannot see how the argument can be made that a city that doesn't support the AHL won't support the NHL.

Thursday, September 17, 2009

Top Ten Rock Instrumental Songs

I'm only going to list instrumental songs by artists who primarily perform non-instrumental work, otherwise I could sit here all day listing Eric Johnson and Joe Satriani songs. There are in no particular order.

  1. Rush: YYZ – one of the first instrumental songs I remember from when I started really paying attention to music in the early 80's, and still stands to me as the quintessential rock instrumental song.
  2. Alice in Chains: Whale and Wasp - Combines a beautiful acoustic guitar (the "whale") with the occasional screeching electric guitar (the "wasp"). Listening to this song was the inspiration for this list.
  3. Triumph: Fingertalkin' - An outstanding acoustic guitar piece by Rik Emmett, one of the best guitarists in any genre. Too bad it's on what was probably Triumph's worst album, "Progressions of Power".
  4. Metallica: The Call of Ktulu – The opening sounds like two guitars playing together, but it's only one. If they replaced Orion (also an excellent song) and Leper Messiah on Master of Puppets with this song and Creeping Death, Puppets would be the perfect metal album.
  5. Linkin Park: Session – the sole "electronic" entry on this list, complete with record scratches. In general I'm not big on this kind of stuff, but this song is very cool.
  6. Rush: La Villa Strangiato – over nine minutes long, and features some amazing guitar work from Alex Lifeson. I still think he's the least musically talented member of Rush, but he ain't no slouch either.
  7. Steely Dan: East St. Louis Toodle-oo – Somebody cranked the wah-wah pedal up to eleven for this one.
  8. Pink Floyd: One of These Days – Technically shouldn't qualify because there are lyrics – right in the middle someone says in a very distorted voice "One of these days, I'm going to cut you into little pieces". But David Gilmour plays some pretty sweet slide guitar.
  9. The Tea Party: Winter Solstice – two acoustic guitars and someone tapping on what sounds like a wooden block. Some of the fastest strumming you'll ever hear.
  10. Porcupine Tree: Wedding Nails – Kick-ass guitar over a driving bass / drum beat.

Runners-up: Songs that I had listed originally but then I kept thinking of more.

  • Sarah McLachlan: Last Dance
  • Metallica: Orion
  • The Tea Party: The Badger
  • Yes: Mood For A Day

Monday, September 14, 2009

Not too distracting

We're having some work done on the building I work in. This was the view from my office for part of today.

WorkerOutsideWindow

Saturday, September 12, 2009

Useful Windows Tools

Every year, Scott Hanselman posts a list of tools that he uses. After reading this year's list, I decided to do my own. Why? Because I have many thousands of readers like he does? No. Because some of my readers are techies and would find the list useful? Well, maybe a couple of them. Because those readers who are not techies might find it interesting too? Not bloody likely. The real reason is the same as the reason for the majority of the rest of my postings: just 'cause.

Work Tools

  • 4NT – I use a zillion batch files at work for doing all kinds of repetitive tasks – anything I need to do more than once, I write a batch file for. The Windows batch file language is pretty lame, so Sybase has a site license for 4NT as a command shell replacement and it's so much more powerful than the Windows one. I don't think you can get 4NT anymore, but the latest version is called Take Command. Some people at work are using that but I'm still on 4NT. Not for any nostalgic reason, just because I can't be bothered to change it. Windows 7 will ship with a thing called Powershell which is supposed to be pretty good, but I can't imagine rewriting all the scripts I already have.
  • ActivePerl – I actually prefer writing python code to perl, but if you're doing anything involving string manipulation or regular expressions, you can't beat perl. Over the last couple of years I've rewritten a  lot of my 4NT batch files in perl.
  • ActivePython – One of our testing tools at work uses python so I've been writing a lot of python over the last few years. I thought the whole whitespace thing was crazy at first, but as long as you have a good editor (see emacs below) that knows about that stuff, it's not so bad.
  • emacs – We don't use an IDE at work, so most developers use either emacs or Watcom vi (since we used to be Watcom). Many are switching over to vim rather than vi. I can use vi and did for many years, but I usually use emacs.
  • Thunderbird for both email and news. Our company uses Lotus Notes, but I gave up on that years ago. I used Outlook for a number of years and it was OK, but now and again it would get into a state where it wouldn't download any emails but wouldn't give any errors either. I switched to Thunderbird and have been happy ever since. A few add-ons make it complete:
  • VMWare – we have a VMWare server set up on a big kick-ass machine in the lab, and I have a couple of VMs that are running 24/7 on that machine. One is running XP and I use it for network stuff as well as NetWare development (so I don't have to install all the NetWare stuff on my laptop), and the other runs 64-bit Vista. I used to use actual physical computers for this type of stuff, but this is just so much easier and more convenient. Even from home, I can remote desktop into them and even reboot them.
  • Remote Desktop – comes with Windows, but I had to mention it. I use this all the time for connecting to test machines, our build machines, and my VMWare VM's.
  • TightVNC for those older (Win 2000) machines that don't support Remote Desktop, we use VNC. I also have a VNC server set up on a unix machine, so I can use VNC to connect to that and get a Unix desktop on my Windows machine. There are lots of VNC clients / servers available, but I've found TightVNC gives pretty good performance, even when I'm at home (and therefore using wireless networking through a VPN).

Blogging

Web surfing and websites

  • Google Chrome – I've been using this pretty much exclusively since about May, and I still love it. Still fast, and it has a bookmark editor now. It periodically and silently updates itself so you always have the latest patches. Once XMarks is available for Chrome, it will be perfect.
  • Firefox – I still use Firefox now and again for sites that Chrome doesn't support. Actually, I can only think of one. We recently started using a tool at work for code reviews which has a web interface that doesn't play nicely with Chrome, so I use Firefox for that. Required add-ons:
    • XMarks for synchronizing bookmarks. I don't use bookmarks all that often anymore (I usually use delicious.com), but XMarks will also synchronize stored passwords, which is very useful.
    • AdBlock Plus
    • Gmail Notifier – puts an icon in the bottom corner of your browser with your current unread count.
    • NoScript
  • GMail is the best web-based email around. I get almost no spam that isn't marked as spam, and being able to tag messages with multiple tags (rather than put them into one and only one folder) is amazing. Being from Google, the search feature is also very good, and filters let you do clever things with messages as they arrive. For example, every time I publish a blog posting, I have it emailed to my gmail account. A filter then tags it with the "BlogArchive" tag and archives it without me even seeing it, so I have a backup of every article.
  • Google Reader for reading blogs and other RSS feeds.
  • StackOverflow – programming Q&A site. Very useful for learning stuff and getting questions answered, but it's fun to try and answer questions as well. Rather humbling sometimes, when I see a question and think "I know how to do that!" but before I post my brilliant solution, I read another answer saying "You could do this <my solution>, but that's inefficient (or slow or dangerous or...). Here's a better way" and proceeds to explain something that is clearly superior to my idea. There are also serverfault.com (for IT pros) and superuser.com (for general computer questions) as well as meta.stackoverflow.com (for questions about SO itself), but SO is still my favourite.
  • delicious.com – I rarely ever save bookmarks through the browser anymore, I just use delicious. Far easier to type now that it's delicious.com rather than del.icio.us.

Music and Video

  • iTunes – Gail has a Sony Walkman MP3 player and uses Windows Media Player to set up playlists and stuff. iTunes is just so much easier. It makes it easy to view any MP3 tags on your songs, and also makes it easy to select multiple songs and change attributes of all of them at once. You can set it up to detect a new CD being inserted in the drive, automatically rip it and add it to your library, and then eject it, so you can rip new CDs and sync them to your iPod just by putting the disk in the drive.
  • Videora iPod Converter converts (hence the name) video files from whatever format they're in into the appropriate format for your iPod, and automatically adds it to iTunes as well. Very handy for downloading TV shows that you missed. I have a dock for my iPod that connects to the TV, so we can watch stuff through the TV rather than on the iPod or computer.
  • CDBurnerXP – Windows Vista has built-in CD burning support, but I prefer CDBurnerXP. It gives you the whole drag-and-drop interface for selecting files, tells you how close you are to filling the disk as you add stuff, makes it easy to erase rewritable CDs / DVDs, writes both audio and data CDs as well as data DVDs, it does everything.

General Utilities

  • Jungle Disk – backs up all of our digital pictures and stuff online using Amazon's S3 service. I paid $20 for Jungle Disk originally, which gives me free upgrades for life, and I can install the software on as many machines as I want. I pay Amazon directly for the S3 storage, which for me is under $5 a month. (I wrote about this last summer.) The data is fully encrypted and the encryption key is not stored on the Amazon servers. Restoring is even easier – set up a network drive and just copy whatever files you want.
  • DropBox – you install the (free) software on multiple machines and point each of them at a directory on a local drive, and the software keeps the directories synchronized. To copy a file from one machine to another, just drop it into the DropBox directory and it's instantly copied to whatever other machines are synchronizing. Couldn't be simpler. There's even a web interface so you can access your data on a machine that doesn't have the DropBox software installed. I use this with...
  • KeePass – for storing and generating passwords. I created a KeePass database file in my DropBox directory on my work machine and it keeps track of my eBay, Paypal, Twitter, Linked In, banking etc. passwords, plus my router's WPA key. DropBox then syncs the file with my DropBox directory at home. I can change a password in either place and it gets synced with the other. When I set my password for a site, I use KeePass to generate a random password, then I modify it in a way that only I know and store that. I also have a text file in my DropBox directory that holds the unmodified passwords, in case I need a password in a place where I can't install KeePass. When I double click on the entry, KeePass copies the password into the clipboard so I can paste it into the browser. KeePass automatically clears the clipboard after 15 seconds so I don't accidentally paste it anywhere else later.
  • FileZilla – The best GUI FTP client I've used. I don't do much with FTP; updating my lacrosse pool website is about it, but FileZilla makes it easy.
  • Foxit Reader – got this one from Scott's list above. I got tired of Adobe Reader continually getting bigger and bigger. All I want to do is read PDF's, I shouldn't need tons of software to do this. Plus I kept hearing about security problems with Adobe.
  • µTorrent makes downloading torrents brain-dead easy. Set up the directory where the downloaded files should go, then whenever you click on a torrent, it just does the right thing. It even stays in the background and does everything silently.
  • Microsoft Money – Microsoft is killing this product, which sucks because the alternative is Quicken, which I tried earlier this year and wasn't too impressed. I have a pretty old version anyway, so as long as it keeps working, I'm fine.
  • IrfanView – the best application for image manipulation. Allows you to specify a directory full of image files and do a batch rename/conversion/both, which is useful for taking 10 MP images and scaling them down for displaying on a family website, for instance.
  • QuickTax – I buy this every year during tax season. Asks you all the relevant questions and fills in your forms for you, or you can enter stuff directly if you want. Gives you tips on saving tax, copies relevant data from last year's forms, can print out the forms, and can give you all the information you need to submit electronically. Well worth the $40.