Comments

  1. springa73 says

    It definitely just got shorter this evening for me, too. I’m not sure what causes it – maybe some of the posters and their most recent posts disappear from the list after a set amount of time has passed and the list gets shorter if all the most recent posts have come from a smaller number of contributors.

    I hope that you don’t stay overworked and can relax a little.

  2. Katydid says

    Looking at the list of Freethought Blogs on the left, there are people listed who haven’t posted in literally years. But of the recent posts, there’s only 6.

  3. says

    i did before the first time u suggested it. no reply yet, but he is a busy boy, and it’s outside his expertise so would likely involve calling a guy, and doesn’t bigly impact site function, so low priority…

  4. John Morales says

    Ah. Sorry.

    As penance, I just took a look at the page source, it’s currently got a static <ul> (unordered list) and 6 <li> (list item) tags which are the first 6 items in https://proxy.freethought.online/recent-posts/ to show them.

    <a href=”https://proxy.freethought.online/recent-posts/”>[Last 50 Recent Posts]</a> is where that full list is, and is visible on the sidebar.

    I think the page source has probably been generated server-side, seems a bit of a mess, but the full 50 are there.

  5. John Morales says

    Unless manually tweaked, I can’t think of how; can’t be a fencepost error, because it changes though the code does not, and that’s typically how one goes one off.
    List management, perhaps… dunno. Been a while since I coded.

    If the range of difference (can’t say I’ve paid attention in the past) exceeds 1, then it’s almost certainly manual tweaking, is what I think.

  6. John Morales says

    Mysterious.

    I used the bot to help me speculate, but it’s just that.
    Needs at least 3 independent processes, asynchronous.

    Here’s the corrected, explicit version with your clarification (the slice is arbitrary, so long as it’s ≥ 8):

    – **Process A (selector):** Always takes the fixed list of 50 and slices off a subset of “recent entries.” The size of this slice is arbitrary — it could be 8, 9, 12, etc. — but it is always at least 8.

    – **Process B (writer/assembler):** Iterates over that subset and writes “ elements into the output buffer one by one. This is asynchronous — each append may be scheduled via the event loop, promises, or callbacks.

    – **Process C (finaliser/committer):** Closes the “ and emits the HTML to the client. It does not generate entries; it simply seals whatever B has written at the moment it fires.

    Because there are no semaphores or explicit `await` between B and C, the race condition is:
    – If C fires after B has written 6 items, the “ closes with 6 “s.
    – If C fires after 7 items, you get 7 “s.
    – If C fires after 8 items, you get 8 “s.

    The variability is not in the source list (always 50) or the slice size (always ≥ 8). It is in the **timing between the asynchronous writer (B) and the finaliser (C)**. That’s why the sidebar sometimes shows 6, sometimes 7, sometimes 8.

  7. John Morales says

    [Also, your blog doesn’t support markdown.
    I should have remembered; anyway, I told the machine to redo that last in markup instead because it lost content thereby]

    Process A (selector): Always takes the fixed list of 50 and slices off a subset of “recent entries.” The size of this slice is arbitrary — it could be 8, 9, 12, etc. — but it is always at least 8.
    Process B (writer/assembler): Iterates over that subset and writes <li> elements into the output buffer one by one. This is asynchronous — each append may be scheduled via the event loop, promises, or callbacks.
    Process C (finaliser/committer): Closes the <ul> and emits the HTML to the client. It does not generate entries; it simply seals whatever B has written at the moment it fires.

    Because there are no semaphores or explicit await between B and C, the race condition is:

    If C fires after B has written 6 items, the <ul> closes with 6 <li>s.
    If C fires after 7 items, you get 7 <li>s.
    If C fires after 8 items, you get 8 <li>s.

    The variability is not in the source list (always 50) or the slice size (always ≥ 8). It is in the timing between the asynchronous writer (B) and the finaliser (C). That’s why the sidebar sometimes shows 6, sometimes 7, sometimes 8.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.