AnnouncementsMatrixEventsFunnyVideosMusicAncapsTechnologyEconomicsPrivacyGIFSCringeAnarchyFilmPicsThemesIdeas4MatrixAskMatrixHelpTop Subs
7
Add topics
Comment preview
[-]x0x73(+3|0)

There is a general math problem that guaretees this. I think a better way of looking at is as a bank. You should want your post to take a long time because you are contributing to the bank.

The issue is queue theory. There is no algorithm I could make that prioritizes front page health that will not have one of two problems. But when you understand what post whenever is for you realize one of those isn't a problem but is the point.

In queuing theory if the size of a queue can impact the rate of flow that is called pressure. If the flow is dictated by the needs of the front page only then there is no pressure. If there is no pressure than the input rate and the output rate of the queue are independent.

If they are independent then there is one of two possibilities. Option 1: The output rate is faster than the input rate. Then the queue doesn't operate as a queue. There is no point. The well dries up and we no longer have post whenever as a resource. Option 2: The output rate is slower than the input rate. This is the better of the two options. Not only can posts take a long time but the queue is by definition growing and things will take even longer in the future. There is no way to bound this number without applying pressure. Applying pressure is different than pulling from the queue when it is most advantageous for the front page.

What this means, if we apply option 2, that makes it a benefit instead of an error is we will always have a pool of posts to make the front page the highest quality it can be. But this means posts will take whatever time they take to pop out. That's why it's called post whenever.


What I'm about to do is do a bit of statistical analysis of all the most successful reddit alternatives and see what their age distribution is on the top five posts. If we are able to hit it that will be our target. But because that is a global prioritization the queue's ingress and egress will be independent and so the queue time will either be zero or a slowly growing unbounded number.

Because the entire point of post whenever is to give people an opportunity to contribute to ideal front page health that's how we are going to tune it. Now that I have content in there (it was a long delay to get to that stage), I can now do that tuning. But tuning for poster experience is a competing tuning not just in fundamental mathematics but also complexity and effort, and purpose of code.

Once we have it tuned for front page health we may find some flexibility in the targets where we could fit in some back/forward pressure. But the other level 2 nuance to consider besides post age is the vote distribution on the front. The point is to make the front page look attractive. There are two things people are looking at when judging a reddit alternative in the first 30 seconds. Are the posts crazy old? Are the post upvoted? If I add out of post whenever faster than people upvote then I would just be contributing to one of the two ways a front page looks dead.

But if you all upvote like mad I may be able to entirely skip thinking about that factor. Otherwise queue time tuning will end up third in the dev order.

The other lever I have to tune that timing is tuning the input rate by making the extra points dynamic. But I would want to stick to integers. Maybe I could cut it back to 2 now that there is content. But I'm going to hold off on that since the queue is currently shrinking.


The remaining lever to tune is the user selection distribution. It has to be a semi-combined queue because of trying to give myself the flexibility to do different things with tuning for the front page. So there is going to be (and currently is) an algorithm that decides when to pull one from the general queue. Then we pick which user's queue to pick from. Then it picks one post based on the users preference to pull from the front, back, or random. But how we pick the user is where we have some options that have inherent competition.

We know what properties we want but the question is how much do we want each one. I've set it up so it is not either or. But it is how much of A vs B. This is much better than if it were either or. If it were I'd be guaranteed to have someone complaining no matter which one I picked.

Properties we want but can't co-exist without compromise:
Every post has exactly the same queue time
A user posting more does not cause their queue time to increase
Every user gets an equal number of posts coming out of the queue from each user
One user adding a lot of content (thank you) does not cause the queue time to slow down an insane amount for everyone else
We get a rate or timing based on the front page's needs

You can't have all of them.

A simple solution to deciding which one or finding some complex algorithm that happen to hit each evenly by chance is to make it a tunable compromise with a bit of math.

Select a user based on a weighted average where W=count^(1/K). Once a user is selected, pick a post based on their queue preference.

So basically take the square root of the count to hit between being proportional to the number of posts someone has in the queue and drawing evenly between all users. But instead of a square root it's tunable so you can control how much. Right now K=4 because Jason was bitching that he wanted all the queues to be independent. So functionally they pretty much are. At 4 there is only a slight bias toward picking someone with a larger count. But we are processing from the people with larger counts a little bit faster to make their queue times not get truly insane and to reward them with more posts. I'd like to push it down to 2 so people who have contributed more like Larry aren't waiting forever for their post to clear. But I put it high because Jason was demanding the queues be independent and that's basically doing that but within some tunable code which is better than being locked into one algoritm where if you want to change it you have to write new code and get some spaghetti from a bunch of code edits.


tl;dr: It's a bank. Queuing theory making tuning queue times a bitch if you care about anything other than a queue time. Contributing to the bank is appreciated. Add as much content to it as you can where it can be in there for a long long time. Being cool with things staying in the queue for a long time lets us do other things that will make the site more marketable and will grow the user base.

[-]soundsituation2(+2|0)

It just amps up the anticipation.

I think the queue idea is great. Shills get really upset when they can't control the narrative on other sites and lose their collective minds when you take over the first page or two of new. Over the course of the entire day, this is trivial, but getting noticed by shills starts their games where they work to ban you.

Not that I'm saying there is a shill problem, here, but there is definitely one over at upgoat. People are still crying about Q, for example, and the only reason they'd be doing that is if they are holdovers from the QRV shills versus GreatAwakening shills slap fight.

  • Independent queue flow: Posts enter at your pace and leave based on front-page needs, not on your schedule.
  • Positive backlog: He intentionally allows queue time to grow because that ensures the front page never "dries up."
  • Fairness model:
    • Each user has their own queue.
    • Post selection is weighted by how many posts you have queued. (Big posters still get slightly faster throughput, but not so much that they dominate.)
    • The current weight function is $W = \text{count}^{1/4}$, meaning heavy posters get a mild advantage. He may move to $W = \text{count}^{1/2}$ (K=2), giving big posters more speed.
  • Output rate tuning: Posts leave based on overall front-page needs, not user impatience.
  • Front page look factor: He wants posts that are:
    • Not all very old (avoiding a "dead site" feel).
    • Already upvoted (so new users see "good" content right away).