I start with 2 counters: $P and $N. Initially, $P = $N = 0. Then I have the following rules:
- If the node id is prime: $P += 5.
- If it's a question: $P -= 100.
- If I'm grumpy: $N += 20.
- If I feel happy: $P += 7.
- If it's a question that isn't really about Perl, but about Web, databases, some kind of OS, an editor, or something else that isn't Perl: $N += 50.
- If the poster is female: $P += 20; $N -= 10.
- If it's an incorrect answer: $P -= 100. $N += 25.
- If it's an incomplete answer: $P -= 50. $N += 7.
- I already had my morning coffee: $N -= 10.
- I haven't had my morning coffee yet: $N += 10.
- If it's a FAQ: $P -= 100; $N += 50.
- If it's an answer to a FAQ, but gives an asnwer different than from the FAQ: $P -= 100; $N += 100.
- A short answer that just points out the fact it's in the documentation and/or FAQ: $P += 30.
- Poster claims to be a non-Perl programmer/teenager/well-fare mother/bus driver/George W. Bush or something else that's irrelevant: $P -= 10; $N += 25.
- Poster backups claims with benchmarks: $P += 30.
- Said benchmarks are flawed: $N -= 30.
- Paycheck arrived today: $N -= 5.
- Posted obviously didn't do any research (asked a question spelled out in the documentation, or a question that was asked here a few days before): $N += 30.
- $N -= 33 if you're Finnish.
- $N += 10 if it's about XP or voting.
- "Let's change Perl to do something", but meaning "I want someone else to change Perl to do what I want": $P -= 100; $N += 100.
- $P += 15 for a good flame.
- $N += 30 for a bad flame.
- $N += 23 for replies to my post that disagree with me.
- $P += 17 for vegetarians.
- $P += 10 if you've ever bought me a beer.
- $P -= 40; $N += 2 if you're on my black list.
- $N += 1 for any spelling mistake.
Then I do:
my $plus = rand(100) < $P;
my $minus = rand(100) < $N;
I vote if, and only if,
$plus xor $minus, and if I vote, I vote
++ if $plus, and
-- if $minus.
But then I realize that I don't bother with getting an account, so I don't vote after all.