How HOT is calculated
There are two feeds. NEW is simply newest-first. HOTbalances how many upvotes a product has against how long it has been up — so fresh work can surface, and yesterday's hits gradually settle down instead of squatting the top forever.
The formula
Every product gets a score, and HOT sorts by it, highest first:
score = votes ÷ (hours_since_posted + 2)1.8
What each part does
- votes — total upvotes (one per signed-in person).
- hours since posted — as a product ages, the denominator grows, so its score falls even if the votes don't change. That's the “decay.”
- the 1.8 exponent (“gravity”) — how fast things sink. Higher gravity makes older products drop away faster.
- the +2 — softens the very first hours, so a single early vote can't rocket a brand-new post straight to #1 (and it avoids dividing by near-zero).
A worked example
Three products, ranked by HOT right now:
| Product | Votes | Age | Score |
|---|---|---|---|
| B | 6 | 2 hours | ≈ 0.50 |
| C | 1 | just posted | ≈ 0.29 |
| A | 50 | 2 days | ≈ 0.04 |
Notice that B — two hours old with just six votes — outranks A, which has fifty votes but is two days old. Fifty votes spread over two days can't out-pull a burst of fresh momentum. That's the point: HOT rewards what's catching on now.
Why it's built this way
- Fresh work gets a real shot. A new product doesn't need to out-vote everything that came before — it just needs momentum in its first hours.
- The top rotates. Decay means no product can sit at #1 indefinitely; the feed stays worth checking.
- It resists gaming. Votes are sign-in-gated, one per person, and the count is enforced on the server — so the score is hard to inflate.
Prefer raw recency? The NEW feed is strict newest-first. Or jump to HOT.