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). He/him.

(header photo by Brian Maffitt)

  • 2 Posts
  • 9 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!







  • Additionally, it’s helpful to know the specific language used in Article 5:

    Article 5

    “The Parties agree that an armed attack against one or more of them in Europe or North America shall be considered an attack against them all and consequently they agree that, if such an armed attack occurs, each of them, in exercise of the right of individual or collective self-defence recognized by Article 51 of the Charter of the United Nations, will assist the Party or Parties so attacked by taking forthwith, individually and in concert with the other Parties, such action as it deems necessary, including the use of armed force, to restore and maintain the security of the North Atlantic area.

    Any such armed attack and all measures taken as a result thereof shall immediately be reported to the Security Council. Such measures shall be terminated when the Security Council has taken the measures necessary to restore and maintain international peace and security.” (emphasis added)

    Article 5 doesn’t actually oblige NATO members to defend anything by force, it obliges NATO members to decide what actions are “deemed necessary” and then to undertake those actions. If a NATO member gets invaded, everyone could – in theory – write a sternly worded letter and call it a day (though I doubt that would be the actual response). As you/others have more or less said, the actual action chosen would largely be the result of political will.