pull down to refresh
is the item and is the zaps on item
controls the half life
I think I've got a static (time invariant) sort key for this. The exponent is huge and I can't store a log value because negative zap amounts are a thing. I have to store the time of the last zap along with the moving sum in order to incrementally update the sum right, but it isn't that bad (especially for how cool it is).
Wouldn't you be taking the exponent of a negative, so it would only shrink down to zero at some point?
I see. You're wanting to update the sum incrementally by adding the right-most component each time. Newer zaps have a larger zap_time and thus a higher weight. But the weights are enormous because of the exponent.
Wasn't quite sure what you meant by only having to store the time of the last zap and the moving sum though.
I think you'd have to update the rank of all the other items at the same time that item gets zapped, otherwise item 's rank relative to other items might actually go down, because its old rank gets down-weighted via the exponent.
(As an example, imagine item gets a zap of just 1 sat. Its old rank gets down-weighted for time, by the increase from the 1 sat is negligible.)
Probably just drop the zaps that are older than some preset amount too
the exponential decay pretty much zeros out old zaps contributions anyway, so the only different it'd make would be the computational speed of filtering out old zaps vs. extra calculations by including them
Computation is what I was thinking about, but I didn't think about the computation of filtering
Nice! That's roughly what I arrived at as an accumulator for making a resurface decision. When it exceeds a dynamic threshold, I'd move forward the effective_age.
I've been a little hesitant to give full control to recent zaps alone, but I'm probably just FUDing myself and it's worth experimenting with.
Edit: It also hadn't occurred to me to use it raw like this until your comment. I think this would make it worth being in the back catalog.
I've been a little hesitant to give full control to recent zaps alone, but I'm probably just FUDing myself and it's worth experimenting with.
I think the difference would be pretty marginal. 95% of zaps happen in the first 48 hours. At least this gives a chance of good old posts to resurface.
We'll see. I think if posts are able to resurface and people can earn rewards for zapping them when they do, then we'll see more zaps on older posts.
I've explored this some. Ranking works on item age and sats. To let new zaps on old items pull an item up in ranking, we'd replace item age with an
effective_agethat's influenced by the recency of zaps. Computingeffective_ageis where it gets tricky but I think I can figure it out.