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.
Technical reviews, ideas and ramblings, observations, and perhaps even the occasional glimpse into my daily life.
Tuesday, November 29, 2005
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.
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
Citizenship
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.
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
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!
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.
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!
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:
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.
[
Update:
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?
]
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.
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.
[
Update:
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.
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
GOOG WTF?
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.
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
CAFFEINATED Mountain Dew!
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!
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:
There are a few notable features, which are sort of neutral in my book.
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.
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.
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.
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:
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:
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. 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?
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.
But enough of Tina's 1337 l4w s|<i11z04z and general awesomeness. On to the topic itself:
Unlawful assembly:
- (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.
- 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.
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:
- There must be a pressing and substantial objective
- The means must be proportional
- The means must be rationally connected to the objective
- There must be minimal impairment of rights
- There must be proportionality between the infringement and objective
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.
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.
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*
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*
Subscribe to:
Posts (Atom)