Code to ignore voting rings would be very interesting - I would imagine the way to do it might be to occasionally do some kind of maximum flow analysis on the graph between users (with arcs between u_i and u_j representing the proportion of upvotes for user u_j by user u_i as a proportion of u_i's total upvotes). Users with a high maximum flow between them could be considered part of the voting ring. The trouble is that this would be very computationally expensive, even to do offline - and the cost of storing a matrix of size n^2 for n users might be prohibitive.
I was curious about what Hacker News does so looked at the code from the Arc tarball.
I found this:
(def biased-voter (i vote) nil)
I presume this is a case of security by obscurity and the live Hacker News site has a non-public definition of biased-voter to stop people working around it?
Or are you referring to the code that guards (++ (karma i!by) (case dir up 1 down -1)) (on lines 1368 to 1370)?