

Ask HN: How do you determine "hot" or "popular" user-generated items? - pamelafox

I put together a little app this weekend which lets people translate phrases through different languages and see the often funny or interesting results: http://translation-telephone.com<p>On the sidebar, I display "recent" and "popular" phrases, to encourage people to browse others. Right now, "popular" is a random three of the top 30 viewed phrases - really basic.
I'd like to make it smarter and I imagine there are a variety of techniques that I can use, like the HN metric for frontpage news.<p>What techniques do you guys suggest? Thanks!<p>(Note: Architecture is App Engine/Python, if that's relevant)
======
mindcrime
The most straightforward way is to start with some default value for "hotness"
and then decay the hotness by time (a logarithmic basis is popular for this),
and increase hotness based on activity (votes, comments, etc.)

For a real-world example (albeit one from code that's not much beyond
"prototype" status) feel free to look at what we do in Neddick:

[https://github.com/fogbeam/Neddick/blob/master/grails-
app/se...](https://github.com/fogbeam/Neddick/blob/master/grails-
app/services/org/fogbeam/neddick/EntryService.groovy)

look at the calculateScore() and calculateHotness() methods in particular.

What we do there is basically just use 0 as the default, count each upvote as
+1 to score and each downvote as -1 to score, then use the score as the
hotness, before decaying by age. It's simple and not optimized at all, but it
gives the general effect we're looking for.

~~~
epe
The clearest explanation I've ever seen of this method is here:

[http://www.evanmiller.org/rank-hotness-with-newtons-law-
of-c...](http://www.evanmiller.org/rank-hotness-with-newtons-law-of-
cooling.html)

~~~
mindcrime
Heh, yeah, I think that's the same page I originally used to come up with an
approach to doing this. There are also some discussions of this same topic on
StackExchange and some other sites.

------
Subcide
Might be able to use something like this as a starting point (though it's
vote-based, but seems to support decay over time)
<http://code.google.com/appengine/articles/overheard.html>

------
Visit_Scotland
hotness needs a time based component like velocity coupled with relevance

e.g. responded to ('liked' or viewed) x times within y minutes + relevance
(it's very funny &| it's topical &| it's trending elsewhere)

