Currently studying CS and some other stuff. Best known for previously being top 50 (OCE) in LoL, expert RoN modder, and creator of RoN:EE’s community patch (CBP).

(header photo by Brian Maffitt)

  • 0 Posts
  • 5 Comments
Joined 2 years ago
cake
Cake day: June 17th, 2023

help-circle


  • You’re making assumptions about how they work based on your intuition - luckily we don’t need to do much guesswork about how the sorts are actually implemented because we can just look at the code to check:

    CREATE FUNCTION r.scaled_rank (score numeric, published timestamp with time zone, interactions_month numeric)
        RETURNS double precision
        LANGUAGE sql
        IMMUTABLE PARALLEL SAFE
        -- Add 2 to avoid divide by zero errors
        -- Default for score = 1, active users = 1, and now, is (0.1728 / log(2 + 1)) = 0.3621
        -- There may need to be a scale factor multiplied to interactions_month, to make
        -- the log curve less pronounced. This can be tuned in the future.
        RETURN (
            r.hot_rank (score, published) / log(2 + interactions_month)
    );
    

    And since it relies on the hot_rank function:

    CREATE FUNCTION r.hot_rank (score numeric, published timestamp with time zone)
        RETURNS double precision
        LANGUAGE sql
        IMMUTABLE PARALLEL SAFE RETURN
        -- after a week, it will default to 0.
        CASE WHEN (
    now() - published) > '0 days'
            AND (
    now() - published) < '7 days' THEN
            -- Use greatest(2,score), so that the hot_rank will be positive and not ignored.
            log (
                greatest (2, score + 2)) / power (((EXTRACT(EPOCH FROM (now() - published)) / 3600) + 2), 1.8)
        ELSE
            -- if the post is from the future, set hot score to 0. otherwise you can game the post to
            -- always be on top even with only 1 vote by setting it to the future
            0.0
        END;
    

    So if there’s no further changes made elsewhere in the code (which may not be true!), it appears that hot has no negative weighting for votes <2 because it uses the max value out of 2 and score + 2 in its calculation. If correct, those posts you’re pointing out are essentially being ranked as if their voting score was 2, which I hope helps to explain things.


    edit: while looking for the function someone else beat me to it and it looks like possibly the hot_rank function I posted may or may not be the current version but hopefully you get the idea regardless!



  • After many years of selectively evaluating and purchasing bundles as my main source of new games, I’ve come to wonder if it would’ve been better to just buy the individual games when I wanted to play them at whatever the available price was - the rate at which I get through games is far lower than the rate at which games are available in “good” bundles. In the end I’m not even sure if I’ve saved money (because of how many games have been bought but are as-of-yet unplayed) and it does take more time to evaluate whether something’s a good deal or not.

    The upside is way more potential variety of games to pull from in my library, but if I only play at most like 1-2 dozen new games a year then I’m not sure that counts for much 🫠