Similarity Breeds Dislike

When the wildly popular online multiplayer game World of Warcraft came out a few years ago, I played it for about six months. Like just about every other multiplayer game out there, WoW players a faction to belong to, in WoW’s case, either the Horde or the Alliance.

This choice is often arbitrary, although once someone has chosen a particular faction, their friends will often choose the same one so they can play together. But at the time a player joins, they have no particular love for the side they choose or hatred for their faction’s enemies.

This soon changes, however, especially on game servers that promote warfare between the factions (so called player-vs-player servers, such as the one I played on). A raging hatred exists between players on opposite factions that extends out of the game world and onto forums, blogs and so on, where people insult each other, claim the other side has an unfair advantage, etc.

In other words, people who have a ton of things in common, from their frequently similar personal characteristics (young, male, etc.) to their obvious appreciation for the same type of entertainment, spend hours flaming each other as a result of an arbitrary, meaningless choice when they first started playing the game.

As in the world of video games, so in the world of web development. I’m sometimes dismayed by the attitudes expressed by Python programmers towards Ruby programmers, and vice versa.

Don’t get me wrong: lots of people from these two communities are perfectly civil towards one another, and some of the tension is simply a healthy competitive rivalry. But that is not always the case, which is weird: after all, both languages are dynamic and cutting-edge, both communities are producing fantastic software, and both communities are generally contemptuous towards people who program in PHP. So what’s the problem?

Or check out the massive flamewar on Smashing Magazine because someone had the nerve to suggest that web developers don’t need to use Macs. Five hundred comments (and counting) of Mac users bashing Windows users bashing Mac users, occasionally interspersed by pious Linux users wondering what all the fuss is about.

But all of these people are web developers. Some, of course, are respectful to each other, but others are not: the fact they are speaking to someone who is probably much like them, with the same career and probably many of the same interests, does not matter as much (at least at that moment) as that person’s choice of computer.

When we’re online, we often disagree the most with the people who are just like us. Is this the result of competition, like the conjured up war between the Horde and the Alliance in World of Warcraft or the pressures of the hyperactive pace of web development? Or is it a way of insisting that we are unique individuals, even when presented with evidence to the contrary – our peers?

Offline, the situation changes. Put a Ruby programmer and a Python programmer in a room together at a party and they’re bound to meet at some point and trigger the kind of endless, arcane-to-normal-people conversation that prompts their wives to suggest leaving. Put a couple of WoW players into a room at a party – actually, never mind, WoW players don’t really leave the house.

There’s a simple solution for all of this then: when you deal with people online, treat them the way you treat the people you see every day, in person. Even if they still use PHP. Or they’re Horde. You ganking bastards.


What, you’ve never heard of Manny Schwartz?

If you’re fairly well-informed when it comes to science, you may often feel, and sometimes express, skepticism about someone else’s supposedly scientific claims.

For example, if you were to see Suzanne Somers on Oprah telling women that injecting estrogen directly into their vaginas (don’t worry, that link does not go to a photo) will make them look and feel younger, you may think, “that’s crazy,” and you may even feel compelled to remark to someone near you that you believe “that woman is freaking nuts”.

When you criticize an apparently ridiculous person or idea, however, you open yourself up to a common line of attack, which is to point out that history’s revolutionary thinkers and inventors were usually mocked when they announced their discoveries.

I’m slogging my way through Steven Pinker’s The Stuff of Thought right now and I came across a brilliant counter-argument to that. In this paragraph, Pinker is discussing the radical linguistic theories of philosopher and psychologist Jerry Fodor:

Fodor correctly notes that history has often vindicated unconventional ideas – after all, they all laughed at Christopher Columbus and Thomas Edison. The problem is that they all laughed at Manny Schwartz, too. What, you’ve never heard of Manny Schwartz? He was the originator and chief defender of the theory of Continental Drip: that the southern continents are pointy at the bottom because they dribbled downward as they cooled from a molten state. The point is that they were right to laugh at Manny Schwartz. Extraordinary claims [...] deserve extraordinary evidence.

So the next time someone pulls this one on you when you express skepticism about an extraordinary claim, just ask, “What, you’ve never heard of Manny Schwartz?”


Thoughts on O

Our son Oliver is almost two years old (just a couple of months to go). I’ve been thinking lately that I’d like to record some memories from around this time, so here goes.

Lately he’s been learning how to jump, which he does by bending all the way forward, in a full crouch with his chest horizontal to the ground, and then extending upwards as vigorously as he can. This earns him about an inch of air.

In the morning, though, when I get him out of his crib, he holds onto the side of it and jumps up and down like a maniac. This technique gives him a lot more height, and it’s very funny to watch. It makes getting him out of bed in the morning doubly enjoyable. It’s hard to stay irritated with a Monday morning when someone else’s reaction to the new day is this much excitement.

Eating is always an adventure. An activity that I view as one of life’s great pleasures is a mixed bag for Oliver. Certain foods are always in favour (any type of pasta is met with the exclamation “noose!”, which means “noodles”), while the mere proximity of others is offensive, even if no attempt is being made to force the issue (broccoli may not be in contact with any part of his high chair).

His refusal to eat certain healthy foods has resulted in us playing the deception card, a parental favourite, by cutting food up and mixing it in with yogurt (another sure winner). Oliver enjoyed every bite of a wretched mixture of yogurt and chopped asparagus and chicken.

Last night, while at the in-laws, Oliver and I were indoors while the rest of the family was outside, and he shut a heavy door on his finger. He immediately started screaming in pain, stamping his feet in anguish and holding out his hand for me to look at. I could see that he did not understand why it hurt so much. This confusion is tragic to me. Growing up, he will often hurt, and many times will not know why, just like the rest of us.

This morning, although his fingernail was purple, it wasn’t bothering him any more. I’d say that now he’s less likely to play with doors, but I don’t think that’s true. Instead, he’ll probably just be a little better at it. The resilience of children and their determination to get good at stuff is amazing.

As Oliver gets older, our relationship is changing. I used to take care of him as a baby, now, I’m getting to know him as a person. Few experiences in my life have felt this meaningful.


Fixing HAML in jEdit

(This one is purely for tech people, Ruby on Rails developers who use jEdit to be exact.)

Chances are, if you use jEdit and HAML, you’re using or you’ve tried out Jim MorrisjEdit HAML edit mode.

If you’ve done so, and you’re using an up-to-date version of jEdit (e.g. 4.3 pre14) you’ll have noticed that the way it deals with indentation is really buggy. Here’s a description of the problem I posted to the jEdit mailing list, without much luck:

This is the code I want:

  = form_row("First name")

In the code above, as soon as I type the “a” in name (actually the point varies a bit, could be anywhere inside the double quotes), the line unindents, giving me this:

= form_row("First na

This means that I have to go and reindent the line, so that it’s back the way I want it to be.

This also happens in cases where I am using braces { }. Here is the code I may want:

%a{:href => "/some/link"}
  = "#{@user.login}"

As soon as I type the opening brace { in that string, the line unindents:

%a{:href => "/some/link"}
= "#{

And again, I have to reindent it.

What’s even more annoying (incredibly annoying!) is that after I reindent it, as I continue to type, it will continually unindent. So I end up fighting with my editor.

You can fix this problem by hacking up a new Ruby mode for jEdit that removes all of the indentation rules. Then, change the HAML edit mode to delegate to your new hacked Ruby mode, instead of the proper one.

Step 1:

Open the jEdit catalog file, probably in the modes folder (precise location depends on your system). Find the entry for Ruby and create a new one called ruby_stripped_down that references a new file called ruby_stripped_down.xml:

<mode NAME="ruby_stripped_down" FILE="ruby_stripped_down.xml" />

You don’t need all the info about file extensions, since this mode will only get called from the HAML mode.

Step 2:

Open up the ruby.xml file from the same folder as the catalog. Save a copy of it as ruby_stripped_down.xml. Now delete all of the lines inside the <props> tags near the beginning.

Step 3:

Open up the haml.xml file from the same folder. Wherever you see:


Change it to:


This occurs in four places.

Save it. Restart jEdit. Your problem should be solved.

If you’re lazy, you can also download my edited haml, ruby_stripped_down, and catalog files. However, be warned that overwriting your versions is at your risk (especially the catalog file – the others aren’t nearly as risky).



Food Is Not Just Another Commodity

Wrote a blog post for RTH:

Global food prices continue to rise. United Nations secretary-general Ban Ki-moon has warned that “We risk the spectre of wider-spread hunger, malnutrition and social unrest on an unprecedented scale”.

Food riots in Haiti, rice rationing in India and even the United States, panic buying in Britain: so far, Canadians have been insulated from these phenomena, but not for long. Our rendezvous with rising prices for life’s essentials is on the way.

To markets, food is just another commodity, subject to the same profiteering and speculation as tech stocks, minerals and oil futures.

The difference is that food, like air and water, is the most basic of necessities. Not being able to afford food is a death sentence.

Markets for food used to represent a means to fairly compensate farmers and a motivation for them to keep growing food. Now, global markets have set up a powerful and dangerous competition for a vital resource.

Go read the rest if you’re interested.

Life, politics, code and current events from a Canadian perspective.

Adrian Duyzer
Email me


Proud contributor to
Director, Web Division at