Monday, December 26, 2005


I have returned from the magical and windy land of Burlington, back to mine resting place in Kitchener. But fast a grand battle approaches, with Murphy staring straight into mine eyes, daring me to assume something may possibly go right.

So yes, this Wednesday, the movers show up. I point, they pack. In the end, I should be reduced to a suitcase, some carry-ons, and my trusty laptop. Then, I live out of a suitcase anywhere in Ontario that will take me; likely right here in Kitchener, though there's talk of a Warcraft marathon at Jae's too :D

This will continue until Monday, where I will fly out to Seattle, move into a temporary place, and start the slow grind towards a solid and stable life. I start work on Monday January 16th.

Yes, I can come to Vancouver. Maybe I can even come to see you. Maybe you can even come see me. If Microsoft ever assigns me temp housing. I will be reachable at my current cell phone number for the foreseeable future, so just call me there. I have no idea how long I'll have internet for, so don't rely on that for now.

In other news, I have had my first paper accepted, at the Engineering of Autonomic Systems Workshop 2006. I'll be presenting in Columbia, MD, somewhere in April 24-28th. I'm pretty excited about my first refereed publication ("Constructing an Autonomic Computing Infrastructure Using Cougaar"). We'll see if they dismantle my ideas in a workshop as quickly as the reviewers dismantled my flimsy excuse of a paper.

Merry Feast of the Winter Vale, and a Happy New Year!

Saturday, December 17, 2005

English Leader Debate 1

In perhaps my longest ever session watching CPAC (and they have no commercials! when is a man supposed to take a bathroom break!), I watched the 2 hour English leader debate held yesterday in Vancouver. This followed a French debate the day before, which was apparently a bit more timid.

While I don't necessarily have a perfect memory, here's a few of the issues that may be relevant to readers here.

Western alienation: How do you deal with the western provinces feeling left out or without a voice in Ottawa? Well Harper says that's what the Senate is for (regional representation), and insisted strongly that he would make the Senate elected instead of appointed. Martin instead said he tries to keep the West involved by appointing high-profile cabinet positions from the West (eg. Ujjal Dossangh (sp?)). Layton just said that NDP MPs could represent the West in the HoC. And Duceppe of course with your standard "The West wants in, Quebec wants out", emphasizing that Quebec has plenty of influence, but still wants to leave.

Tax break: Huge surplus = time for tax break. Martin thinks the best way is through an income tax cut, while Harper thinks a GST cut would be more effective. In general, the income tax cut would likely mean more $$ for working Canadians than a GST cut, but not help those at the low end of the scale as much; one example being the disabled woman with no income who asked the question. Heh, for you students out there, GST cut for the win. Duceppe wanted to exempt certain items from GST, which the others thought would be expensive administratively. Also, Layton hammered on the issue of the Liberal's corporate tax cut, which were blocked by the NDP last year, and came back to the table just before the election - Martin wasn't commenting on it at all, and preferred to switch the topic as quickly as possible to the personal income tax topic.

Gay marriage: Harper wants to have a free vote on it, but wouldn't use the notwithstanding clause to enforce it. Martin basically says the Charter is clear, and therefore Harper can't possibly enforce his party's predominent view of traditional marriage. Duceppe and Layton both supported gay marriage, plus rather sarcastically reminded people that the issue was already voted on and resolved in a free vote, so why are we still debating. Though I find it a little hypocritical that Duceppe would say that there's no need to revote on decided issues; how many referendums have we had in Quebec so far?

Voting/accountability: Harper keeps singing about some "Federal Accountability Act", while Layton keeps talking about the "Ed Broadbent report". Both want fixed election dates, and the latter (though not mentioned in the debate) also proposes a move to mixed proportional representation. Layton was eager to prevent MPs from switching parties (but they could still go independent) without first having a byelection, Harper just wants to prevent the Liberals from buying off his MPs but doesn't want to go as far as Harper. Martin just sang his own praises for the Gomrey commission, while Duceppe emphasized how much money Martin has taken away. Pretty much all of them were eager to limit contributions from unions and companies, and limit individual donations to parties to small values, though it strikes me that this was really a process started by Chretien's Liberals (and I have trouble believing Martin likes it, he's quite the big-spending corporate fundraising dinner lackey, or at least he used to be).

The rest of the discussion, while exciting and all, didn't highlight any serious platform differences and were just taking shots at each other for votes. All four were very good speakers, though Layton in particular had a tendancy to abuse timelimits and was cut off several times, and his opening and closing speeches were a bit too memorized.

Next round is in January, and they should be quite interesting indeed!

Sunday, December 11, 2005

Chronicles of Narnia

Saw The Chronicles of Narnia: The Lion, the Witch, and the Wardrobe last night. 5/5! A+++++! Excellent ebayer! Would buy from again. [heh, considering how obviously they've engineered this for a six-cap, I'm sure the next movie will be up soon ;) .]

I'll be the first to admit it's been about 15 years since I made it through the famous books from C.S. Lewis. But, from limited memory, it seems to be a fairly accurate rendition of the tale. The acting was stellar from everyone involved, from the child actors that played the four siblings, to veteran Liam Neeson as the deep majestic voice of Aslan. The professor was interesting - would have almost sworn it was Jim Carey (having watched the garbage that was A Series of Unfortunate Events); except in this movie, the professor was actually played well. The CG was pretty good - perhaps not as convincing as Lord of the Rings, but as believable as a talking beaver couple ever is.

While still a children's story, definitely worth watching for any age, especially if you read the books as a kid. Watching the movie, you might find some interesting hidden parallels that you missed when you were younger.

Thursday, December 08, 2005

Electoral reform

Heh, time to switch away from the engineering-centric content for a bit, and onto some more interesting topics. Or so you think, until I thwack you with a giant mathbat! (you won't see it coming...)

Electoral reform is an issue that I'd personally like to see addressed by the next party to rule the country. It's been something that parties have been promising for years, but has yet to be seriously addressed at a Federal Level.

But what is electoral reform? Well, Canada, and most provinces, run on a single member plurality system, which basically says whomever gets the most votes in a constituency wins. The government is formed from each constituency's winner. Sounds good, right? If 20 people vote for Amy, and 10 people vote for John, Amy heads off to government on our behalf.

The problem is that the system breaks down pretty badly, especially when you have more than two parties involved. Let me give you a few examples.

Consider 3 constituencies, with 10,000 people each voting. First constituency votes 4000 Liberal, 3000 Conservative, 3000 NDP. Second: 4000, 3000, 3000. Third: 0, 10000, 0.
What are the totals? 8000 for Liberals, 16000 for Conservatives, 6000 for NDP. The Conservatives double the liberals for votes, but the Liberals get twice the seats as the Conservatives. The NDP gets nothing.

Now, consider 100 constituencies, and each votes 4000 Conservative, 3500 Liberal, 2500 NDP. With 40% of the votes, conservatives control all 100 seats, with the other parties getting nothing.

Consider a single constituency. You prefer NDP, then Liberal, and really don't want Conservatives. Now the media publishes an advance poll, showing the vote split 50% Liberal 50% Conservative. Who do you vote for? Likely Liberal, since you'd prefer the conservatives to lose, and know the NDP won't win. An advance poll has basically made you lie about your preference. What's worse, say the poll says that 98% of people are going to vote conservative. Why even bother voting if no matter what the outcome will be exactly the same? This basically means a well-manipulated poll can control who gets elected!

My final example: say you're a Green Party supporter. But say the Green Party candidate was going door to door, and kicked your dog when Spot went to sniff and say hi. Sadly, we cannot execute the candidate, plus it puts us in a dilemma. Do we vote for the mean guy who kicked our dog but whose party is our favourite? Or do we vote for a nice representative whose party policy is shady.

One may ask: if the system has so many issues why do we still use it? Well, it's EASY! Any idiot can see that 10 > 8, and therefore figure out who won. Most idiots can tick off a single box. Plus the system does have some other advantages, like its tendancy to produce majority governments in most cases.

Are there alternate systems? Yeah, plenty. And used in a lot of places too. One popular system is called runoff voting. Basically, it requires the winner to get a majority. If they don't, take the least popular guy off the ballot, vote again. Sometimes with another full vote, or often just making a ballot that lets you choose your "second" choice so it can be done automagically.

One close to home: Single transferrable vote (BC-STV). A proposed replacement to SMP in BC legislature, that missed its 60% provincewide support target in a referendum by only 3%. Variants of the system are already in place in Australia and Ireland. Basically, you make the ridings approximately 3 times as large, and they elect up to 3 (normally, depends on riding) MLAs per riding. A voter ranks the candidates in order (1, 2, 3...) up to however many they want to rank. You could only rank candidates from one party, spread it out across multiple parties, etc. If your first choice candidate won't get elected, your second choice candidate gets your vote, etc. Once your first choice gets enough votes to be elected, any extra votes go to the second choice to help them get elected.

Of course, there's plenty of others.

Now if only they'd choose one. Choose ANYTHING instead of SMP.

PS. Interesting page from an SFU site.

Monday, December 05, 2005


I've added Google Ads to the blog. Pretty neat. Takes about a day, all told, to get going. Sign up is only a few minutes, a few hours to be approved, and another several hours if you've not already been crawled by Google, for them to index you and choose ads for you. There's a ton of different layouts you can try out, and it pastes nicely as a div onto your page.

I think all the ads are pay-per-click. No idea what the rate is. Presumably low. I'm guessing I'll never actually build up a big enough total to pay out, since nobody reads this, and those that do would never click ads. You can add specific referral bars for Firefox+Google, or for AdSense itself, which are far more lucrative, and may be a good idea.

That is all.
PS comment more.

Sunday, December 04, 2005


What a great idea! A movie about the software development process!

Wait... no... that's horrible!

Okay, well horrible to the average everyday movie buff. But I am certainly curious personally, and many people who just starting to work on software will likely also want to see this.

Basically, it's about a group of four interns at a company called Fog Creek Software, a New York software company headed by CEO Joel Spolsky (whose blog regarding software is fairly well-read), working on Project Aardvark., a project to create a web-based remote assistance service that would later become Fog Creek Copilot. In 12 weeks, the four interns had to take the project from design to shipping. Wow, now THAT would be one hell of a fun internship.

I want one. Damn them being sold out already!

There's a trailer. It's short.

PS. Does anyone actually read this anymore?

Saturday, December 03, 2005

Someone had to do it eventually

"Dating Design Patterns".

Enough said.


(okay, if you're not in software, you may not get it - just click the link)

For more details: their homepage!

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.

Monday, October 31, 2005


I know what you're thinking. "You're just realizing this?" But stay your criticism, for here in Canada, popular beverage Mountain Dew, contains no caffeine! In Canada, there is a law that prohibits the addition of caffeine to just about anything that's not a dark cola. So colas are fine, so is coffee (the caffeine is natural from the coffee beans). Pretty much anything else gets shot down.

Of course, there's been a loophole for awhile now: gurana, a natural berry which, like coffee beans, that also contains caffeine. Since it's natural, it's legal. So there's been a lot of drinks coming out with gurana.

But just today, I found something in Sobeys: Mountain Dew "Energy". Basically, it IS American Mountain Dew, complete with caffeine. Except marketed as an energy drink. The label is hilarious! They have to treat it like a drug, so they provide its purpose (to provide energy to adults), and dosages. Plus a giant warning that it shouldn't be taken by kids or pregant women! Hilarious!

Of course, one may wonder why do this? Well, caffeine is a drug: a stimulant, in fact! It is physically addictive, has significant withdrawl symptoms, the body can build a tolerance to it with repeated use, and it's possible to get caffeine poisoning, or even die! This may sound bad, but the quantities of consumption required to reach any of these problems (except the desired one as a stimulant) with most normal caffeinated drinks is excessive. These problems tend to only develop with things like caffeine pills.

Not that I'm worried. I'm going to pour myself some right now in fact!

Sunday, October 30, 2005

Civilization 4

So, on Friday, I picked up what is largely believed to be the last copy of Civilization 4 within a 100km radius.

Now, with the sun barely rising at 6:30am on a Sunday morning (which is actually 7:30am, except clocks go back today), I have finished my first game. Shinji (the Japanese) has successfully launched for Alpha Centauri as of year 1996. It's a damned good thing too - the planet was a brutal mess. Two civs destroyed, 3 at war with me, and one friend (ahh the Chinese). As a parting gift to these annoying Civs, a wave of nuclear fire.

Now, for what you all want to hear: how is it?
Good... and bad...

First, I'll point out, no matter the changes, it's a Civ game. It is dangerously addictive. Sites like Civilization Anonymous may seem comical... until you fail your first term of school.
(note: if you're in an Electronics Boutique, try to catch the Civ4anon movie, it's worth the watch)

Note, I suggest before anyone comments, they play to the end of a game. The first few turns aren't indicative of how the game necessarily plays.

Now, some of the features which were new which I really liked:
  • Forced border control: no more computers wandering through your territory! They either have to declare war, or they have to request an open borders treaty. Open borders treaty gives access to roads too. A side effect of this is that units from non-warring factions can STACK, so a computer unit won't block your progress along your roads.
  • Better corruption! Corruption is purely a money thing: your cities can always produce just fine. Each city is taxed based on the total number of cities and its distance from the closest capital (Palace, Forbidden Palace, and a wonder or two).
  • No building maintenance, so you don't have to constantly worry about how much your buildings are costing you. This also results in tech%'s being very high, normally 80-90%.
  • Better negotiations: you get to SEE exactly what's making you popular or not with a particular race. Also, extortion works properly - they never actually went to war with me over some random greed attempt. Plus it's easy to see your deals, and choose when to renegotiate them.
  • Awesome defence bonuses: city defence bonuses are displayed, and bombardment can lower that percentage temporarily. Terrain bonuses show up on mouseover. Fortification is very cool - even if you wake the unit, the bonus isn't lost until you move the unit. Fortification increases 5% for up to five turns.
  • The UN is more understandable, and does more stuff. You can mandate certain civics, for example.
  • There's a lot more "national" wonders that each civ can build. What's better, you can only build two per city (this doesn't apply to "world" wonders)! This actually leads to some interesting planning issues - since you can't just load them all in your capital, you have to choose which pair up best (for example, two boosting gold in the same city == mega gold).
  • Easy unit grouping interface.
  • Great people are far more predictable (there's a meter, and you get one when it fills), and they can do a lot more things.
  • "Fortify until healed". 'Nuff said. In general, the concept of battlefield healing is far more refined and deterministic.
  • More treaties! I don't know how they work; didn't have a chance to use them. The "permanent alliance" will be useful for multiplayer, though I hope in multiplayer you can form it earlier (it's tech-dependent).
  • Both tech and construction progress is saved! When building in a city, you CAN'T transfer shields anymore, so no using palace builds to save up for wonders. However, if you're building something, and you choose something else, it goes on the head of the queue, before the item you were building, whose progress is saved. This is great if you need to say, build a wall in a hurry without having to throw out your wonder build.Yes, you can queue after the item as well, as in Civ3's shift-click. Tech is even more generic - progress on any tech is not lost (immediately anyways, the manual hints that a partial tech may eventually decay). You can switch between techs, and come back to the one you were working on later.

There are a few notable features, which are sort of neutral in my book.
  • Civics are kind of neat. I'm not quite sure that I agree with having only one turn of anarchy to switch them, but that's just me. I'd have liked to see this feature expanded, and some dependencies between the civics built. They seemed pointless early in the game, but later on, you do actually find yourself switching now and then.
  • The new combat system is pretty good - at first it feels more generic with 'bigger wins', but those minor details about combat bonuses make a huge difference! This is nice, for example, because you get a unit called a grenadier which has +50% vs rifleman, preventing the common Civ3 problem of rifleman turtling through the industrial age. Also, the idea of strength==health is also nice, more so because you have have fractions of a point. The downside? Micromanagement! Since you have to prepare for various contingencies, you'll have to really plan ahead, and individually promote each unit. For the sorts of stacks you were used to in Civ3, you'll spend a LOT of time just doing promotions and picking groups of units.
  • There's a LOT of luxaries. Even stuff that was just tile bonuses before, like banannas. Again, useful, but the issue of management. Most resources and luxaries require you to build a specialist structure and a road on the tile.
  • The tech tree. There's no requirement to complete a subset of an era, and in fact, the tech tree doesn't even show the eras. Many of the techs have an "or" dependency, meaning they can be reached by multiple paths. This of course gets confusing when you have an "and" dependency, since it doesn't get shown on the tree. This makes the tech tree hard to follow. On the other hand, you can easily explore very deep rather than taking a completionist view of the era. On the plus side, the exact number of potions is visible, and it overflows, so there's no tech% adjust every turn anymore. Thouhg you could easily since they've now moved it onto the main screen.

The downside? Only one, and.... well.... it's that it's a Civ game. Also known as any random 3 year old could have done a better job of testing it. It's buggy, and it's bloated as hell, and one or two of the UI features are still nasty.
  • The game is fairly heavy, taking over 500MB of RAM on a regular game as you let it suck up RAM. Game randomly slows from time to time to an unplayable pace, which can be fixed by minimizing and restoring.
  • Random glitches in UI. Sparkling units. From time to time, there's a buffer overflow leading to an "Unable to load file ". My game control menu and civlopedia disappeared completely once. My entire ancient age had no music. Tech display screen breaks when displaying a chain in progress. The Civlopedia is just crap, and is broken. Had at least one glitch in the military advisor screen.
  • I think there's a few bugs still in gameplay. I know I broke a negotiation at least once to get more cities than I should have. Negotiation screen also doesn't figure out durations for treaties.
  • UI quirks: the same as any Civ game - the issue of being constantly passed to a unit on the other side of the world as you try to wake up your stack. A new one here, to get a list of units, you single-click to activate one. Which activates the fortified unit. Getting it to sleep the turn normally involves waking and re-sleeping it. Sadly, it also seems to skip displaying the defensive combats.
  • Some advertised features, like choosing multiple leaders? Overrated. There's only at most two leaders, and many of the civs only have one, which with only 8 civ traits, means little. Religion has been implemented to be such a big deal, but in the end is just a hoop you jump through. You send missionaries to every city you can reach, they become your religion, and you're done. There's more to it than that, but the sheer enormity of it compared to its usefulness seems imbalanced. I for the life of me can't find out how to discover the balance of religions in a city's population.
Reports have indicated that there are some very serious bugs, including an outright memory leak (mine thankfully eventually frees the memory), and the fact that the game is supposedly hopeless on ATI cards. But I'll leave my discussion to what I personally saw.

So, overall, what do I think? Good game. Worth the price I paid, and makes some key improvements where they were needed. Did they change too much? Only time, and lots of multiplayer will tell. However, of course things may well change when we get the first patch. And that had better be soon.

Wednesday, October 26, 2005

Legal debate of the day: peaceful assembly vs. unlawful assembly

Tina is in law school now. While it does deprive me of her daily presence, it leads us to having the most wonderful discussions on various aspects of law from her assignments. Her because she is learning all about it and enjoys it, and me because I like to act like I know everything. The intellectual stimulation is wonderful, and one of many reasons why Tina is so awesome.

But enough of Tina's 1337 l4w s|<i11z04z and general awesomeness. On to the topic itself:

Unlawful assembly:

Section 63

  • (1) An "unlawful assembly" is an assembly of three or more persons who, with intent to carry out any common purpose, assemble in such a manner or so conduct themselves when they are assembled as to cause persons in the neighbourhood of the assembly to fear, on reasonable grounds, that they
    • (a) will disturb the peace tumultuously; or
    • (b) will by that assembly needlessly and without reasonable cause provoke other persons to disturb the peace tumultuously.

Section 66

  • Every one who is a member of an unlawful assembly is guilty of an offence punishable on summary conviction.

Some other irrelevant stuff cut, but that's the crux of it, straight from the Canada criminal code. Basically, it says that if you're in a group of 3 or more (and actually part of the group in that you have the same intentions), and people have reasonable fear that you're going to disturb the peace or inspire others to disturb the peace, they can throw you in jail. Basically, it's designed to allow cops to break up a riot before it actually becomes a riot; not a bad idea if you think about it.

So the assignment question was basically, given some sample rather emotional protest scenario: a) would a protestor be able to be convicted, b) would it hold up to a charter challenge?

The first part is quite situation-specific. Did the person have common intent with the group, was there three or more, did they assemble, and would a REASONABLE PERSON nearby have fear at that point that the group would disturb the peace or inspire others to disturb the peace? If so, guilty, if not, not guilty. There's lots of arguments that could be made, but in the end, it'd be up to whomever to decide whether the fear was reasonable.

The second is the far more interesting point. Because, after all, the Charter of Rights and Freedoms, and many other such constitution-like documents, were designed specifically to allow people to protest peacefully, and it'd be pretty hard to justify a law that impinges on it.

Some relevant clauses:
2. Everyone has the following fundamental freedoms:
a) freedom of conscience and religion;
b) freedom of thought, belief, opinion and expression, including freedom of the press and other media of communication;
c) freedom of peaceful assembly; and
d) freedom of association.
Points b and d are weakly relevant, I think personally; after all, you have a right to express yourself in a group, and... well... group yourself with a group. But on the other hand, there's tons of exceptions for freedom of expression. And freedom of association doesn't mean you're not liable for your part in the group's actions if they're not lawful.

Part c is the real clincher: freedom of peaceful assembly. The law, by definition, applies to a peaceful assembly, because it addresses the FEAR of it no longer being peaceful. If it was actually no longer peaceful, it would be a riot. We have the right to assemble as long as we're peaceful about it. Period. It doesn't matter whether people are scared or not, or what could happen later. As long as we're not causing trouble, you can't touch us.

Of course, all charter clauses are subject to the "Great Backdoor".
1. The Canadian Charter of Rights and Freedoms guarantees the rights and freedoms set out in it subject only to such reasonable limits prescribed by law as can be demonstrably justified in a free and democratic society.

This is a complex issue! The popular test for this is the Oakes test, which says:
  1. There must be a pressing and substantial objective
  2. The means must be proportional
    1. The means must be rationally connected to the objective
    2. There must be minimal impairment of rights
    3. There must be proportionality between the infringement and objective
Well, lets give it a try.
1. Pressing and substantial objective: preventing riots. Easy enough.
2.1 Rationally connected to the objective: Arrest people who could possibly riot. Sure! Apparently this is not too stringent a test, but yeah, it'd not be a hard sell to pass.
2.2 Minimal impairment: Hummmmm.... could you do this more minimally? On one hand, reasonable fear, and arresting those involved. But I'd definitely argue that you could set some far more specific thresholds for specific actions required before an assembly was unlawful. A reasonable person will fear a crowd of 10,000 no matter WHAT they're doing! Anyways, we have tons of specific laws which won't let us do any of the fun stuff at a riot anyways, so if those don't apply, how dangerous can it be? Plus, the penalty sure isn't minimal! Heck, I would ACTUALLY riot! At least then they have to give me a chance to disperse.
2.3 Proportionality: Yes, and no. Yes in that it breaks up potential riots. No in that it essentially gives a blank slate to arrest anyone assembling in a decent-sized group. The ability to peacefully protest is a VERY fundamental right in a democratic society, and far more important than the ability to save a few bucks by stopping trouble early.

I'd vote 2.2 and 2.3 combined set enough of a hurdle that the law would die without at least some clarification.

So, what else?
7. Everyone has the right to life, liberty and security of the person and the right not to be deprived thereof except in accordance with the principles of fundamental justice.
Whee. This may not seem relevant, but it's a complex one by the definition of liberty in accorance with the principles of fundamental justice. This includes several principles, including that laws cannot be arbitary, so vague that you can't have a legal debate, overbroad, and if involving prison, must have an element of knowledge or intent.

Arbitrary? Not really. Vague? Perhaps: reasonable fear is certainly not defined, nor is it clear whether intent to cause fear is required (a whole discussion in itself!). Overbroad would be a subset of the section 1 argument. Intent is a good one.

This was our biggest issue here: does the law require intent, either to cause fear or to disturb the peace? I think the explicit definition of any common intent would say no, but the charter requires 'Yes'. If there's intent in the law, the law immediately becomes easier to justify.

Of course this can also be excepted by section 1.

So, that's my analysis. Or Tina's analysis. Or whatever.

Sadly, the courts disagree. The Quebec Court of Appeals rejected most of my arguments, though the majority opinion certainly didn't go to much effort in describing why. It scares me when someone says "*Obviously*" anything (here, that the law is proportional). In fact, the opinion seems downright stupid. There's nothing else the government could do than break up potential riots? Well how about not give the participants jail sentences? Not vague? What about the intent issue?

Oh well. So I'm wrong. I guess I'm strongly for protecting charter rights at all costs. They're one of those things that are hard to get back, so they should not be sacrificed so lightly.

Monday, October 24, 2005

Motorola V220, unlocked!

A lucky find during my trip to London has resulted in my Motorola V220 phone being unlocked, and now being a useful asset for my pending relocation to Seattle.

What am I talking about? Well, take a look at this Wikipedia article for a basic intro to SIM locking.

For those who prefer my history lesson:
The big tech in Canada and the US for cellphones is "CDMA". It works. But it's not very friendly to consumers. If you leave North America, you've got scant hope of getting your phone to work. Also, if you don't like the company you're with (or your company doesn't cover an area you want to go to), you're out of luck - get a new contract with a new company with a new phone.

In Canada, Bell and Telus are both CDMA-based.
* as a side note, CDMA issues aside, I hate Bell Mobility. With a passion! Six months of their billing system being horribly broken for EVERY customer, the rampant defects in many of the phones they offer (and, being CDMA, you have no other choices), and the charging me $200 cancellation on a finished contract and then insisting I'd have to call in a month later to have it fixed.

Of course, this was no good. So GSM was formed. GSM is what most of the world outside North America agreed on, and so pretty much anywhere that cell phones work, your GSM phone will likely find a network. Thankfully, despite pressure from US industries, and their lobbby organization the US Government, market forces have led to their being ample GSM coverage in North America. GSM is also nice in that all identifying characteristics of the phone are carried in a SIM card, a small device about the size of a dime that can be easily removed from your phone. So, want to switch cell companies? Take your phone, insert the SIM card from the new company, and TADA, your phone has switched to the new network. This is also useful if you want a local phone number when travelling, and various other uses.

In Canada, Rogers and Fido (recently acquired by Rogers, though I'm told by Rogers agents that their networks are not yet completely open access to each other) are GSM.
* I love Rogers Wireless. They treat me very well, and I wholeheartedly recommend them. I do not recommend other Rogers services, which piss me off. But Rogers Wireless is good.

Of course, the CDMA-centric companies can sell you phones, confidant that you will be locked into their lengthy contract. If you ever leave your contract, that expensive phone you bought is USELESS unless you rejoin them! They like that. GSM providers aren't happy that they don't get to be equally mean to consumers. So, the cell phone manufacturers added something called a "SIM lock". Basically, if you try and change the SIM card in your phone, the phone will refuse to work.

Now, back to the point at hand: unlocking. The benefits of being able to swap SIM cards is obvious, so how do we defeat the evil cell companies? We UNLOCK our phones!

In Canada, Rogers and Fido will (last I checked) both remove SIM locks at your request. They charge $200 for the service, which roughly matches the worst-case contract cancellation fee, and is more than the (no strings attached) purchase price of many cell phones. You can find a few places online that will do it, for a variety of prices, and terms. For certain "easy" phones, it's just a $5 typed code from the Internet, but for others, it takes dedicated hardware and serious knowhow. Many places will require you to send off your phone to a central office, leaving your cellphone with who-knows-who for days.

Well, if you're ever in London, stop by Masonville mall, across from the Shoppers Drug Mart. A cart has a guy who will unlock Motorola phones for $40. All other brands are $60. These prices are not great: the $60 is unreasonable I think. The $40 is similar to what I've seen elsewhere: I've heard of lots cheaper, but have yet to actually SEE a place that was able to follow through on-site cheaper for my V220. He did it in 15 minutes, and demonstrated with a Fido SIM. (one problem in Canada is that we only have two GSM providers, equalling only one possible test; plus in Masonville mall, Fido signal's very weak). So now, my phone will actually be useful when I move.

Please, if you know of a good on-site unlocker in your area, post in the comments! It will help others who are under the SIM lock and chain.

Four Days in London

Yeah, you get to hear about my life a bit. There's some reviewage, and foreshadowing coming up though.

I spent the last four days in London (Ontario), visiting my good friend Jessie. She had finally reclaimed her house after finally evicting a leftover tenant she acquired when she bought the place. You know, refuses to move, refuses to pay rent, certainly not the ideal person to be in the house. Of course, when she was finally ordered to leave, she look all the light fixtures, most of the electrical faceplates, and left a load of random crap in the basement.

Of course, this will raise instant alarm bells in most people's heads. Don't go Mike, you'll be sore for a month! It means certain doom! But I am Mike, I am not afraid! Plus it's Jessie, for whom I'd gladly undertake such labours and more, so I ventured forth. I'm back, having installed three light fixtures, five light switches, three sockets, and swapped out fuses (yes, fuses) innumberable times. Not a single electric shock, and everything works now. It's hard work, but certainly not beyond the average handiman with some good tools. Take note ladies, I'm now officially classified as "handy around the house"!

Didn't get any of my own research done. However, we probably added $5000 value to the house in the four days there, and infinitely more comfort for ourselves. Just in time to head back to Kitchener. Heh.

Also did a great deal of shopping, something London has no lacking of. Picked up two new toys for myself. First, a Linksys 802.11G router, with SpeedBooster. At Staples, probably ridiculously overpriced. Review will be coming in about a week. The other toy: my phone got unlocked! That will be my next blog post, so read on!

One quick random review for you all: the Toyota Echo. What a damned good car. I was driving around London in Jessie's Echo during my visit. Maybe it's just me, having not driven a 'new' car in quite some time, but this thing is just golden. Stops on a dime, accelerates nicely for it's class, immeasurably maneuverable, Toyota quality, and gas mileage that even hybrids can't beat. I'd get one myself, if not for the last annoying shreds of male pride tugging at my mind, nagging, prodding, demanding I get a manly car. It's the perfect car, except for the one problem to men everywhere: it is 'cute', and there is no avoiding that adjective when talking about this car.

Monday, October 17, 2005

Programming languages rant

With the recent Sun talk which mentioned dynamically-typed languages, the Ruby-on-Rails article on Slashdot, and my recent interest in C#, I've come to think about the things that I take for granted in my strongly typed languages.

I came up with a lot of questions.

Do I need checked exceptions?
The only (relevant) language to have them is Java. They were heralded as forcing people to handle exceptions, but in reality, they just pissed people off and people started throwing them away. I can see the use of runtime exceptions - they're required, especially for things like casting, nulls, and the VM error conditions that would be infeasible to check in every method. But how often does anyone catch those anyways? Really, there's not a lot you can determine from a null reference; it's a bug! On the other hand, will you really check for an exception you CAN handle if you're not forced to?

Lots of people have opinions, some even well-informed. You can Google them. Google Scholar doesn't turn up much though: has the SE community not addressed this scientifically?

Do I need strong types?
Yes. GOD YES! This weak typing hippie crap is really pissing me off. We need STRONGER types in fact: I want compile-time constraints on values! Why should I be allowed to pass a null to a method when clearly the method can't accept it? Why can't the compiler force that? More to the point, it'd be more efficient! How often does one datum get null-checked on the way up a call stack? If the code is solid, I bet pretty damned often. If I could just make a type != null, it would only need to be checked before it first entered the method, and assumed not null the rest of the way up.
(note: yes, I know you can do this with classes. But it's a ridiculously heavyweight solution considering that you'd need a class for each individual combination of constraints.)

Plus these dynamic types really screw things up, because they go hand in hand with auto-conversion. Because you NEVER KNOW WHAT A VARIABLE IS! Is it a string? An integer? An integer interpretation of a string? A string interpretation of an integer? A string interpretation of an integer interpretation of a boolean? It's a black art, requiring you to know far too much about how the language interprets expressions. Even C had that wrong; promotion/demotions of primitive types were nuts and required a zillion casts to get simple cross-type math right. Bringing me to my next rant.

Primitive types?
GO HOME! It's already painfully obvious they're outmoded. Strings are a prime example: is it a class? An object? A primitive? A value? We don't know! Autoboxing is just meant to hide this because nobody has the courage to say STOP! A primitive, in my mind should merely be another type, except the compiler can generate instances of them from literals. That's all. It'd be trivial to optimize them out behind the scenes. Get rid of them!

Compiled languages?
Please. How can you do compile-time checks if there's no compiler? With classloaders like Java, there's no "huge rebuild" for every change. In fact, Eclipse compiles whenever you save, and even builds a loadable class if you have errors (replacing bugged code with exceptions). The compile overhead is truly marginal, and certainly not so huge as to make scripting languages a good idea. Plus, with a scripting language, there's no way to hide your code. As open-source-friendly as I am, some people need to distribute as binary.

Of course, .NET has it wrong - we (okay, *I*) don't want assemblies, we want CLASSES! Not in DLLs, not in EXEs. Java's JARs were a good step, and with only minor enhancements, would be the ideal tool for this.

I'm done. That's my rant. Go. Make languages for me now. I'm sick of your silly languages. Make me a good one.

What? Not done yet? *sigh*

Thursday, October 13, 2005

Two Big Boys and a Little Lady

I don't normally blog about seminars; after all I go to a lot of them. But I think these three merit mention, because of the heavy usefulness of today.

PS. Get me in your feed readers! 'Surfing' is so 2004.

Bill Gates
First off, on his only Canadian stop, Bill Gates stopped at Waterloo. Of course, being such good friends with the Big B (well... at least with his underlings), I got a special invite. A good thing too: this event was unbelievably hard to get access to unless you were one of the lucky few to exploit their connections to get tickets through a student society. I heard there was a waiting list over 5000 people!

Still, for such an anticipated talk, BG didn't say much of any noteworthiness. It was essentially a big public relations move. It worked; I appreciate that he came here to "rally the people to his cause" so to speak, and can appreciate that he needs to do so if he wants bright students to come work for him.

The questions are where the useful tidbits came out, including his opinion of open-vs-commercial (commercial will be the value-add on the open base? that was my interpretation of his answer), the issues of format proliferation (standards tend to emerge eventually anyways), and the need for programmers to understand hardware vs abstractions, and practice vs theory ("it depends").

The executive summary: software is good, software will be what drives all the cool tech of the future, and we should do all the good software we can.
Entertainment: A short comedy video of BG with the guy from Napoleon Dynamite (I think; I never saw the movie). BG playing Project Gotham on the XBox 360. Badly. A neat application of a "smart-space" style table which interacted with a projector and his cell phone.

Tim Bray
Of XML fame. Now with Sun, as Director of Web Technologies. A much more technical talk, addressing the "five big open problems in network computing". In my opinion, it should have been "five big problems for developers: IDEs, debugging, bloated standards, naming, and XML". But, all creative re-interpretation aside, his five big open problems were:

  • Parallel computing: since processors are growing more parallel instead of faster, how do we compile legacy apps, write new parallel apps, and debug parallel apps?
  • Web services: how do we do this well without overloading on the glut of beastly oozing standards?
  • Dynamic languages: how will we make IDEs, efficient VMs, and all the other goodies for dynamically typed languages?
  • Syndication: how do we get people to agree on a format and protocol, and can we use it for more stuff?
  • Storage: can we move stuff more into a distributed redundant network with lots of RAM and bandwidth, then just forget about disks? Will we use in-memory databases, or something else?

Not all these problems are all that "open" really. Really it's more along the lines of getting people to agree on which of many techniques to standardize on to close them.

And he called PHP a kludgey hack. HOORAY! I was about to mock him relentlessly for supporting dynamically typed languages until he said that. Perhaps PHP is the exception instead of the rule? I'll have to go try Python or Ruby sometime.

Name filtered, since she's not world-famous... yet. The most technical talk, talking about the use of Ecological Interface Design in the design of interfaces for a power plant's turbine systems. The opposing approach is User-Centric Design, I think. The key metric for this research will be "situational awareness", itself a novel evaluation criteria. I apologise to the presenter if I've already butchered it.

It was the most technical talk of the day. At the end of the day, no matter how much these evangelists say the tech is good, J.K. was the one I felt had done the most USEFUL WORK recently to make technology a reality. But that's just me. I didn't need convincing to know that technology is good, but I could certainly use better interfaces, especially on my computer.

Thursday, October 06, 2005

Lining the wallet

I hope this link is a permalink.

This reeked of propaganda to me the second they compared it to the Health Act, and got worse from there. Standard persuasion technique: health care is good right? This will be like health care.... you LIKE health care.... don't you?

It's appropriate that they compare to health care... because a LOT of money goes into health care. Money is thrown at every which problem. Which sounds a lot like our school's approach to education - get as much money as possible, and our school will be better. Will we spend the money on making the school better? No, we spent it on raises on our top administrators, but we made more money, so things MUST be better... right?

Some of the key phrases in the document lead me to believe that the issue is 100% an attempt to get more money from the government and people of Canada, and nothing about actually changing how education is done here in Canada.

"The premiers and territorial leaders have encouraged the Prime Minister to hold a first ministers' conference this fall with education as the single item on the agenda. "
== We'd like the provincial AND federal government to pay us money.

"with due regard at the higher and more selective levels of institutions for the individual to contribute to or repay the citizens' investment"
== We'd like more deregulated programs, and be allowed to charge them more.
(or, more cynically, we'd like to force our students/alumni to donate to us! okay, it's a bit of a stretch, but if they put even half the effort into making our school work that they did into alumni campaigns, maybe more students would actually want to give back...... it would help if we didn't waste all the money we receive either)

And, recognizing that different people learn best in different ways, the act will emphasize innovative techniques for helping individuals learn to the best of their capacities."
== We'd like you to sponsor us to experiment on guinea pigs... erm.... students.

"to establish itself as the world leader in e-learning"
== We'd like you to sponsor us to teach in ways that don't involve... you know, actually having to hire profs or provide facilities. You know, like where you give us money... and... that's it.
- this is already apparent in the ever-increasing strength of the distance ed program at our school; which itself isn't a bad thing, but perhaps it shouldn't cost as much to listen to a tape made 10 years ago by a prof that's long since retired.

"The act will recognize the social and economic importance of investing in knowledge and in well-educated, highly skilled people by establishing investment goals."
== That's it in the end, isn't it? All this talk, but the MECHANISM will be 100% money.

To do so, we will have to reshape Canada's immigration and visa policies to attract talented people from elsewhere, whether they come as visitors, or decide to stay as citizens, or return to make a contribution in their own countries."
== We don't care if it doesn't benefit Canadians. We'd rather bring in international students, because we can charge them far more (note: yes, I know the gov't doesn't give them the same money for international students, the rates the schools charge more than make up for it).

"A primary role of the government of Canada in this bold initiative will be to harmonize the investment in learning and innovation across Canada and to co-ordinate the efforts of all levels of government, ensuring that the investment is as effective as possible."
== We'd like to make sure we get our share of the moola. We'd like NDP style spending with conservative style freedom on tuition, and we may need to play provinces against each other to get it.

I, for one, have nothing against money.
Money is good, after all. It lets you pay professors, build buildings, upgrade computers, while keeping tuition low for those that can't afford it. However, that money has to be used for something. Something USEFUL, that actually BENEFITS students at these universities. That's what I'd like to see. Not an act that outlines how much more money our school should get, but an act which forces schools like ours to spend the money appropriately.

Computer Science Woes

Thanks to my Professor for showing me this interesting study from UCLA about Computer Science.

Executive Summary:
  • There were two big surges in CS popularity: peaks at 1983 and 1999 (the latter obviously being the dot-com boom and later crash).
  • During the first surge, lots of women expressed interest, and the fraction of CS degrees given to women nearly reached a whopping 36% (oooh 36%; it's sad when I can look at such a ratio and actually admire it, but 10% was the sad reality of my computer engineering undergrad).
  • During the second surge, women didn't so much as blink. Total overall degrees granted to women in CS is actually falling, as opposed to practically every other field (including engineering as a whole) where it has traditionally steadily increased.
So, if you take their data to be representative and predictive, CS is going to wither to nothing over the next few years, and the few left will suffer knowing they're the only place on campus without living breathing women in their ranks.

We're obviously doing something wrong. Are computers really perceived to be so horrible that only the promise of unthinkable levels of fame and fortune can get people to even try it over a "Would You Like Fries With That?" degree? So bad that less than one in two hundred women in post-secondary education will even enroll?

Can we make computers cool to youths again? What will happen if we don't?


Yes, I'm creating a blog. Yes, I still think blogs are silly. Yes, I'm making one anyway. Yes, I realize that this is merely a temporary concession to my own vanity.

... but perhaps someone may actually care about the things I have to say, and a blog format is great for that. So here I am.

Some of the things that may appear here:
- Reviews of electronic toys / software / services / books that I have interacted with at some point.
- Ideas for new software projects, engineering curriculums, websites, gadgets, etc.
- Criticism of laws and trials.
- Recipies, cooking, food.
- Notification of major events or relocations in my life.

Things that you should all endeavour to punish me for if posted:
- I met this nice girl, she was purdy... oh I so hope she likes me!
- Work is boring. I can't wait to go home.
- I cooked meatballs. Meatballs are good. Mmmmmm meatballs.
- H4w pwn3d! Nerf shamans!

... and I say again, welcome!