Tuesday, November 29, 2005

Election Called Jan. 23

After getting pwn3d by all three opposition parties in the House of Commons, Paul Martin's Liberals have been defeated, and he has called an election for January 23rd. He was quick to blame the opposition for forcing an election. Shame on you, Martin! It is the government's responsibility to maintain others' confidence in it, not the opposition to keep it in power long enough for you to go on a spending binge to garner public support as a lead-in for an election.

Sadly, this is a futile effort. Small gains or small losses scattered about, but we'll still end up with another minority government (probably Liberal, but we'll see how things go). The one most likely to gain: the Bloc! Great, a party whose mandate is separation, and until then, rampant provincialism, benefits from this election.

As a note: I can vote! All Canadians can vote, with the exception of the two key electoral officers. Even convicts! For those of you out-of-country, read up the rules for special voting, get on the special ballot list ASAP! Any citizen out-of-country can vote, as long as you've resided in Canada at some point (ever!), intend to return eventually (sure!.... eventually.........), and have visited sometime in the past five years (even as a stopover on a flight!).

Now of course, who to vote for?
Well you should consider many things, including the history, platform, and performance of the candidate themselves, and also for their parties, and leaders.

Here, some useful links for the parties. Candidates and leaders are up to you.
Liberal: website, CBC description, latest platform, founding principles, issues page
Conservative: website, CBC description, 2004 platform?, founding principles, issues page
NDP: website, CBC description, issues page
Green: website, 'living' platform, founding principles

Obviously, you can't vote Bloc unless you're in Quebec. Your area may have other parties or independent candidates, and that's up to you to figure out. Marijuana party anyone? Most areas have independent candidates too, and considering the independents determined the outcome of the 2005 budget, they certainly should not be discounted as wasted votes.

The Green party may well even be an option. While they didn't win any seats, they did garner significant votes last election, and if they're going to get a seat, now is the time! Plus, one has to respect that their policy document is a Wiki that can be edited and commented on.

I personally respect any informed voting decision, and applaud any open debate on voting issues. As for my personal opinion, I'm torn on Liberal or NDP. The Conservatives, while having a nice policy on paper, in general has pro-life and anti-gay MPs (in particular, the Conservative candidate for Waterloo last election). Neither affect me in the slightest, but they'd seriously bone some friends of mine! The Conservative-Bloc cooperation scares me too - I believe in Federalism, plus I'd like to keep Quebec around. Liberals (thanks to Martin) are already plenty conservative on economic policies (big business tax cuts etc) so Conservatives can't get points there from me. In general, I identify myself mostly as a Liberal: very centrist.

But really, while I'd like to vote Liberal, I can't deny that Martin recently has been playing rather shady political games to garner support. I never liked the guy, though this session has increased my respect for him: he's held things together admirably up until now. He passed some important measures, and was willing to put in the effort to make sure important issues were resolved.

NDP has earned tons of my respect. They've done deals, quite openly, trading their support for passing key portions of their platform. This is exactly what an opposition should be doing, rather than whining and bitching all the time and trading political blows like Harper. But, as a party, I've seen the utter devastation that the provincial equivalents left behind in Ontario and BC. Plus, I tend to fear the effect of unions with excessive power. And, in the end, I doubt that setting overall policy, that they could actually afford all of their platform.

So it comes down to the party whose conduct I respect, and the party whose platform I support. Tough call.

Feel free to post your opinions (especially counter-opinions) on the comments. I'll quote any particularly good ones in another blog post sometime.

Monday, November 28, 2005

Mike November FAQ

I've been asked the following questions recently about my move and my thesis. Over and over and over again. So, here are the answers, so that it's all answered at once.

Q: When are you leaving for Microsoft?
A: End of December, early January. I've not decided on an exact date, nor where I'll be for New Years. No, I'm not going to be in Singapore for Christmas - I'll likely be in Burlington with by Aunts and Grandma for a couple of days on each side of the 25th.

Q: Will you be finished your thesis by then?
A: No.

Q: So... what are you going to do... about graduating?
A: Change my status to part-time, finish my thesis while working in Seattle.

Q: You're never going to get it finished out there!
A: Well I'm not going to get it finished here, so I don't have much choice do I? Yes, I realize I'll be busy at Microsoft. Yes, I know it'll be hard to stay motivated. I'll just have to tough it out and make it work.

Q: Why don't you push back your start date?
A: It's already pushed back as far as I could manage. At this point, I'm contractually obligated to be there by Jan 16th, and subject to huge penalites if I don't work for at least a year.

Q: What are you doing at Microsoft?
A: I'll be working as a developer on the engine for Microsoft's anti-* (likely antivirus) team.

Q: When will you be back next?
A: Don't know. Likely sometime in the first 6-8 months, I'll come visit Waterloo. Vancouverites can expect visits sooner and more regularly.

Q: What about PhD?
A: I've never planned to do a PhD. I've not yet built enough interest to dedicate 3 more years to it. I could if I wanted, and may consider going back to it later. Yes, I know that isn't all that likely to happen.

Heh, so now you all know.

Tuesday, November 22, 2005


First, no this isn't the censored immigration post. That's still censored, and I'm starting to realize it was a wise choice. Especially considering what I've pondered today: really makes one realize how frustrating the other side can be.

My true complaint for this week (heh, all it seems that I ever do here is complain) is the United States Oath of Allegiance from which I quote.
I hereby declare, on oath, that I absolutely and entirely renounce and abjure all allegiance and fidelity to any foreign prince, potentate, state, or sovereignty of whom or which I have heretofore been a subject or citizen...

All naturalized candidates for US citizenship must declare this. This means that you give up your citizenship. For me, this would be my Canadian and British citizenship (the former by birth and current passport, the latter by bloodline). Of course, people immediately bring up two points regarding the Canadian citizenship
  • Nothing actually forces you to give up your citizenship.
  • You can just give it up and reapply later with your birth certificate.
Neither work. While it's true that Canadian citizenship revocation requires you to formally file a renouncement in Canada, the fact that you haven't, and/or still take advantage of Canadian citizenship counts as a violation of your oath! While traditionally this is not enforced, they could (and are more likely to in these times) revoke your US citizenship for this. The latter, also not true. If you renounce your Canadian citizenship, it's gone! If you want to get it back, you have to go through the same process any American would, which could be quite time consuming. So, you either have to give up Canadian citizenship for a long time, cheat the system (even if it's implicitly accepted by most), or forego US citizenship.

Sadly, for me the option is obvious. I am Canadian, and I would never give that up. Nor am I inclined to cheat: I've seen what the US does to those without citizenship to guarantee them those pesky 'rights'.

What's the next step down? Green card. Opinion varies as to the difficulty, but even with an advanced degree, you're the second priority down (and I may even end up as the third category!). Plus, it prevents you from ever having TN status (the 'easy' work visa for Canadians) ever again, being the only infinitely renewable work visa. But, say you get it. You have to maintain US residence for 6 months of every year! I'm sure there's loopholes, but it sure doesn't allow for much hedging. Especially with H1B being a 6 year cap.

On the downside, I like permanent things, and it would seem that US status will never be truly permanent for me. Though on the upside, not thinking about US citizenship will open up my path to start on my British (and therefore EU) passport! That will be far more exciting and less stressful.

Trivia: Did you know, that only those born in 1983 or later could receive British citizenship through their mother? If you were born in 1982 or earlier (like me), you could only receive British citizenship through a British father. Oh yeah, and your parents have to be married, or it's no dice.

I'm rambling now, just figured you'd like that.

Night night!

Wednesday, November 16, 2005

The Art of Project Management: How to Make Things Happen

Well, I was going to post an opinion piece about immigration in Canada today. However, reading it over, I think I'd lose a great many friends if I posted it, so instead I'll go for a nice safe topic.

Hey, look! A safe topic. Safe topic, go get it boy! Fetch!

This Slashdot article has an interesting free chapter from a management book. The points are very interesting even to me as a non-manager. It's a bit of a read, but worth it if you ever have to deal with people. Go! Go read!

Wednesday, November 09, 2005

Accountability in Engineering

I hate capitalist droids.

The capitalist world has thoroughly crushed the engineer. The engineer is made to believe he's only a technologist. The MBAdroids of the world will manage them, the accountants will make sure the money adds up, and some liberal arts student will deal with the customers, because engineers couldn't possibly consider money issues or deal with people.

They're desperately trying to forget the purpose of an engineer.

First, let me define what I think an engineer is, purely from my own perspective:
An engineer applies scientific principles towards practical, ethical, and safe solutions to real-life problems, and is accountable for the decisions made by this process.
There's several aspects to this definition:
  • Scientific principles. Best practices don't apply. An engineer must not know just that it works, but must understand why it works, because otherwise they cannot possibly foresee how it will not work.
  • Practical. An engineer must consider reality. Unimplementable solutions and theories are irrelevant. This also implies an engineer must be aware of monetary concerns, and tradeoffs between cost and the other aspects here.
  • Ethical. An engineer is responsible for making ethical decisions, and this trumps other concerns such as monetary constraints. This is critical for the trust of engineers to create critical systems.
  • Safe. An engineer is responsible for protecting people, both their lives and their well-being, trumping monetary concerns. [an interesting followup: which is more important? ethics or safety? would you lie and cheat to save lives? or must there always be a way to reconcile the two?]
  • Real-life problems. Engineers must do something useful for people.
  • Accountability. Here's the crux of it - we must trust engineers to make techology safe for us to use, and they must be held responsible for their choices. I'll delve deeper into this for a bit.
But the problem is, business droids hate this! They'd rather have a technologist. They'd rather define it as: "An engineer applies technology to solve a problem". They don't like the ethical and safe part, because they have their own forumulas to describe these things. Like I always say: to an MBAdroid, everything is uniquely described by its dollar value. They'd rather use their little risk forumas and try to balance the cost of lawsuits, no matter what the moral cost. They'd rather not have any accountability at all, and instead plonk it straight in the laps of end users.

Of course, engineering only exists because the law doesn't allow certain industries to do this. If you build a building, you can't just have a sign saying "we waive all resposibility if the building falls and kills you". If that building falls, the ones who designed and build it will be held accountable. Period. Engineering specifically makes sure that there are people who are qualified to say it won't fall down, and an engineer has to put his or her personal reputation and livelihood on the line on every decision they make. This is also why engineers have gargantuan professional insurance. If a doctor botches an operation, it's one life. An engineer designs a plane that crashes, hundreds die.

But, since capitalism has grown in power, the droids have taken over. Engineering is devalued because no company would dare admit that accountability comes back to it unless the law requires it. "We explicitly disclaim that this product or service will be suitable for any purpose anytime anywhere anyhow." It's the mantra of the lawyers, covering the business people. Nowhere is this more true than software.

But accountability does not imply absolute responsibility. This is the key point that people miss. And something I finally understood when talking to Tina about criminal liability. In summary, in law there's three main ways to categorize liability, transated into the current context.
Absolute: If something goes wrong, they're liable. Period.
Strict: If something goes wrong, they're liable, unless you can PROVE (yes, onus on the defence) that you either were missing some relevant knowledge (not negligently of course), or that you knew it was a possibility but tried to prevent it.
Criminal: You're liable if something goes wrong, and you intended it to go wrong, or were negligent in allowing it to go wrong.

For the most part, companies these days will only barely admit being responsible for criminal liability, and in software in particular, they vehemently argue even that! They just want you to give them money, and they rent you some bits. If those bits don't work or fail, well too bad for you. Of course, software companies are looking to avoid the opposite: absolute liability. Any liability, they'd argue, is absolute liability. If there was a bug, they'd be sued out of existence, and software has lots of bugs, so that won't work.

But what about strict liability? If something goes wrong, then it's on your head, unless you can show that you tried to prevent it or were misinformed. The idea being that this provides the ideal excuse to set up the "chain of accountability". Yes, when the big business boss signs the release that ships that product that kills a bunch of people, he's personally responsible for those deaths. But he says, "but no! My trained and licensed engineer gave me this report which said my product was safe to release!" This is fine - the boss genuinely believed it was safe based on the engineer's evaluation, and engineers are licensed specifically to be able to say those things! Then eyes fall on the engineer to be liable for the deaths. "But no," cries the engineer, "I did all this math, and these drawings, and measured it twice, and left a safety factor of six in there just in case!" In which case, the engineer genuinely believed it was safe, and assuming there was no negligence, they determine it was a bona-fide accident and move on.

Let me describe three scenarios where this works well. The first two where accountability is already in place, then I'll move to a third scenario to show how it would apply to software.

1. The World Trade Center. It's a building. Structural engineers by law had to sign off on it. But planes hit it, it fell, and thousands of people died. Are they liable?
Well, head of the project isn't. He had engineers, and followed their advice (I assume). There's to this day little evidence that the engineers were incompetent, so management's off the hook. The engineers: are they responsible, for not accounting for this possibility? Well, no. Because (and I admit, this is just rumour) apparently the designs for the towers DID take into account the possibility of a plane hitting the towers. However, planes were smaller at the time. Even so, it took quite the calculated act of malice, planes larger than existed at the time, and even then some damned tragic luck, to bring those towers down. That they even had a chance is a testament to the genious of the architects and engineers involved.

2. The Columbia disaster. NASA has some of the world's brightest engineers, yet a shuttle exploded on re-entry, due to wing damage that had occured earlier during liftoff. In this case, first we look to the mission commander. Was the shuttle safe to send up? Perhaps. Perhaps not. Under a criminal liability, it would be fine to send it up as long as there wasn't any direct evidence of an immeidate problem. For strict, as long as the engineers involved were confident in sending it up, the commander is off the hook. But here, we must look to the specific manager, who, having been presented knowledge that the shuttle had been damaged during launch, ordered them to return anyways. If he acted on the advice of his head engineer, he'd be off the hook. If he acted without advice, but thought it was safe, he'd be strictly liable, but not criminally. However, this pathetic management droid acted contrary to the (apparently very demanding) insistence of his engineers that the safety of the mission was at stake (presumably ignoring the advice for political and budgetary concerns ie. number of successful mission on his record). In this case, he'd be criminally liable, and even by the slackest of standards should be in jail.

3. Now, lets apply the example to software: particularly, software security. The latest web server release from a company has a security flaw. This gets exploited by a worm, takes down 100 web sites, and costs about $50M in lost business. Naturally, in real life, the company wouldn't be liable for a cent, and it'd be done. But what if they were? Criminal liability wouldn't be much of a standard, because it'd require them to purposely put it there, or find it and ignore it. Still, this ALREADY would be better than the status quo, punishing companies that purposely quash vulnerability postings rather than fixing the fault [*cough* Oracle *cough*]. What about strict liability? If there's a security flaw, you're liable. BUT, you can defend yourself. You have a software engineer that specializes in security. Did he sign off on the code? Yeah? He signed off on the design too? Good! Well big boss is off the hook, the ball is passed to the security engineer. The security engineer shows the results of his audit, demonstrates that he approved the design, and added precautions for places he expected there could be problems. Company is off the hook, and all it took was one engineer to sign off. If there was no such engineer, or that engineer didn't do his job well, then sucks to be them, they owe a bill. Absolute liability would be too much I admit: no matter how much you try, if it breaks, the company is liable. That's obviously too high a standard, but it's a scenario software people would use to build fear in you.

I actually need to revise this third scenario. There's a a first step: the one who deployed the web server! He's not just 'using' it, he's taking the creative act of making a web server, using software as a tool. Therefore, if a server spreads a virus, the ADMINISTRATOR of that server may be somewhat responsible!

In my ideal world, pretty much any manipulation of software beyond basic operation would transfer liability to the one performing that act. This would be a key point for open-source, where hobbyist authors obviously can't hold liability on their own, and would transfer the onus to whomever compiled it from source. A risk to the poor Linux enthusiast, yes, and one of the potential downsides of this scheme.

On the plus side, it would be an effective business model for open source companies: sure, the source is free, but our distribution is certified for task x, y, z, meaning your ass is covered. Of course, a licensed engineer could always certify it for free, assuming he's competent. Even if he's not, there's always their professional insurance.

If we had this sort of accountability in each engineering field that doesn't already have it, those fields would be much better off, and I don't think it'd be that harsh a burden - all a manager would have to do to save his butt, every time, would be to listen to an engineer licensed in the correct field. That's why we have licensing for engineers to the first place. And more to the point, the business droids would HAVE to listen, because otherwise it'd be their own necks sticking out. So engineering would again be glorious and respected, the public would have much better technology at a slightly higher price.

Of course, the business droids don't want that, because they don't want accountability, or to abide by ethics, safety and the law except where it directly impacts the corporate bottom line. They prefer the engineers to be technologists, because then they can ignore their annoying science and logic, but not have to take any risk by it.

Thus the engineer remains neglected. I hate capitalist droids.

Update 2:

My school barely emphasized our professional responsibilities at all. I think this is a fundamental failing in our curriculum.

Eamon, on the other hand, says his profs in many courses mention professional obligations regularly at University of Victoria. These are things that up and coming engineers should be thinking about! Why the hell does Waterloo Computer Engineering think their students don't need to consider these issues?

Civ4 Part 2: Multiplayer

I've just finished my first multiplayer game of Civilization 4. Me and Dan won a domination victory on an inland lake map.

My opinion of the game has increased a hundred-fold. The game truly is designed with multiplayer in mind, and played flawlessly through the game me and Dan played. This game for multiplayer is 100x the game Civ3 Conquests ever was.

First off, it works. Connectivity is flawless, even through NAT and firewalls. It's stable too; no out-of-sync, only the occasional delay waiting on players, and we ran through an entire game in three sessions. Only one crash, but it was Dan's end, and he crashes in most games. Even at endgame, while our computers and network were definitely earning their keep, the game was certainly quite playable.

Second, it's polished. Gamespy lobby works perfectly. Even loading works well - you get to choose which slot to fill in the game loading, and you can set a password to prevent others from choosing to resume your empire! Game resumes perfectly without a hitch. Even better, during Dan's only crash, it brings up a VOTE, asking whether the players want to save, and whether they want to quit, or continue. Yes, a savegame at the very instant of the crash. Hurrah!

Third: teams. We play co-op mostly, and teams just make it so much better than Civ4. No more "finding each other" and "calling techs". If you're in a team, you're in a permanent alliance through the game. Automatic open borders, tech shared (current research is also listed in the player list, communciation shared, visibility shared, even wonder benefits shared. War status shared, which can be a pain at times, but probably makes sense. Even victory conditions shared, so the co-op team can actually win as a team.

In Civ3, we never actually FINISHED a game successfully, so we never even considered victory conditions.

One observation though: the game seems very tuned to space race victories. Even with me and Dan basically in a constant (always victorious) war from the middle ages onward, it was still 60 turns to finish when we got a domination victory. We never really slowed down for anything; it was a constant push around the loop, and us never getting pushed back. The other forms of victory seem rather far-fetched unless you're planning for them from the start.

While I stand by the fact that there's definitely both usability and actual bugs that need to be addressed, they seem to pale now in comparison to the joy that is actually playing and enjoying the game. I can't wait to make Civ4 a regular experience again.

Tuesday, November 08, 2005


I've been negligent lately. I need like a Lownwulf blog version of the Slashback - covering another sweet caffeine product, round 2 with Civ4, and of course, finally review that router.

But I saw something crazy today. Google's stock (GOOG) up past $390 a share! A market cap of over one hundred BILLION DOLLARS US! Seriously. What could you buy for $100B? You could buy a cheap second-hand car for every living person in Canada. You could pay my yearly salary and benefits for over one million years.

About the only thing you couldn't do with $100B would be buy Microsoft. Their market cap is $288B. Which isn't surprizing - through control of Windows, they already have the entire world in a stranglehold. Oh yeah, and an 18 year headstart to boot! Though even so, it certainly puts Google outside the range of Microsoft to just buy out to eliminate a threat. Think, you're worth so much that Microsoft can't buy you out. Now that's rich.

But is a company whose main revenue comes from text ads really worth that much money? Who knows, but considering I started my first internships during the dot-com crash, I bet you can guess my opinion on the matter.