HNScore - another look at post quality on Hacker News


I’m not the only one to notice that some of the most interesting posts on Hacker News generate few comments - and, conversely, some of the least interesting posts generate the most comments (see here, or here). Of course, you can’t generalize too much, but it seems like an interesting metric.

I whipped up a quick GreaseMonkey script to display the ratio of votes to comments. I made a few arbitrary calls: only show a ratio for stories with more than 4 votes, and display the score differently for stories with a ratio less than 1, between 1 and 5, between 5 and 10, and over 10.

I haven’t yet made up my mind whether this improves the overall experience… but it does provide some additional information, and clearly does what it’s supposed to do - highlight the stories with very high or very low votes to comments ratio. I’ll use it for a while before I decide how I feel about it. I suspect the actual value will vary from reader to reader.

A screenshot:

picture-66

Download GreaseMonkey script

Update: added to GitHub

// ==UserScript==
// @name           HNScore
// @namespace      me.alexc
// @description    See ratio between story comments and votes on HN.
// @include        http://news.ycombinator.*/
// ==/UserScript==

var rows = document.getElementsByTagName("td");

for (var i=0; i<rows.length; i++)
{
	var row = rows[i];
	if (row.className == "subtext") {
		scoreNode = row.childNodes[0];
		commentsNode = row.childNodes[4];

		score = scoreNode.innerHTML.match(/\d+/)[0];
		commentsR = commentsNode.innerHTML.match(/\d+/);
		if (commentsR)
			comments = commentsR[0];
		else
			comments = 1;

		ratio = score / comments;

		if (score > 4) {	// arbitrary
			// Prepare ratio element
			ratioNode = document.createElement('span');
			ratioNode.innerHTML = ratio.toFixed(1) + " ratio. ";

			if (ratio < 1) {
				style = "font-size:6pt; color:red;";
			} else if (ratio < 5) {
				style = "font-size:7pt";
			} else if (ratio < 10) {
				style = "font-size:8pt; color:black;";
			} else {
				style = "font-size:8pt; color:black; font-weight:bold;";
			}

			row.setAttribute("style", style);

			// Insert before story score
			row.insertBefore(ratioNode, scoreNode);
		}
	}
}
  1. No comments yet.
(will not be published)