Comparing the reputation systems of Slashdot (slashdot.org) and Hacker News (news.ycombinator.com), highligting details and presenting possible changes.
Christoph Matthies (@chrima0), Robert Lehmann (@rlehmann)
23. Hacker News
●
●
○
●
●
●
●
“
If you apply for YC and get
rejected, pg [Paul Graham] may
follow-up with an explanation just
because you have a high score.
25. “
Anything that good hackers would find interesting.
That includes more than hacking and startups.
If you had to reduce it to a sentence, the answer might be:
anything that gratifies one's intellectual curiosity.
64. Remember, though though
Remember,
All these effects don't have to be negative.
e.g. Information Cascade Effect can strengthen
good comments and further demote bad ones.
65. Lampe’s Solution [1] visible
hidden
Adjust the damn comment filter.
before
most recent
after
recently written recently moderated
71. cheating, the secret sauce
(def vote-for (user i (o dir 'up))
● karma bombing prevention
(unless (or ((votes user) i!id)
(and (~live i) (isnt user i!by)))
○ prevent cabal against individual users
(withs (ip (logins* user)
● downvote ratio
vote (list (seconds) ip user dir i!score))
(unless (or (and (or (ignored user) (check-key user 'novote))
○ cannot cast too many downvotes
(isnt user i!by))
(and (is dir 'down)
● sockpuppet protection (~editor user)
(or (check-key user 'nodowns)
(> (downvote-ratio user) downvote-ratio-limit*)
; prevention of karma-bombing
(just-downvoted user i!by)))
(and (~legit-user user)
(isnt user i!by)
(find [is (cadr _) ip] i!votes))
(and (isnt i!type 'pollopt)
(biased-voter i vote)))
(++ i!score (case dir up 1 down -1))
72. and now a word from CmdrTaco
rigorous checks for legit posts
● HTTP Proxy
● maximum number of posts per day
● "trollishness"
○ half-lived amount of downvotes
if ($constants->{comments_portscan}
● compresses too well (with Zlib) && ( $constants->{comments_portscan} == 2
|| $constants->{comments_portscan} == 1 &&
○ ASCII art $user->{is_anon} )
) {
my $is_trusted = $slashdb->checkAL2($user->{srcids},
"nobody should be using that many wide
'trusted');
characters in the Standard English alphabet"
if (!$is_trusted) {
my $is_proxy = $slashdb->checkForOpenProxy
($user->{hostip});
if ($is_proxy) {
$$error_message = getError('open proxy', {
Anonymous Cowards punished harder. unencoded_ip
port
=> $ENV{REMOTE_ADDR},
=> $is_proxy,
});
$form_success = 0;
return;
}
}
}
73. and now a word from CmdrTaco
rigorous filters for legit posts
● 7 whitespaces in the subject
lots of space in the subject ... lots of space in the head.
● more than one character
one character. Hmmm. Gee, might this be a troll?
● words longer than 80 letters if ($constants->{comments_portscan}
&& ( $constants->{comments_portscan} == 2
that's an awful long string of letters there! || $constants->{comments_portscan} == 1 &&
$user->{is_anon} )
● 50% caps ) {
my $is_trusted = $slashdb->checkAL2($user->{srcids},
'trusted');
PLEASE DON'T USE SO MANY CAPS. if (!$is_trusted) {
USING CAPS IS LIKE YELLING! my $is_proxy = $slashdb->checkForOpenProxy
($user->{hostip});
● "feces", "goatse.cx" if ($is_proxy) {
$$error_message = getError('open proxy', {
unencoded_ip => $ENV{REMOTE_ADDR},
too smelly to submit port => $is_proxy,
});
$form_success = 0;
return;
}
}
}
75. Use -f to forcibly slap
warning if a user has more than 10 Karma
● Karma: Terrible (-10) ● Karma: Terrible (-10)
● default comment ● revoke all
score of -1 moderation points
● set all comment
scores to Offtopic (-1)
76. nuke
blast blast
kill submission +ban the site
+
ban user
77. hellbanning
●
●
●
●
“
a hellbanned user is likely to get bored or
frustrated and leave [...]
the silent treatment is the cruelest
punishment of them all. [1]
— Jeff Atwood
86. unless ($opts{'f'}) {
die <<ERR if $user->{karma} > 10;
User $_ has a karma of $user->{karma}. Slap aborted. Use -f to forcibly slap.
ERR
}
print "Bitch Slapping #$_...n";
print "Karma Reducedn";
print "Default Score Reducedn";
$slashdb->setUser($_, {
-karma => $constants->{badkarma},
-defaultpoints => -1,
});
print "ALL live comments moderated downnn";
$slashdb->sqlDo("UPDATE comments SET points=-1,reason=1 WHERE uid=$_");
Exhibit A — source of bitchslap (Slashdot)