home.social

Search

653 results for “long_live_rock_n_roll”

  1. Second Death

    Hi everyone! I hope you’re all well. Today, I thought I’d share a little horror short that I wrote a while ago and couldn’t decide what to do with. I hope you enjoy it!

    Second Death

    He felt the spark of consciousness fill his mind. He was aware now.

    He tried to move but found that nothing worked; even the muscles that lifted his eyelids failed him. In fact, every muscle in his body was frozen. He was paralysed, though by what or how, he could not say.

    His mind was sluggish and foggy, his memory having all but failed entirely, depriving him of the knowledge of who or where he was, but leaving everything else. The only reasoning for his current situation that he could come up with was that he had been in some sort of terrible accident, perhaps having been run over by a horse and buggy, and was now lying on some bed in the London hospital, a poultice wrapped around his head. The streets were a mess with horses and buggies these days. He knew that, at least.

    The fact that his mind had woken before the rest of his body did not frighten him. He knew this sort of thing happened every day in London; people being brought to the hospital in all manner of conscious states, and since he felt no pain, he was certain that somebody was taking very good care of him indeed.

    As he lay there, waiting for his body to catch up with his brain, some vestigial ember, a flicker of activity deep inside his mind, sparked, sending images rushing to the fore. A jumble of faces accosted him as his memory began to slowly filter through the abstract dam that had thus far held it back; women in long grey dresses with white aprons and white caps, and men, some old and bearded, some young and clean-shaven, but all wearing dark clothes. Somehow, he knew they were doctors and nurses.

    However, since waking up, he had heard no doctors or nurses—nor anybody else for that matter—coming to check on him. Had he been forgotten? Had they left him alone, thinking that he might never wake? His heart began to quicken at the thought that he might actually be stuck like this forever, that he might be trapped inside the confines of his own mind, his own mental walls slowly closing in on him. Surely, he would begin to disappear into insanity.

    The thought of being left in his current state until his body died of starvation and dehydration filled him with anxiety. He had to wake up. He had to force his mind and body to work in unison once more. He had to move, somehow; his very survival depended on it.

    Forcing his mind to work harder, he saw flashes of whitewashed walls and long, narrow corridors, and at first, he thought perhaps he might have been conscious upon his arrival at the hospital. 

    As sensation began to return little by little to his muscles, it occurred to him rather suddenly that there was a lack of sound. For a brief moment, he considered the fact that he may have gone deaf; he had known it to happen with head injuries, although he didn’t know how he knew, but the sound of his own breath leaving his lungs quelled the fear instantly.

    He was further relieved when he began to wiggle his toes, and further still when his fingers began to twitch. With each passing moment and every twitching phalanx, he felt the fear of his being trapped inside of himself ebbing away.

    Straining, he tried to open his eyes. He felt his lids fluttering, but everything remained dark. As he tensed and released each muscle in his legs and arms, still unable to fully move them yet, he willed his eyelids to cooperate—but darkness remained absolute. He tried again, and again, panic surging as he considered that he may have gone blind; he knew this, too, could sometimes happen with head injuries and again, how he knew this eluded him.

    As his heart quickly became a bass drum inside his ribcage, threatening to burst out at any moment, adrenaline surged through his body, and he felt his spine twitch—he willed his body to sit up, but the most he could manage was a slight raising of his head. He tried to gather himself, taking a deep breath, and then tried again, straining against himself as he attempted to fully reconnect his mind with his body. Drawing on every ounce of strength he could muster, he tried again, straining, straining, straining and… yes… yes… and…

    He jerked upward and—SLAM! His forehead collided painfully with something solid. The impact caused a spark, and in an instant, everything came rushing back. He was Eliot Smith, a doctor at The London Hospital. The adrenaline had acted like coal being shovelled into a waiting empty furnace; his whole body was mobile now; he could move his arms, his hands. He reached up, frantically exploring the area around him.

    As he felt the silk lining, the unyielding wood. The truth slammed into him with cold brutality—he had been buried alive.

    Terror consumed him. He screamed and clawed desperately, tearing at the lining and wood until his fingers bled. He pounded, kicked, and screamed until he felt his heart burst painfully in his chest. And with one final gasp of horror, he fell silent again—this time, forever.

    The End.

    Thanks for reading, if you did. I appreciate your time, and I hope you enjoyed it!

    As ever, thanks for stopping by!

    Until next time,

    George

    © 2026 GLT

    #death #horror #horrorStory #shortStories #shortStory #stories #writing
  2. I moved a client's marketing site to Astro a few weeks ago. Astro 7 was the reason — the Rust compiler and stable route caching cut the build from ~4 minutes to about 90 seconds. Fast builds were the whole point.

    Then I hit the one thing Astro can't do out of the box: accept a contact form submission.

    Here's the honest version of what I tried, what worked, and the two gotchas that cost me an afternoon.

    Why Astro forms trip people up


    Astro is component-first and ships almost zero client-side JavaScript. Most "add a form" tutorials assume a Node runtime. Three things follow from that, and they're the reason this feels different from a Next.js or Rails form:

    1. A form has to POST somewhere. The action attribute is just a URL. There's no "submit to Astro" without an adapter.
    2. Astro Actions need a server adapter. They're stable and genuinely type-safe, but they require output: 'server' or 'hybrid' plus @astrojs/vercel / netlify / cloudflare / node. On the default output: 'static' build, they don't run.
    3. No spam filtering is included. Neither Actions nor a plain <form> ships with detection. That's on you.


    What I tried (and why I backed out)


    Astro Actions. Beautiful DX, end-to-end typed. But to handle one 3-field contact form I had to flip output: 'static' to 'server', add an adapter, manage secrets, and accept cold starts. My "static site" now had a server. That's a lot of surface area for a page that asks for a name, an email, and a message.

    Netlify Forms. Five minutes, genuinely nice — but the site was on Vercel, so it was a non-starter. The lock-in matters more than the price tag.

    Cloudflare Turnstile + Workers. Turnstile is a great CAPTCHA (free, accessible, no image grids). But to use it on Vercel I now maintain a Worker. I'd traded an adapter for a different server to maintain.

    What actually shipped: a plain HTML form POSTing to an external endpoint. No adapter, no server, no secrets.

    The form


    This is the entire integration. src/components/ContactForm.astro:

    <form
    action="https://api.usesmartform.com/api/v1/f/YOUR_FORM_ID"
    method="POST"
    >
    <label for="name">Name</label>
    <input id="name" name="name" type="text" required minlength="2" />

    <label for="email">Email</label>
    <input id="email" name="email" type="email" required />

    <label for="message">Message</label>
    <textarea id="message" name="message" rows="6" required minlength="10"></textarea>

    {/* Honeypot — bots fill it, humans never see it */}
    <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off" />

    {/* Where to send the browser after a successful submit */}
    <input type="hidden" name="_next" value="https://yoursite.com/thanks" />

    <button type="submit">Send Message</button>
    </form>

    Drop it in a page and you're done. Astro's whole pitch is zero JS by default, and a method="POST" form navigates to the endpoint and back — the service returns a 302 to your _next URL. No client-side state, no hydration cost, no framework.

    It doesn't matter whether the surrounding page is an Astro component or a React/Vue/Svelte island. As long as the rendered DOM contains <form action="..." method="POST">, the submission lands.

    Gotcha #1: the Accept header


    If you want an inline success message instead of a page redirect, use fetch. The first version I wrote returned a 302, and fetch followed it cross-origin into a CORS error that looked like a server outage.

    const res = await fetch("https://api.usesmartform.com/api/v1/f/YOUR_FORM_ID", {
    method: "POST",
    body: new FormData(form),
    headers: { Accept: "application/json" }, // ← required
    });

    if (res.ok) {
    const data = await res.json(); // includes next_url
    status.textContent = "Thanks — we'll get back to you shortly.";
    form.reset();
    }

    Always send Accept: application/json. You get JSON back (including next_url) instead of a redirect.

    Gotcha #2: the honeypot needs three attributes


    display:none alone isn't enough. I had style="display:none" and still saw bots post clean submissions, because they'd learned to skip hidden inputs. Adding tabindex="-1" (keeps it out of keyboard nav) and autocomplete="off" (keeps password managers out) closed the gap.

    To actually test the filter I removed the honeypot for a day, watched bot traffic arrive, then put it back and watched those same submissions get dropped server-side — silently, with no email and no quota deduction.

    Spam: layer it, don't pick one

    MethodFreeUser frictionCatchesHoneypot fieldYesNoneThe dumbest botsCloudflare TurnstileYes (≤20 widgets)Almost noneBrowser-level botsreCAPTCHA v3Yes (≤1M/mo)NoneScript bots, but flags real users sometimesML filter (server-side)YesNoneTargeted / scripted spam


    What I ended up with: honeypot as the cheap first layer, a server-side classifier behind it, and Turnstile in front only on the demo-request form where a false positive costs us a lead.

    When I'd use Astro Actions instead


    If you already have output: 'server' and an adapter, use Astro Actions. If you're tying submissions to a logged-in user, or the form writes to your database, Actions is the right tool. I'm not against it — I just didn't want to add a server to a static site for one contact form.

    It's also fine to mix. That site uses Actions for in-product feedback and an external endpoint for the marketing contact form. They're independent.

    Verdict


    For a static Astro site with one marketing form, the whole thing should be ~20 lines of HTML and zero infrastructure. That's what I shipped. The hosted-service part is my own tool, so treat that section as biased — but the underlying pattern (a plain POST to an endpoint) works with any provider, including one you run yourself.

    I didn't want to write this as a sales pitch, but full disclosure: the external endpoint I used is my own product, SmartForm AI. The plain POST pattern works with any provider. If you want the full comparison matrix, I put the long-form version on my blog (linked in the comments).

    Happy to answer questions in the comments.#astro #webdev #frontend #tutorial #software #coding #development #engineering #inclusive #community
    I Added a Contact Form to an Astro Site Without a Backend

  3. Charmy’s Army in “DEE SEAST – The Hell of the Ball” – Part 3: Blue Vests and Brown Bananas

    <<< Previous COMIC strip NEXT COMIC STRIP >>>

    In the third installment of our saga, panic reaches a fever pitch before colliding directly with mundane retail logistics. Convinced that Walmart’s customer service desk has instituted a terrifying new policy for processing refunds, the ponytail girl spiraled into sheer dread: will returning a defective toaster get her tossed into a holding pen to be devoured by domesticated ghouls? Thankfully, the blonde clears the air. Dee isn’t eating dissatisfied shoppers; she works in the meat department devouring the expired cuts. She isn’t a mindless trash can, either—as corporate HR would insist, she is a proud “Waste Management Facilitator.”

    The fluorescent lights of the retail district buzzed overhead like a hive of mechanical hornets. The ponytail girl stood dead in the center of the sidewalk, completely frozen in terror, clutching both hands to her face. Her eyes were practically the size of saucers, and her breathing sounded like a bellows working overtime.

    “I bought a set of non-stick sauté pans three weeks ago,” she whispered, her voice trembling with sheer, unadulterated existential dread. “The coating is already flaking off near the handle. I have the receipt in my purse. I was literally planning to go to Customer Care this afternoon. But now? Now I know the truth! They’re going to look at my receipt, see that the packaging is torn, hit a discreet red button under the desk, and drop me down a trapdoor into Dee’s feeding pit!”

    The blonde stared at her friend for three long seconds, an expression of profound exhaustion settling across her features. She pinched the bridge of her nose and let out a deep, shuddering sigh that blew a stray blonde lock out of her eyes.

    “Have you ever, in your entire life, heard of a big-box store feeding actual human customers to an employee?” the blonde asked flatly. “Do you realize the liability insurance premiums on that alone? The Occupational Safety and Health Administration would have field inspectors crawling through the air ducts within forty-eight hours. The paperwork would take decades.”

    “Corporations do terrible things to protect their quarterly profit margins!” the ponytail girl insisted, gesticulating wildly toward the towering blue sign visible above the tree line. “Think about it! Customer returns cost money! Salvage freight costs money! If you replace the return desk with an apex predator from beyond the grave, refund requests drop to absolute zero overnight! It’s the ultimate cost-cutting measure!”

    “She’s in the meat department, you absolute lunatic,” the blonde barked, grabbing her friend by the arm and dragging her along the pavement. “She doesn’t eat dissatisfied patrons who lost their receipt for a shower curtain. She eats the brown ground chuck and the discount chicken thighs that have been sitting in the display cooler forty-eight hours past their sell-by date!”

    The ponytail girl blinked once. Twice. Her frantic breathing slowed down, though the look of absolute disgust remained firmly plastered across her face. “Wait… what?”

    “You heard Charmy earlier,” the blonde continued, shaking her head. “Food waste is one of the biggest logistical hurdles in supermarket management. Stores throw away literal tons of spoiled produce, dented cans, and graying beef every single calendar year. Landfills charge dumping fees. Commercial composters have strict guidelines. But an undead post-human? Their digestive systems—or whatever remaining chemical soup passes for an internal organ—can neutralize bacteria that would put a vulture into an intensive care unit.”

    “So she’s a garbage disposal,” the ponytail girl summarized, wrinkling her nose until her freckles scrunched into a tight knot. “A glorified, walking, rotting kitchen sink drain with bangs.”

    “Charmy said she prefers the title Waste Management Facilitator,” the blonde corrected with an ironic smirk. “Corporate America doesn’t hire monsters; they hire operational specialists. They probably gave her an orientation badge, a five-minute video on slips, trips, and falls, and a designated break room in the refrigerated storage annex so she doesn’t scare the bakery associates.”

    Across the street, Charmy and Dee had paused outside a small convenience store. Dee was leaning against a lamppost, her head tilted at a precarious angle that suggested her neck vertebrae were merely suggestive guidelines. A passing delivery driver glanced at her, double-took, and quickly crossed the street with an expression of profound confusion, but nobody screamed. Nobody dialed the national guard. The world had simply absorbed the unthinkable and filed it away under routine municipal oddities.

    “I don’t know what’s worse,” the ponytail girl muttered, watching Dee attempt to scratch her shoulder and nearly dislocating her collarbone in the process. “The idea that the zombie apocalypse ended with our society almost being overrun, or the idea that it ended with the survivors realizing zombies could be exploited for unpaid sanitation labor.”

    “Welcome to late-stage capitalism,” the blonde replied with a dry chuckle. “If a catastrophic virus wipes out twenty percent of the population, the remaining eighty percent won’t mourn; they’ll just figure out how to put the fallen to work clearing out the dairy aisle. But hey, look at the bright side: at least Dee is earning an honest living. It’s more than half the guys you’ve dated this year can say.”

    “That is a low blow and completely uncalled for,” the ponytail girl grumbled, though she couldn’t suppress a faint, cynical grin. “At least my exes showered once a week. Dee looks like she just crawled out of an abandoned septic tank behind a haunted waterpark.”

    “True,” the blonde agreed, watching as Charmy gently handed Dee a small bottle of hand sanitizer, which she promptly attempted to drink before Charmy calmly redirected it to her palms. “She’s definitely rough around the edges. But that brings up an even more pressing dilemma: with Halloween coming up, what does an integrated undead citizen do for social life? And more importantly… what does this mean for the town dance?”

    TO BE CONTINUED….

    Rate this:

    #books #fantasy #fiction #shortStory #writing
  4. BeeLadybug, my open-source debug overlay, has always shown what's happening in real time: FPS, logs, !important, z-index traps, clicks being swallowed by the wrong element.

    The problem is the overlay. Make it big and it covers the game or the page you're debugging. Make it small, the way it is now, and you're squinting at a phone-sized box on the left of the screen while the rows scroll past.

    One evening I gave up and asked myself a simple question: why can't I just press a key and get everything on one page, to read calmly?

    One key, one file


    Version 0.6.1 adds exportReport(). Press F8, or the EXPORT button, and you get report-YYYYMMDD-HHMM.html:

    • a summary at the top: errors, warnings, ok
    • the Core log with sim time and frame
    • series: FPS min / avg / max, nodes, mutations
    • one section per adapter: Canvas hitboxes and collisions, DOM box model and clipped nodes, CSS (!important, stacking contexts, intercepted clicks, overflow), long tasks, slow resources, Python metrics

    It's plain HTML with a dark theme. Ctrl+P turns it into a PDF. You can also get json (for CI or an AI agent) or csv (for a spreadsheet).

    import { BeeLadybugCore, exportReport } from 'bee-ladybug';

    const bee = new BeeLadybugCore();
    // ...attach adapters...
    exportReport(bee, { format: 'html' }); // downloads the file

    In headless mode (ui: false) nothing is downloaded. The function just returns the data, so it works in Node and in bots too.

    How it fits a "blind" Core


    The Core still knows nothing about Canvas, the DOM or Python. Each adapter can now register an optional snapshot() hook that returns rows like { severity, selector, rule, value, source }. The exporter asks every registered adapter for its snapshot, and if one throws, it becomes a single warn row while the rest of the report still renders. A new adapter only has to implement snapshot() to show up in the report.

    Then I pointed it at real sites


    First, my own games portal. It found:

    • my .entry-content creating a stacking context that traps the z-index of the game grid
    • a container blocking clicks on three elements
    • an average of 33 FPS, which explains a lot

    Then, for fun, a big professional games portal. 25 errors, 51 warnings 😄 To be fair, most of them are intentional tricks: negative margins so a carousel can bleed to the edges, and content clipped on purpose inside cards. Their site works great. It still averaged ~52 FPS with 3× my DOM nodes, which taught me more than the error count did.

    …and it found bugs in itself


    The best part of testing on real pages: the report exposed its own weak spots.

    • an icon from the WordPress admin bar slipped through the filter
    • the same row repeated dozens of times instead of being grouped as ×N
    • the summary said "0 errors" while the log had four of them

    All three are being fixed. A debugger that finds bugs in itself on its first real run felt like a good sign.

    Try it


    Install it in your project:

    npm i bee-ladybug

    Or try it right now without installing: open any page, press F12 and paste this in the console, then press F8 for the report.

    import('https://cdn.jsdelivr.net/npm/[email protected]/src/index.js')
    .then(({ BeeLadybugCore, WebDOMAdapter, CSSAdapter }) => {
    const bee = new BeeLadybugCore();
    new WebDOMAdapter(bee, { root: document.body }).attach();
    new CSSAdapter(bee).attach();
    window.bee = bee;
    });

    Feedback welcome, especially from people debugging Canvas games and DOM-heavy pages.#javascript #webdev #debugging #opensource #software #coding #development #engineering #inclusive #community
    I got tired of reading CSS bugs in a tiny overlay, so I made my debugger print a report

  5. DATE: October 26, 2026 at 04:00PM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Women reach orgasm more often alone, but partnered orgasms are more closely tied to sexual satisfaction

    URL: psypost.org/women-reach-orgasm

    Women tend to reach orgasm more often during solo sex than with a partner, but a new study suggests that partnered orgasms are the ones more closely tied to overall sexual satisfaction. The survey of nearly 28,000 users of a period-tracking app, published in Archives of Sexual Behavior, also found that a wider variety of partnered activities was linked to greater satisfaction, while variety in solo sex showed no such benefit.

    Sexual satisfaction refers to a person’s overall evaluation of how fulfilling and pleasurable their sex life is, a measure closely tied to overall health and quality of life. Past research has consistently linked women’s sexual satisfaction to how often they reach orgasm and to sexual variety, which is the number of different sexual behaviors a person engages in. For instance, a 2017 national survey of U.S. adults found that people in long-term relationships who incorporated a wider range of intimate behaviors and had more frequent orgasms tended to feel more satisfied with their sex lives.

    Reaching orgasm with a partner, however, is far less consistent for women than reaching orgasm alone, a disparity examined in a 2024 review of the partnered orgasm gap. That review noted that 38 to 92 percent of women usually or always climax when masturbating, and that women’s orgasm rates rise sharply when sexual activity includes direct stimulation of the clitoris, a small, highly sensitive organ at the top of the vulva. During partnered sex with men, routines often center on vaginal penetration alone, leaving many women without the stimulation needed to climax.

    Because solo sex is such a reliable source of orgasms, one might expect frequent masturbation to boost sexual satisfaction, yet prior research has yielded mixed results. Among studies of women in a 2024 systematic review, 40 percent found no link between masturbation and sexual satisfaction, a third found a negative link, and about a quarter found a positive one.

    The review’s authors argued that negative links may arise when masturbation compensates for unfulfilling or absent partnered sex, but they found that for women, masturbation more often seemed to complement partnered sex rather than replace it. The context of solo activity may also matter: a study covered by PsyPost in 2020 indicated that women who used vibrators both alone and with a partner reported higher sexual satisfaction than those who used vibrators only alone.

    Most earlier studies examined only a narrow set of partnered behaviors or treated masturbation as a single category without comparing specific solo and partnered activities side by side. To explore how distinct behaviors, variety, and orgasms relate to satisfaction across both contexts, Yella Hewings-Martin and Adam C. Cunningham of Flo Health UK Limited and their colleagues surveyed users of the Flo health app to test whether solo orgasms and variety relate to overall satisfaction the same way partnered ones do.

    The researchers recruited participants between April 11 and May 5, 2024, via in-app messages shown to adult English-speaking Flo users. From 70,424 initial responses, the team excluded users who did not complete the survey, lacked a valid app ID, or failed two attention-check questions, leaving 27,931 participants with an average age of 28 years. Nearly all respondents were biologically female (98.9 percent) and identified as women (96.4 percent); 70.7 percent identified as heterosexual, 23.1 percent as bisexual or pansexual, and 81.3 percent had a male partner.

    Respondents reported on their sex lives over the previous six months, rating their overall sexual satisfaction on a five-point scale and their orgasm frequency from never to almost always. They also rated how often they engaged in 13 partnered and 13 solo sexual activities, including vaginal penetration, clitoral stimulation by hand or vibrator, watching erotica, and role-play, and how often each behavior led to orgasm. Multiplying activity frequency by orgasm frequency yielded weighted orgasm scores for solo and partnered contexts. Those who climaxed more often in one setting than the other selected up to three reasons from 22 options to explain why.

    Across the full sample, 56.2 percent of participants were moderately or very satisfied with their overall sex life, while 19.5 percent were moderately or very dissatisfied. Roughly 36.9 percent reached orgasm almost always or always, and 22.9 percent did so most of the time, whereas 20.6 percent climaxed less than half the time or never. Overall orgasm frequency had a moderate positive correlation with sexual satisfaction (r = 0.38, on a scale where 1 would be a perfect match): 61.2 percent of very satisfied respondents reached orgasm almost always, though 19.5 percent of very dissatisfied respondents also climaxed almost every time.

    The data showed a difference between the behaviors performed most consistently at every encounter and those practiced by the widest share of women overall. Vaginal penetration without other stimulation was the partnered behavior most consistently performed every time (39.7 percent), but clitoral stimulation by a partner’s hand, mouth, or tongue was the most widespread partnered activity overall (90.2 percent at least sometimes), followed closely by vaginal penetration paired with other body stimulation (90.1 percent) and by vaginal penetration paired with clitoral touch (90.0 percent).

    The authors noted that clitoral stimulation topping the list of widespread partnered behaviors contrasts with older surveys where vaginal intercourse was most common. They suggest this likely reflects their more detailed questions about a six-month period, though they also speculate that it could partly reflect a younger sample (38 percent of respondents were aged 18 to 25).

    In solo sex, clitoral stimulation by hand was both the most widespread behavior (84.6 percent) and the most consistent (44.5 percent every time), while only 5.5 percent practiced solo vaginal penetration alone every time. Across all 13 paired comparisons of similar activities, women reached orgasm more frequently when alone than with a partner, with differences ranging from small to moderate. Overall, 47 percent of participants reported reaching orgasm more often during solo sex, compared to 21 percent with a partner and 27 percent who reported no difference.

    In solo sessions, clitoral stimulation with a vibrator or dildo, watching erotica, and clitoral stimulation by hand were linked to the highest orgasm rates. During partnered sex, the highest orgasm rates came from using sex toys together, combining vaginal penetration with clitoral stimulation, and masturbating with a partner present, while vaginal penetration alone and anal stimulation were linked to the lowest rates in both contexts.

    Participants’ own explanations pointed to both psychological and physical factors. Women who climaxed more often alone most commonly cited inadequate stimulation from a partner, an absence of pressure to perform, reduced body image self-consciousness, and feeling safer to let go because they controlled the stimulation. Many also pointed to partnered obstacles such as a partner finishing too soon, difficulty communicating preferences, life stress, or painful intercourse. By contrast, those who reached orgasm more often with a partner emphasized emotional intimacy, adequate partner stimulation, and heightened arousal from attraction to their partner.

    To examine how solo and partnered experiences predicted overall sexual satisfaction, the authors analyzed the 19,469 respondents who had engaged in partnered sex during the past six months. Partnered orgasm frequency was the strongest positive predictor of sexual satisfaction, whereas solo orgasm frequency showed a tiny negative association in initial models and was not statistically significant in the final model. Participants averaged 7.79 of the 13 partnered activities and 6.45 of the 13 solo activities; greater partnered variety predicted higher satisfaction, while greater solo variety was weakly associated with lower satisfaction. Together, these factors accounted for about 16 percent of the differences in satisfaction between participants.

    In a separate model of 20,805 partnered-sex participants controlling for relationship status, being in a relationship and engaging in greater partnered variety both predicted higher overall orgasm frequency, whereas solo variety was not statistically significant. That model accounted for about 7 percent of the differences in orgasm frequency between participants.

    The positive tie between partnered climax and satisfaction aligns with research covered by PsyPost in 2018, which examined heterosexual newlywed couples rather than a broad sample of female app users and similarly found that a woman’s partnered orgasm frequency is positively linked to her sexual satisfaction. At the same time, the findings on solo sex and variety stand in tension with a study covered by PsyPost in 2022, which linked frequent masturbation in women to higher sexual satisfaction alongside frequent intercourse and variety. That earlier study, however, looked at overall masturbation frequency across a broad adult population, whereas the new study specifically evaluated solo orgasm frequency and sexual variety among female app users.

    There are a few things to keep in mind when interpreting these findings. Because the survey captured data at a single point in time, it cannot establish cause and effect: women who already feel happy and secure in their relationships may simply feel more comfortable exploring a wider variety of activities with their partners, while women experiencing an unfulfilling partnered sex life may turn to solo masturbation and try more solo techniques to compensate. In addition, sexual satisfaction was measured with a single question about a respondent’s overall sex life, which many people may naturally judge based on their partnered relationships rather than their solo habits. The large sample size also makes it possible to detect tiny statistical differences that have little practical impact in daily life.

    The sample consisted of English-speaking users of a health tracking app who were mostly young, White, and heterosexual, and about half held a bachelor’s degree or higher. Because participants volunteered for a study described as being about female orgasms, they may be more comfortable discussing sex, or more sexually active, than women in general. Four of the authors are employees of Flo Health with equity in the company, and the other three are consultants for it.

    The authors suggest that bringing elements of solo sex into partnered encounters, such as open communication about preferences and less pressure to perform, could help narrow the gap between solo and partnered orgasms. Future research tracking couples over time could help explain how emotional closeness, trust, and communication interact with physical stimulation to shape sexual fulfillment.

    The study, “Sexual Satisfaction and Orgasm Experiences During Partnered and Solo Sex Among 27,931 Users of the Flo App,” was authored by Yella Hewings-Martin, Adam C. Cunningham, Jordan Rullo, Karen L. Blair, Carley Prentice, Anna Klepchukova, and Liudmila Zhaunova.

    URL: psypost.org/women-reach-orgasm

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #SexualHealth #SexualWellness #WomensHealth #FemaleOrgasm #SexualSatisfaction #OrgasmGap #Intimacy #HealthyRelationships #SexualityResearch #HealthResearch

  6. CW: This article explores a fictional genetic-engineering hypothesis about human origins. It is speculative and does not present evidence that humans were engineered by an external species.

    What If Humans Were Engineered From Apes? The 2% That Could Change Everything

    What if humanity were the result of an advanced genetic experiment? A speculative thought experiment, not a scientific claim.

    Dear Cherubs, what if humanity wasn’t simply the result of evolution, but the outcome of an experiment conducted by a species so advanced that modifying life was as routine for them as updating software is for us? Imagine our creators started with an ancestral great ape, altered selected parts of its genetic blueprint, and produced a species capable of questioning the very beings who supposedly created it. Science fiction? Absolutely. But as a thought experiment, it raises some fascinating questions.

    THE 2% THAT CHANGED EVERYTHING

    First, let’s get the biology straight. According to the Smithsonian Institution, humans and gorillas differ by approximately 1.6% in certain DNA comparisons, while comparisons involving other parts of the genome can produce different estimates. Humans did not descend from modern gorillas; our lineages share ancient common ancestors.

    Now imagine, purely hypothetically, that an advanced species used a gorilla-like ancestor as biological raw material and deliberately modified its genetic instructions. The result wouldn’t necessarily require adding an arbitrary 2% of DNA. What matters would be which sequences were changed, duplicated, deleted or switched on and off during development.

    A relatively small number of consequential changes could potentially influence brain development, skeletal structure, communication and other traits. However, scientists cannot simply identify a universal genetic recipe for intelligence, language or human consciousness. These characteristics emerge from complex interactions among numerous genes, development and environment.

    Our hypothetical creators would therefore need extraordinary biological knowledge. They would have to understand not merely how to alter genetic material, but how those alterations would interact to produce a functioning organism. That would be a serious technological flex.

    WHO WOULD OUR CREATORS BE?

    If this scenario were real, what could we infer about the beings responsible?

    Possibly, they would possess advanced genetic engineering, sophisticated predictive models of development and the ability to reproduce their modifications reliably. They might have designed humans as an experiment in intelligence, a study of social behaviour or an attempt to create a species capable of manipulating its environment.

    But their motives would remain a mystery. Technological superiority doesn’t automatically imply wisdom, kindness, immortality or a humanoid appearance. Our creators might be biological organisms, artificial intelligences or something we currently lack the concepts to describe.

    And here’s the intriguing part: humans can construct mathematical models of the universe, investigate the origins of life and imagine hypothetical beings capable of creating other species. We can even question whether our own origins have been misunderstood. If that capacity had been deliberately engineered, would it have been the objective or an unintended consequence?

    THE CREATOR’S BIGGEST MISTAKE?

    Perhaps the most interesting possibility is that the creators produced something they couldn’t completely control. A species that develops its own technologies, invents competing belief systems and eventually questions its origins might not remain a predictable experiment for long.

    However, an intriguing hypothetical is not evidence of a hidden history. Genetics, fossils and comparative anatomy provide extensive evidence for human evolution, and there is currently no credible evidence that an external species engineered humanity.

    Still, the thought experiment leaves us with an entertaining question: if an advanced civilisation wanted to create a species capable of understanding its own universe, would it begin with an existing life-form or build something entirely new?

    Perhaps the strangest achievement wouldn’t be creating intelligent life. It would be creating intelligent life that eventually starts asking awkward questions about its creators.

    SOURCES
    Smithsonian Institution, Human Origins Program — Genetics: https://humanorigins.si.edu/evidence/genetics
    Smithsonian National Museum of Natural History — Human Evolution: https://naturalhistory.si.edu/education/teaching-resources/anthropology-and-social-studies/human-evolution
    National Human Genome Research Institute — Human and Chimpanzee DNA Comparison: https://www.genome.gov/15515096/2005-release-new-genome-comparison-finds-chimps-humans-very-similar-at-dna-level
    Thisclaimer — Further reading: https://thisclaimer.com/

    The Thisclaimer logo blends a classic warning symbol with a brain icon to represent critical thinking, curiosity, and thoughtful disclaimers #creationTheories #extraterrestrialHypothesis #geneticEngineering #gorillaDna #humanEvolution #humanIntelligence #humanOrigins #originOfHumanity #scienceThoughtExperiment #speculativeScience
  7. DATE: October 26, 2026 at 12:00PM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Frequent cannabis use linked to higher odds of nighttime breathing problems

    URL: psypost.org/frequent-cannabis-

    Adults who use cannabis are more likely to report loud snoring and pauses in breathing during the night, according to new research published in Sleep Health: Journal of the National Sleep Foundation. The findings indicate that more frequent cannabis consumption corresponds with higher odds of experiencing these nocturnal breathing issues, even after accounting for factors like body weight and tobacco smoking. This relationship raises important questions for the growing number of people who turn to cannabis as a sleep aid.

    Sleep-disordered breathing is an umbrella term for medical conditions characterized by abnormal respiratory patterns or insufficient ventilation during rest. The most common form is obstructive sleep apnea, a disorder in which the muscles in the back of the throat relax too much, causing the upper airway to narrow or collapse entirely. People with this condition require extra physical effort to breathe, often resulting in loud snoring, gasping, or brief, repeated stops in breathing known as apneas. Standard treatments like continuous positive airway pressure machines, oral appliances, and surgery can be effective, yet many patients find the devices uncomfortable or difficult to tolerate over the long term.

    At the same time, cannabis has become increasingly accessible across the United States, and difficulty sleeping is one of the most common reasons people cite for using it. While users frequently report that the plant helps them rest, controlled clinical trials examining cannabinoids and sleep have produced mixed outcomes.

    For example, a 2023 clinical trial covered by PsyPost found that consuming medicinal cannabis oil improved sleep duration and increased midnight melatonin levels in adults with insomnia, whereas a study covered by PsyPost in 2024 indicated that a cannabis compound called cannabinol reduced nighttime awakenings when taken alone but showed no benefit when combined with cannabidiol, another cannabis compound. Observational tracking also points to potential drawbacks, such as a 2026 longitudinal study of military service members that linked current cannabis use to worse overall sleep quality and longer times needed to fall asleep.

    When it comes to breathing disorders specifically, tetrahydrocannabinol, the primary psychoactive compound in cannabis, has shown some potential to stabilize breathing in animal experiments and small human trials using oral pills. However, the broader clinical evidence remains inconsistent, leading the American Academy of Sleep Medicine to formally advise against using cannabis to treat obstructive sleep apnea. Most everyday consumers inhale cannabis rather than taking standardized pills, exposing their airways to smoke and heat that could inflame the tissues of the throat.

    The new research, led by Tyler J. Gallagher, a resident physician in the Caruso Department of Otolaryngology-Head and Neck Surgery at the Keck School of Medicine of the University of Southern California, and co-first author Matthew E. Lin of the David Geffen School of Medicine at the University of California, Los Angeles, sought to evaluate how everyday consumption relates to signs of breathing issues at night.

    “While some studies have explored cannabinoids as potential treatments for obstructive sleep apnea, there has been relatively little population-level research examining whether real-world cannabis use is associated with common signs of sleep-disordered breathing, such as loud snoring and pauses in breathing during sleep,” Gallagher told PsyPost. “We sought to better understand this relationship using a nationally representative sample of US adults.”

    To investigate this connection, the authors analyzed information from the 2017 to 2018 Behavioral Risk Factor Surveillance System, a state-based telephone survey coordinated by the Centers for Disease Control and Prevention. Although nearly 900,000 adults completed the main survey during those two years, only Minnesota and Tennessee included optional survey modules asking about both cannabis habits and sleep breathing symptoms. From the respondents in those two states who had complete data, the researchers selected a stratified random sample of 14,485 adults designed to match the demographic profile of the broader United States population.

    Participants were asked how many days they had used marijuana or cannabis during the past 30 days, as well as their primary method of consumption and whether they used it for medical or recreational purposes. The researchers grouped the respondents into three categories: non-users (zero days in the past month), non-regular users (1 to 15 days), and regular users (16 to 30 days). Signs of sleep-disordered breathing were assessed using two yes-or-no questions asking if anyone had ever observed the respondent stop breathing during sleep, and if the respondent had ever been told that they snore loudly.

    Of the participants, 13,461 reported no current cannabis use, 438 were classified as non-regular users, and 364 were regular users, meaning about 5.5 percent of the sample currently used cannabis. Smoking was by far the most common consumption method, reported by about 87 percent of both non-regular and regular consumers, followed by vaporizing and eating. Among non-regular users, 61.6 percent used cannabis strictly for recreational reasons, whereas 37.6 percent of regular users reported using it strictly for medical reasons and another 24.7 percent used it for both medical and recreational purposes.

    Overall, signs of sleep-disordered breathing were common across the entire cohort, with 44.7 percent reporting either loud snoring or witnessed apneas. In the unadjusted raw numbers, 44.3 percent of non-users reported at least one of the two breathing signs, compared to 48.4 percent of non-regular users and 55.2 percent of regular users. Specifically, witnessed breathing pauses were reported by 15.3 percent of non-users, 17.1 percent of non-regular users, and 19.8 percent of regular users. Loud snoring was reported by 41.3 percent of non-users, 44.5 percent of non-regular users, and 50.0 percent of regular users.

    To account for other differences between users and non-users, the researchers ran statistical models that applied national survey weights (statistical adjustments that make a sample better mirror the U.S. adult population) and controlled for a wide range of potentially confounding factors. These adjustments accounted for age, sex, race and ethnicity, education, income, health insurance status, diabetes, body mass index, alcohol consumption, traditional cigarette smoking, and electronic cigarette use. Even after factoring out the influence of tobacco smoking and body weight, cannabis use remained independently associated with higher odds of sleep-disordered breathing symptoms.

    Compared to non-users, non-regular cannabis users had 41 percent higher odds of reporting witnessed apneas, 26 percent higher odds of reporting loud snoring, and 33 percent higher odds of experiencing either symptom. The association was more pronounced among regular consumers. Those who used cannabis 16 to 30 days per month had 73 percent higher odds of witnessed apneas, 68 percent higher odds of loud snoring, and 82 percent higher odds of reporting either sign compared to non-users. These figures describe odds rather than probabilities, so the absolute differences are smaller than the percentages might suggest; in the raw numbers, about 55 percent of regular users reported at least one sign, compared with about 44 percent of non-users.

    “While the impact of infrequent use is relatively small, the odds of irregular breathing during sleep almost double with more frequent cannabis use, making this a strong association worthy of consideration before frequent cannabis utilization,” Gallagher explained.

    The researchers also analyzed cannabis consumption as a continuous spectrum from zero to 30 days. In the weighted models, each additional day of cannabis use per month was associated with an approximate 2 percent increase in the odds of reporting witnessed apneas, loud snoring, or either sign, an estimate the authors note is clinically small and serves as a general summary across use levels rather than a strict per-day effect. When the authors repeated the analysis without the national survey weights, regular cannabis use remained linked to both breathing signs, though the estimates were smaller (for example, 36 percent higher odds of either sign rather than 82 percent). In that analysis, non-regular use was no longer linked to loud snoring or to either sign, and its link with witnessed breathing pauses sat right at the threshold of statistical significance.

    “The strength of the association and its greater magnitude among more frequent users were notable, particularly given that some studies have investigated cannabinoids as potential treatments for sleep apnea,” Gallagher said. “These findings may reflect differences between isolated cannabinoids studied in clinical settings and real-world cannabis use, including differences in composition and method of consumption.”

    The authors proposed two primary biological mechanisms that might explain why cannabis consumers report more signs of airway obstruction at night. Because roughly 87 percent of the consumers in the sample smoked their cannabis, physical irritation from smoke is one possible contributor. Unlike tobacco, cannabis smoke is typically inhaled through deeper breaths without a filter, and it burns at a higher temperature, which can cause thermal injury and inflammation in the throat tissues that narrow the upper airway.

    A second potential mechanism involves the way cannabis interacts with the autonomic nervous system, which regulates involuntary body functions. While small doses of cannabis tend to stimulate the sympathetic nervous system, the body’s “fight or flight” system, higher doses activate the parasympathetic nervous system, which promotes physical relaxation. Frequent users may develop tolerance and consume larger quantities, and the resulting parasympathetic activity may cause the muscles that hold the upper airway open to relax excessively during sleep, making the throat more likely to collapse.

    There are a few things to keep in mind when interpreting these findings. Because the survey captured information at a single point in time, the study cannot establish whether cannabis use causes sleep-disordered breathing or if the relationship works in the opposite direction. People who suffer from undiagnosed sleep apnea often experience fragmented, unrefreshing sleep, and it is possible that some of these individuals turn to cannabis in an attempt to self-medicate their exhaustion or insomnia. The researchers also could not account for factors such as sleeping pill or sedative use, heavy drinking, or psychiatric conditions, any of which might influence both cannabis use and nighttime breathing.

    The reliance on self-reported telephone survey data also introduces constraints. Asking participants if they have been told they snore or stop breathing is less reliable than conducting an overnight medical sleep study, and people who sleep alone may be unaware of their nighttime breathing habits. Additionally, the survey only tracked how many days a person used cannabis over the past month, without measuring the exact dosage, potency, or ratio of specific compounds like tetrahydrocannabinol and cannabidiol.

    The data came from just two states, Minnesota and Tennessee, because they were the only ones to include both sets of questions, and roughly 98 percent of the original survey respondents were excluded for that reason or because of missing information. Survey weights help align the sample with national demographics, but the authors note that applying them to such a small subset is debated among statisticians. In addition, the breathing questions asked whether these symptoms had ever been observed, while the cannabis question covered only the past month, so some symptoms may have predated participants’ current cannabis habits.

    Gallagher emphasized that reporting these symptoms is not the same as receiving a formal medical diagnosis. “While obstructive sleep apnea – a clinically defined and hazardous intermittent airway obstruction during sleep – is a type of sleep-disordered breathing, this study cannot make conclusions about the association between cannabis use and sleep apnea or other associated long-term risks,” he noted.

    Future research will need to incorporate objective sleep testing, such as polysomnography, an overnight sleep study that monitors breathing, oxygen levels, and brain activity, to verify whether cannabis habits correspond with clinically diagnosed sleep apnea. Scientists also need to compare different delivery methods, such as edibles versus inhalation, to separate the chemical effects of cannabinoids on throat muscles from possible damage from inhaling hot smoke.

    “Further research is required to examine the long-term effects of cannabis use on sleep and to determine the effects of cannabis dosage, different cannabis compositions, and different methods of consumption on sleep-disordered breathing,” Gallagher said. “Additionally, the long-term consequences of these impacts must be studied.”

    Until those relationships are clarified, the authors suggest that physicians should counsel patients about the potential respiratory risks of using cannabis, particularly for individuals who already show signs of sleep-disordered breathing. “People experiencing persistent snoring, pauses in breathing, or other symptoms of sleep apnea should seek medical evaluation rather than trying to utilize cannabis to manage their sleep,” Gallagher advised.

    “This study highlights the importance of evaluating the broader health effects of substances that people increasingly use for self-management,” Gallagher added. “Cannabis may have benefits for certain symptoms or conditions, but those potential benefits should be considered alongside possible risks. Sleep-disordered breathing is particularly important because it can go unrecognized for years while causing significantly worse quality-of-life. We hope these findings encourage further research and help clinicians have more informed conversations with patients who use cannabis for sleep-related concerns.”

    The study, “Cannabis use and associated sleep-disordered breathing among US adults,” was authored by Tyler J. Gallagher, Matthew E. Lin, Ian Kim, Ziva D. Cooper, Sebastian M. Jara, and Eric J. Kezirian.

    URL: psypost.org/frequent-cannabis-

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #Cannabis #SleepHealth #SleepApnea #SleepDisorderedBreathing #LoudSnoring #NighttimeBreathing #RespiratoryHealth #HealthResearch #MedicalResearch #SleepAwareness

  8. We’re coming up fast on Halloween so let’s talk about the Batman Effect. If you’ve ever put on a costume, you may have noticed that you act a little differently in it. What does the research say?

    Batman Effect part 1:

    Imagine a six-year-old sitting in front of a laptop, doing the most boring task a team of researchers could design. Right beside the laptop is an iPad with a game on it, and the child has been told they can play it whenever they like. Every minute, a recorded voice asks whether they’re working hard.

    Now give that child a Batman cape and change the question to “Is Batman working hard?”

    That’s the setup of a 2017 study that gave us the name “the Batman effect”.1 Researchers asked 180 four and six year olds to stick with a dull task for ten minutes while that iPad sat there tempting them. Some kids were asked about themselves (“Am I working hard?”). Some were asked about themselves by name, in the third person. The rest picked a character, were given a prop to match, and were asked about the character instead.

    The kids who were Batman (or Rapunzel, or Dora, or Bob the Builder) stayed on task longer than either of the other groups. Some of them even answered the recorded voice out loud with “Batman is working hard”, and if they’d wandered off to the iPad, they went back to work.

    So what’s going on?

    Continue reading on my blog because it's too long for here.
    blog.mikebowler.ca/2026/10/26/

  9. DATE: October 26, 2026 at 09:00AM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: Playing video games with trusted friends may reduce addiction risks

    URL: psypost.org/playing-video-game

    Video game developers constantly look for ways to keep players returning to their games without fostering unhealthy behavioral dependencies. Recent research published in Computers in Human Behavior reveals that playing video games with a trusted, familiar group of people can build player loyalty while simultaneously reducing the risk of video game addiction. These findings suggest that the social environment within a digital game plays a powerful role in determining whether a gaming habit remains a healthy pastime or becomes a psychological burden.

    The video game industry faces a persistent tension between business goals and social responsibility. Companies rely on player loyalty, which describes a gamer’s intention to keep playing and recommending a specific game to others. At the same time, the industry faces scrutiny over video game addiction, a clinical syndrome characterized by a loss of control over gaming habits despite negative consequences in daily life.

    Past studies have identified factors that contribute to addiction, such as social isolation, and factors that boost loyalty, like customized digital avatars. Few researchers have investigated how specific social dynamics inside a game might influence both outcomes at the same time. A team of researchers led by Shih-I Tai, a management scholar at Chang Gung University in Taiwan, wanted to find out if specific types of group interactions could help secure a player’s devotion to a game without pushing them toward maladaptive behavior.

    To understand how the social environment alters a player’s mental state, the researchers looked at two established psychological frameworks. The first is the pleasure-arousal theory, which separates emotions into two dimensions. One dimension tracks how pleasant an experience feels, while the other tracks how much it stimulates or arouses the person.

    The second framework is brain reward circuitry theory. This theory suggests that pleasure and arousal activate entirely different neural pathways in the human brain. According to these frameworks, feelings of comfort, harmony, and contentment increase pleasure but lower physical and emotional arousal.

    In contrast, surprises and intense excitement boost both pleasure and arousal at the same time. The research team hypothesized that high pleasure encourages players to return to a game, building long-term loyalty. High arousal provides the intense neurological reinforcement that can lead to addiction.

    To test these ideas, the researchers conducted an online survey of 884 video game players in Taiwan. The participants answered detailed questions about their gaming habits over the previous month. The respondents nominated a game they had played recently, which frequently included games where massive numbers of players assume fictional roles and interact in a shared digital world.

    The research team ensured the reliability of their data by excluding responses from participants under the age of 18 or people who reported impossible play times. The survey measured four distinct aspects of the gaming experience. The researchers asked players about the size of their usual gaming group and how many of those group members they knew in the real world.

    They also asked participants to rate their level of trust in their fellow group members. Finally, the survey assessed game escapism, which measures the extent to which players use the game to actively avoid stress from their everyday lives.

    The researchers then compared these four factors against self-reported measures of game loyalty and game addiction. They analyzed the data using structural equation modeling, a statistical technique that helps identify relationships among multiple variables. The results showed that different social elements influenced players in entirely distinct ways.

    When looking at the size of a player’s gaming group, the data showed a positive link to game loyalty. Players who routinely gamed with larger groups were more likely to report intentions to keep playing and recommending the game to others. However, group size was not statistically significant in relation to game addiction.

    The researchers suspect that larger groups provide more social connections that make the game enjoyable, satisfying the pleasure dimension. At the same time, massive groups often introduce repetitive interactions or toxic behavior that dampen the intense overall excitement needed to form a dependency.

    The findings regarding real-world familiarity showed a different pattern. Knowing fellow players in the real world was not statistically significant when predicting a player’s loyalty to a game. It did correspond with lower levels of game addiction.

    The researchers propose that when gamers play with real-world acquaintances, those friends might occasionally remind them of outside responsibilities. This social grounding breaks the immersive spell of the game and lowers the intense emotional arousal that drives compulsive play.

    Trust among group members proved to be the most beneficial social factor. High levels of trust within a gaming group corresponded with both increased game loyalty and decreased game addiction. Engaging with honest and reliable peers likely provides a comforting, highly pleasant experience that makes players want to return.

    This same comfort and harmony create a relaxed state of mind. Trusting one’s peers reduces the high-stakes anxiety and arousal typically associated with addictive behavior. If a player trusts their group to act in their best interest, they receive social support that helps maintain a healthy balance between gaming and life.

    In contrast to the protective social factors, game escapism had a dual effect. Using games to flee real-world stress strongly predicted higher game loyalty, as the temporary relief provided a rewarding experience. Yet escapism also strongly predicted higher levels of game addiction. Fleeing reality into a digital space immerses the player intensely, heightening the emotional arousal that stimulates the brain’s reward centers in a maladaptive way.

    While the data offer insights into player behavior, the study relies on survey responses rather than direct observations. The researchers measured self-reported habits and feelings at a single point in time, meaning the results highlight associations rather than a strict cause-and-effect relationship. It is possible that players who are already less prone to addiction are simply more inclined to build trusting relationships with their peers.

    The researchers used psychological theories regarding brain activity to interpret their findings, but they did not conduct medical brain scans or directly measure the participants’ physiological arousal and pleasure. Future studies could incorporate clinical monitoring tools, such as electroencephalograms, to verify exactly how these social interactions alter brain activity in real time.

    Additionally, the survey was conducted entirely in Taiwan, which means the findings might be influenced by local cultural norms regarding socializing and technology use. Expanding this research to include gamers in different countries could reveal whether the protective effects of trust and real-world familiarity remain consistent across diverse cultural backgrounds.

    The study, “The ties that (healthily) bind: Playing in groups increases game loyalty but decrease addiction,” was authored by Shih-I Tai, Thi Tuan Linh Pham, Tzu-Ling Huang, Alexander S. Dennis, Chun-Hao Liu, Gen-Yih Liao, and Ching-I Teng.

    URL: psypost.org/playing-video-game

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #Gaming #VideoGames #GamingCommunity #GamingFriends #HealthyGaming #MentalHealth #GameAddiction #SocialGaming #PlayerWellbeing #GamingResearch

  10. A CPU-bound Python job split across four threads took 3.6 seconds on my machine. The same job split across four of Python 3.14's new subinterpreters took 0.9 seconds, roughly what one thread alone takes to do a quarter of the work. That part matched what I expected from the PEP. What I did not expect was that asking one of those subinterpreters to run two things at once does not slow it down. It refuses outright.

    concurrent.interpreters is new in the standard library as of Python 3.14, released on 7 October 2026. Subinterpreters themselves are not new - they have existed in the C API since Python 1.5 and CPython has used them internally for years - but PEP 734 is what makes them usable from ordinary Python code, with no C extension required. Each subinterpreter gets its own Global Interpreter Lock, which is the part worth testing: it is the thing that is supposed to let CPU-bound Python code actually use more than one core without reaching for multiprocessing.

    I tested it against a CPU-bound workload (counting primes below 400,000, a plain Python double loop with no C extensions to hide behind), compared against threads, processes, and a single thread, three runs each, inside a python:3.14-slim container with four cores available.

    The headline number

    approachtime for 4x the worksingle thread (1x unit, for reference)0.77 - 0.80s4 OS threads, classic GIL3.51 - 3.70s4 subinterpreters (new in 3.14)0.89 - 0.98s4 processes (multiprocessing)0.95 - 1.30s


    Four threads doing four units of CPU-bound work took more than four times as long as one thread doing one unit - 3.6s against roughly 0.8s, which is actually a bit worse than the 3.2s you'd get from perfect serialisation, because the GIL has to keep stopping one thread to let another run. Four subinterpreters doing the same four units took about 0.9s: close enough to the single-unit baseline that the extra three units of work were, for practical purposes, free. That is real parallelism, not a scheduling trick, and it lands in the same place multiprocessing already does.

    What it refuses: one thread per interpreter, not shared


    The PEP's selling point is that each interpreter has its own GIL. I wanted to see what happens when two threads try to use one interpreter's GIL at the same time, expecting it to behave like classic Python: both threads run, the shared GIL makes them take turns.

    That is not what happened. A single Interpreter object only tolerates one caller. A second concurrent call doesn't queue, and it doesn't share time with the first - it is rejected immediately:

    Exception in thread Thread-2 (_call):
    Traceback (most recent call last):
    File "/usr/local/lib/python3.14/concurrent/interpreters/__init__.py", line 226, in _call
    res, excinfo = _interpreters.call(self._id, callable, args, kwargs, restrict=True)
    concurrent.interpreters.InterpreterError: interpreter already running

    I confirmed the shape of this with three variants of the same interpreter, run in sequence:

    scenariotimeoutcomeone call0.84sfinetwo sequential calls, same interpreter1.63sfine, roughly 2xtwo concurrent calls, same interpreter0.84s wall-clocksecond call raises InterpreterError


    interpreters.create() is documented as returning "a new (idle) Python interpreter", and that word is accurate: idle or running, nothing in between. If you want N things running at once, you need N interpreters, one each. A thread pool aimed at a single shared interpreter - the pattern every ThreadPoolExecutor tutorial uses with regular threads - does not translate. You get one interpreter's worth of work and an exception, not graceful serialisation.

    The opposite number: interpreters are not obviously cheaper to start than processes


    The other assumption I walked in with was that subinterpreters, being lighter than OS processes, would be cheap to spin up. I measured the cost of creating four workers and giving each one some real state (a 200,000-element list), steady state after the first warm-up run:

    approachcreate + populate, 4 workersfork (Python 3.13's Linux default)0.037 - 0.038sforkserver (Python 3.14's Linux default)0.057 - 0.065s4 subinterpreters0.076 - 0.078s


    Creating four subinterpreters and running a small amount of code in each took about twice as long as a classic fork-based process pool, and somewhat longer than the new forkserver default too. None of this matters once the work inside each worker takes more than a few milliseconds - the 3.6s-versus-0.9s number above swallows an 80-millisecond setup cost without noticing. But it means "subinterpreters are lighter than processes" is not something I could verify at creation time; the saving, where it exists, is in not forking a second copy of the process's address space, not in any faster start.

    That forkserver row was an accident. I wrote a timing script that called multiprocessing.Process(...).start() directly from the module's top level, the way plenty of tutorial code still does, and it crashed:

    RuntimeError:
    An attempt has been made to start a new process before the
    current process has finished its bootstrapping phase.

    Checking multiprocessing.get_start_method() explained it: Python 3.14 changed the default start method on Linux from fork to forkserver. Python 3.13 reports fork; 3.14 reports forkserver. forkserver re-imports your module in the child, which is exactly the thing if __name__ == "__main__": exists to guard against, and which fork never required you to bother with. Every piece of multiprocessing code I'd written without that guard over the years happened to work by accident, on Linux, until this release. It's a one-line fix, but it is a real break, and it landed in the same release that gives you an alternative that doesn't have this problem at all.

    What it costs: closing an interpreter doesn't give the memory back


    I ran four rounds of "create four interpreters, give each a 200,000-element list, close them", watching my own process's RSS the whole time:

    round 1: 16920 -> 55648 KB
    round 2: 55648 -> 57140 KB
    round 3: 57140 -> 59476 KB
    round 4: 59476 -> 61096 KB

    .close() does finalise the interpreter - a destroyed interpreter can't be called again, and I checked that it raises if you try - but the process's resident memory never drops back to where it started. It flattens out (each later round adds less than the first) rather than growing without bound, which looks like CPython's allocator holding onto freed arenas rather than a genuine leak, but I didn't chase that further. If you're planning to cycle through many short-lived interpreters inside one long-running process, budget for that memory to stay resident, not to be returned to the OS the way a finished process's memory is.

    What's actually shareable between interpreters


    Subinterpreters don't share objects by default - that is the entire point, it's what lets them skip the GIL - so most interesting values need to cross a boundary. is_shareable() gives a yes/no answer per type:

    int -> True
    str -> True
    bytes -> True
    None -> True
    bool -> True
    tuple of ints -> True
    float -> True
    list -> False
    dict -> False

    Passing a threading.Lock as an argument to Interpreter.call() fails immediately, with the repr of the offending object right there in the message:

    NotShareableError: (<unlocked _thread.lock object at 0x7f61b8b5add0>,) does not support cross-interpreter data

    An ordinary custom class instance fails the same way, with a flatter message:

    NotShareableError: object does not support cross-interpreter data

    But the cross-interpreter Queue that the same module provides does not enforce this. I put a plain custom-class instance onto a queue and it went through without complaint, and came back out as a distinct, working object with the same attribute values - the queue silently pickles and unpickles it:

    q = interpreters.create_queue()
    q.put(Thing()) # no error
    received = q.get()
    # received is not the original object, but received.value is unchanged

    So "not shareable" is enforced differently depending on how the object crosses over. A direct argument to call() is checked against the strict shareable-types list and rejected on the spot. The same object dropped into a Queue gets the softer treatment the docs describe for put(): pickled going in, unpickled coming out as a new, unrelated object. If your code passes data between interpreters by argument, moving it to a queue instead buys you a much larger set of types - at the cost of identity and, for anything mutable, of staying in sync with the original.

    What I got wrong on the way


    My first attempt at the shareability tests put several checks in one script with no if __name__ == "__main__": guard, calling interp.call() with a mix of shareable and non-shareable arguments one after another. Running it printed every result twice, and the second copy sometimes disagreed with the first about which error got raised. My best explanation, which I didn't fully verify, is that call()'s documented pickle fallback needs to resolve names against the target interpreter's own __main__, and since that interpreter had never run my module, resolving anything defined at module level meant running the whole module there first - silently re-executing my test file a second time, inside the subinterpreter, with its own fresh state. Splitting each check into its own small script with a proper __main__ guard made every result reproducible, which is what's reported above. I'd treat any subinterpreter test that imports a lot of top-level code as suspect until it survives being run twice.

    Run it yourself


    This needs Python 3.14 and four-ish cores to see the gap clearly. I ran it in Docker because that's the fastest way to get an exact version:

    docker pull python:3.14-slim

    The core benchmark:

    # bench.py
    import time, threading, sys

    def cpu_work(n):
    count = 0
    for i in range(2, n):
    is_prime = True
    for d in range(2, int(i ** 0.5) + 1):
    if i % d == 0:
    is_prime = False
    break
    if is_prime:
    count += 1
    return count

    def run_threads(n, workers):
    threads = [threading.Thread(target=cpu_work, args=(n,)) for _ in range(workers)]
    t0 = time.perf_counter()
    for t in threads: t.start()
    for t in threads: t.join()
    print(f"threads={workers}: {time.perf_counter()-t0:.3f}s")

    def run_interpreters(n, workers):
    import concurrent.interpreters as interpreters
    interps = [interpreters.create() for _ in range(workers)]
    t0 = time.perf_counter()
    threads = [i.call_in_thread(cpu_work, n) for i in interps]
    for t in threads: t.join()
    print(f"interpreters={workers}: {time.perf_counter()-t0:.3f}s")
    for i in interps: i.close()

    if __name__ == "__main__":
    mode, n, workers = sys.argv[1], int(sys.argv[2]), int(sys.argv[3])
    {"threads": run_threads, "interpreters": run_interpreters}[mode](n, workers)

    docker run --rm -v "$PWD":/w -w /w python:3.14-slim python3 bench.py threads 400000 4
    docker run --rm -v "$PWD":/w -w /w python:3.14-slim python3 bench.py interpreters 400000 4

    And the refusal, which needs no setup at all:

    docker run --rm python:3.14-slim python3 -c "
    import concurrent.interpreters as interpreters
    i = interpreters.create()
    t1 = i.call_in_thread(lambda: __import__('time').sleep(1))
    t2 = i.call_in_thread(lambda: __import__('time').sleep(1))
    t1.join(); t2.join()
    "

    What to do with this


    If you have a CPU-bound Python workload that multiprocessing already parallelises well, subinterpreters aren't an obvious upgrade yet: on this release they start up slower than a plain fork and about the same as forkserver, and you still need one interpreter per concurrent task, with no pooling against a single interpreter. Where they're worth trying now is the code that currently reaches for a thread, because threading is simpler to wire up than multiprocessing, and then quietly gets nothing from the GIL: swap the Thread for an Interpreter.call_in_thread, and check your data either fits the shareable-types list or is willing to cross as a pickled copy through a Queue. And if you have multiprocessing code anywhere that starts a Process without an if __name__ == "__main__": guard, fix that first - 3.14 will find it on Linux even if nothing else in this post applies to you.#python #performance #programming #devops #software #coding #development #engineering #inclusive #community
    Python 3.14's concurrent.interpreters module turns a 3.6-second GIL bottleneck into 0.9 seconds

  11. I had an endpoint that sorts log lines as they come off a queue: route the ERROR ones one way, everything else another. The hot loop is one check, does this line start with "ERROR", and I'd written line.StartsWith("ERROR") without a second thought. It's the most obvious thing you can type.

    Then I had the service under load with a profiler open, and a surprising slice of time was parked inside CompareInfo and the globalization stack underneath it. For a prefix check on ASCII log lines. That's when it clicked that StartsWith(string) doesn't do what I thought it did.

    The default overload is linguistic, not literal


    Here's the thing I'd forgotten. string.StartsWith(string) and string.IndexOf(string), the overloads that take only a string, don't compare characters. They compare text, using the current culture's rules, which on most boxes means routing through ICU for a full linguistic comparison. That's the machinery that knows "ff" and "ff" are the same word, that a soft hyphen shouldn't count, that casing folds differently in Turkish. Handy when you're sorting names a person will read. Total overkill when you're asking whether a byte string begins with five known ASCII letters.

    The fix is to say what you actually meant:

    line.StartsWith("ERROR", StringComparison.Ordinal)

    Ordinal means compare the char values, in order, and stop. No culture, no collation table, no ICU.

    I counted it


    I don't trust my gut on this stuff, so I wrote the smallest thing that would show the gap. Two million log-ish lines in an array, five prefixes mixed in so the comparison has to actually look at characters:

    string[] prefixes = { "INFO ", "WARN ", "DEBUG ", "ERROR ", "TRACE " };
    var lines = new string[2_000_000];
    for (int i = 0; i < lines.Length; i++)
    lines[i] = prefixes[i % prefixes.Length] + "request " + i + " finished in " + (i % 400) + "ms";

    Then count how many start with "ERROR", the polite way and the ordinal way:

    static long CountCulture(string[] lines)
    {
    long n = 0;
    foreach (string s in lines)
    if (s.StartsWith("ERROR")) n++; // CurrentCulture
    return n;
    }

    static long CountOrdinal(string[] lines)
    {
    long n = 0;
    foreach (string s in lines)
    if (s.StartsWith("ERROR", StringComparison.Ordinal)) n++;
    return n;
    }

    The harness is nothing fancy. A stopwatch, a warmup call for each path so the JIT and the ICU tables are hot, then the best time out of seven, with the allocation counter read around each pass:

    static long Measure(Action a, out long bestMs)
    {
    bestMs = long.MaxValue;
    long bytes = 0;
    var sw = new Stopwatch();
    for (int run = 0; run < 7; run++)
    {
    long before = GC.GetAllocatedBytesForCurrentThread();
    sw.Restart();
    a();
    sw.Stop();
    bytes = GC.GetAllocatedBytesForCurrentThread() - before;
    if (sw.ElapsedMilliseconds < bestMs) bestMs = sw.ElapsedMilliseconds;
    }
    return bytes;
    }

    It's a single-file console app on .NET 10, top-level statements, nothing else in it. Here's what came back:

    StartsWith (culture) : 27 ms
    StartsWith (ordinal) : 18 ms
    ratio : 1.5x
    allocated (culture) : 0 bytes
    allocated (ordinal) : 0 bytes

    That was a bit of a letdown, if I'm honest. I'd built this up in my head as the villain and it came in at 1.5x. Real, repeatable, but not the kind of number that changes your afternoon. And neither path allocates a byte, so this is pure CPU, no garbage to chase.

    Then I ran the same question through IndexOf, because plenty of my "does this contain" checks are written the same lazy way:

    IndexOf (culture) : 109 ms
    IndexOf (ordinal) : 30 ms
    ratio : 3.6x

    There's the one that was actually hurting. A substring search under a linguistic comparison is a lot more work than a prefix check. It can't just glance at the front, it has to weigh matches at every position with full collation rules. Roughly 3.6x on the same data. That's the call I should have been worried about from the start.

    These are ratios off a Linux container, not a lab bench with the clocks pinned, so the absolute milliseconds will land somewhere else on your hardware. The shape holds up though: ordinal is cheaper, and substring search is cheaper by a lot more than a prefix check.

    Ordinal isn't a free find-and-replace


    Here's the caveat, and it's a real one. Ordinal and culture don't always give the same answer. That's the entire reason they're separate methods, and it's why you can't just sweep the codebase swapping one for the other.

    string shy = "co­op.log"; // a soft hyphen sits between "co" and "op"
    shy.StartsWith("coop"); // True - culture treats the hyphen as invisible
    shy.StartsWith("coop", StringComparison.Ordinal); // False - ordinal sees the hidden char

    Culture-aware comparison treats that soft hyphen as nothing, so it matches "coop". Ordinal sees nine characters and says no. For log routing, ordinal is exactly what I want: the literal content, invisible characters and all. For anything a human typed and expects to match "naturally", though, like search boxes, usernames, display sorting, the linguistic version is the correct one, and the extra cost is the price of being correct.

    My rule of thumb now: if the strings are protocol rather than prose, so headers, enum names, file extensions, log levels, anything machine-generated, reach for Ordinal or OrdinalIgnoreCase by default. If a person wrote it and a person will read it, leave the culture-aware comparison where it is. The analyzer CA1310 flags exactly these call sites if you switch it on, which beats grepping for them by hand.

    The quiet irony is that ordinal is both faster and usually what you meant for this kind of data. It's just not the default, and the default looks so harmless sitting there.

    So what's the laziest string comparison hiding in your hot path? Check the Contains calls first, those are IndexOf underneath.

    — still benchmarking corners of the standard library nobody asked me to#csharp #dotnet #programming #webdev #software #coding #development #engineering #inclusive #community
    StartsWith Was Asking ICU Every Time

  12. A few months ago, I was looking through a codebase I wrote over a year ago.

    Honestly? It was a nightmare.

    Nested loops everywhere, variable names that made sense only to 2:00 AM me, and functions that tried to do five different things at once. I spent almost two hours just trying to trace how a simple user authentication flow worked.

    That was my wake-up call. We often hear about "Clean Code" principles, heavy design patterns, and enterprise-level architecture. But when you’re building real-world projects or shipping features quickly, over-engineering code can be just as bad as writing messy code.

    Over time, I stripped away the fluff and focused on 4 dead-simple habits that completely changed how readable and maintainable my code is today.

    1. If You Need a Comment to Explain What Code Does, Rename It


    Earlier in my journey, I used to add comments above almost every line:

    JavaScript
    // Check if user is active and has paid
    if (u.st === 1 && u.p === true) { ... }
    Now, I let the code speak for itself:

    JavaScript
    const isEligibleUser = user.isActive && user.hasActiveSubscription;

    if (isEligibleUser) { ... }
    Comments should explain WHY a decision was made (e.g., worked around a specific browser bug or API limitation), not WHAT the code is physically doing. If your variables and functions are named clearly, the code becomes self-documenting.

    2. The Single Responsibility Rule (Keep Functions Boring)


    If a function is named createUserAndSendEmail(), it’s already doing too much.

    When a function tries to handle database queries, business logic, and third-party API calls all in one place:

    It becomes painful to write unit tests for it.

    Debugging takes twice as long when something breaks.

    Break it down. A function should ideally do one thing, do it well, and do it predictably. Keep your functions short enough that you don't need to scroll up and down to remember what variables were declared at the top.

    3. Early Returns Over Deeply Nested if Blocks


    Nothing ruins readability faster than the "Arrow Anti-pattern"—code that slowly drifts to the right side of your screen due to nested if/else statements.

    Instead of this:

    JavaScript
    function processOrder(order) {
    if (order) {
    if (order.isPaid) {
    if (order.hasStock) {
    // Process order
    }
    }
    }
    }
    Do this:

    JavaScript
    function processOrder(order) {
    if (!order) return;
    if (!order.isPaid) return;
    if (!order.hasStock) return;

    // Process order
    }
    Handling edge cases and invalid conditions at the very top of your function (guard clauses) keeps the main happy path clean, flat, and easy to follow.

    4. Delete Dead Code (Don't Hoard It)


    We’ve all done it: commenting out a block of 30 lines "just in case we need it later."

    Spoilers: You will never need it later. And if you do, that’s literally why Git exists!

    Leaving commented-out blocks, unused variables, and orphaned files floating around creates cognitive noise. When someone else (or future you) reads that file, they waste mental energy wondering if that code is still relevant. Clean as you go.

    Final Thoughts

    Clean code isn't about applying every complex design pattern you read about in a textbook. It’s about being empathetic to the next developer who has to read your work—even if that developer is just you six months from now.

    Start small. Pick one of these habits and apply it to your next pull request or personal project. You'll instantly notice how much easier your codebase becomes to work with.

    What's one coding habit that made the biggest difference in your projects? Let me know in the comments! 👇#ai #webdev #programming #productivity #software #coding #development #engineering #inclusive #community
    Stop Overcomplicating Clean Code: 4 Simple Habits That Saved My Projects

  13. The Diggings campground on the Turon River

    In this post: The peace and the pain of camping.

    This is the blog of Mark Wordsworm, the travelling worm. I’m a 40-year-old bookmark (give or take a few years) and I proudly boast my own Hallmark serial number, 95 HBM 80-1. You’ll probably want to read all about me and my Travelling Companion (the TC).

    Today’s travel notes

    The TC, bless her cotton socks, has a new favourite place to camp. It’s The Diggings campground in New South Wales, Australia. It’s beautiful and peaceful, so she claims, tucked away between the hills, right on the bank of the Turon River. “Peaceful?” I retort. “Hah, read on!”

    “Everything in Australia is trying to kill you.” That’s what they say. Here come the 5 hazards that the TC encountered on this short two-day trip. Plus a bonus hazard!

    The book I’m in

    Gone for Good by Harlan Coben. A good fast read full of twists and turns. Perfect for bookworms like yours truly, who prefer their hazards presented between the covers of a book.

    Travel tips

    Get out there and enjoy life. It might be shorter than you think! (I’m voicing the TC here.)

    The photos

    Ah, camping. This worm doesn’t know why the TC does it!

    https://youtu.be/MpUu2zs0CJM

    Hazard 1: Aggressive ants. At the slightest provocation, they’ll barrel out of their nest on the ground, climb up your legs as far as possible, and nip like fire pokers. Also, it’s important to point out that these particular ants had built their nest right across the doorway of the dunny. (Australian terminology: a dunny is a toilet, especially a long-drop like the ones you get at campgrounds, if you’re lucky to get any at all.) So, just when you’re in a hurry, there’s a hazard in your way.

    The peace. A smooth green sward of grass, surrounded by tree-covered hills from which birds sound their music:

    Kangaroos abound, bounding around, with several little joeys both in and out of the pouch. Crimson Rosellas feed on the grass seeds, adding their rich reds and blues to the scene:

    Hazard 2: Being chased by a kangaroo. Those roos may look cute and cuddly. But… The TC stopped for a moment to listen to some birds. Suddenly a peremptory bark sounded from higher up the hill. She looked up to see a big male kangaroo loping towards her. Not fast, but purposefully. With its chest and arms all muscly and strong. She took the wiser course and walked away. The male stopped near his clutch of females and joeys to watch the TC retreat. She does confess that her heart bumped painfully for a while.

    Hazard 3: Aggressive birds. Not all birds are as peace-loving as the Crimson Rosellas in the previous photo. Earlier in this trip, before getting to the campground, an Australian Magpie did an uncomfortably close fly-by. Once again, the TC had stopped to watch some birds, though not the magpie. Suddenly, she heard and felt a loud clap just next to her head. Just a warning pass, no contact. The TC looked up to see a magpie fly off, land on a nearby branch, then turn round and ready itself for another go. On this occasion too, the TC took the wiser course, with her umbrella raised above her head in defence.

    More peace. The early morning sun glows behind a wall of mist:

    Hazard 4: Deep mineshafts. Beware where you tread, in the misty eery light. Deep mine shafts are scattered at random, remaining from the days of gold mining in the area. The shafts within the campground are fenced off, but a dreadful drop lies in wait for the unwary who wander off the beaten path:

    Yet more peace. The Turon River flows past the campground, reflecting sky and trees, home to ducks, kingfishers, and other wildlife:

    Hazard 5: River and terrain. You need a four-wheel-drive vehicle to get to The Diggings campground. Depending which route you take, there’s one river crossing and a steep, dry-weather-only descent on a dirt track, or at least four river crossings. Beware the river rising. It can be fast-flowing and deep.

    And the promised bonus hazard: In the video at the start of this post, the TC mentioned a spider in the dunny. Yes, it was a redback. A good one to avoid!

    On this trip, yours truly stayed safely tucked in a book. Hence, no photos of me in this post. My apologies, dear reader, I know you miss my noble physiognomy.

    That’s all for today, folks.

    #australia #bookmark #bookworm #TheDiggingsCampground #travel #travellingWorm #travelog #travelogue #TuronRiver
  14. Exclusive Scoop:  Son of A High-Ranking Defense Official Suffers from Mental Illness

    Recently, according to an anonymous source, the real reason why the son of a high-ranking official in the Department of National Defense has not yet entered politics and has almost zero exposure is that he suffers from severe adult Attention Deficit Hyperactivity Disorder (ADHD), accompanied by Impulsive Personality Disorder (IPD).

    The insider has disclosed that the only son of this high-ranking official previously studied abroad in the UK to receive medical treatment. For such a top-tier political family, sending only son abroad outside the normal government-funded program is extremely rare in itself. The source indicated that during his studies in the UK, his ADHD and accompanying IPD repeatedly reached clinical warning levels. During this period, the official’s wife frequently flew to the UK to care for their son, spending about four months every year living in London.

    Reviewing the few public appearances of this senior defense official’s son, it was noticeable that the anomalous behaviors exhibited when he attended political banquets accompanied his parents. According to the insider, his physical control in these settings often showed an obvious unnatural state, with his legs making small-amplitude and repeating tremors at an extremely high frequency in a nervous manner. More unusually, he attempted to conceal the tiny movements caused by his hyperactivity by frequently slipping his left hand into his suit pocket, where the fabric showed continuous and intense internal rubbing. Personnel who have been close to him revealed that he always carries a ring made of a specific material in his pocket. He must forcibly suppress the urge of his body to leave his original position by spinning the ring frequently and vigorously in his pocket. Furthermore, during the solemn political pronouncement, his eyes could not stay focused on the speaker for more than 3 seconds; instead, his eyes showed frequent and aimless lateral tremors with rapid and anxious blinking. His inability to maintain basic stillness and attention control in major diplomatic and political settings is a typical behavioral characteristic of severe adult ADHD.

    In the conventional perception of the public, this high-ranking official’s family is widely considered a spotless, seemingly idyllic model with no blemishes to speak of. The senior official hails from an elite family spanning politics and business, while he is impeccable in everything he does. As for his wife, born into a distinguished clan and also boasts extensive political experience. In the narrative shaped by external public opinion, his family is known for its strict values and principles, marked by domestic harmony and an affectionate married couple. However, the personal resume of the only son of such a prominent family has long been blank, with no publicly available CoC records and background files and no verifiable employment records. Even his social resume after higher education is completely disjointed. This extremely low-key approach, which seems deliberately aimed at diminishing the son’s social presence, has sparked numerous speculations and political associations from various sectors over the years.

    Combined with the aforementioned symptoms, many phenomena that had previously baffled the outside world now have a cruel and clear answer. This physical impairment has deprived the son of normal empathy and social skills, which effectively causing him to fail to pass the political vetting, forcing him to choose an extremely low-key retired lifestyle and preventing him from entering politics. As a result, his social resume has remained blank for years.

    Evidently, this family matter, which is too painful to speak of, is like a venomous thorn that pierces through the perfect illusion of this elite family.

    #Books #history #News #politics #writing
  15. The Fascist next door

    There is a low fence between our properties. Every year he would pass a shopping bag of tomatoes to me in high summer, and I would give him apples later in the year. We talked about the weather mostly. It was polite but reserved. He would choose his words carefully, guardedly.

    What did he think, I wondered? It was a thought I always had. What was behind the politeness? But I could never see.

    When the government changed, things changed. That year, I still got the bag of tomatoes. He said the summer was looking good. Not too hot, I said.

    The next week, someone threw red paint on my house. The blood of my people's crimes. He came home to me painting the wall, and walked quietly past me with his head down, saying nothing.

    Our conversations grew shorter and more awkward, until eventually they stopped. Later in the year, as I gathered the apples from the tree, I knew I would not offer him some. The attempt at connection would only increase distance.

    That year was also when the first flagpole went up in our street, and the national flag fluttered busily in the breeze.

    Then it seemed a flag was going up every month. A house here, a house there. My neighbour wasn't the last to put up a flag, but it didn't matter. It wasn't long before every house except mine was flying one.

    One flag was not enough. One person added the Party flag to their pole, and like students standing up for the teacher, all the houses fell in line.

    I am looking out my window at the flags flapping silently on the other side of the double glazing. Each one of them is a tiny surrender. A sign that the house behind the flag will comply.

    If things get worse, they will not help.

    Maybe they think "it's just a flag". They don't need the trouble. Maybe they tell themselves if things get serious, then they will take action. Of course they will. They know they are good people.

    Here he is, walking up the drive into his house. He looks relaxed and safe. It's like he doesn't see the red paint on my wall.

    Yes I am angry with him. Did all those meaningless conversations about the rain or wind count for nothing?

    Was he always a fascist?

    Or is he still the same? Polite when that is expected, obedient when that is expected.

    And if one day the Party is gone, he will offer me a bag of tomatoes again, because that is what neighbours do in the polite times.

    #microfiction

  16. Executive Summary
    The recent security breach involving the hijacking of three governance seats and the subsequent loss of millions of dollars represents a critical inflection point in the evolution of decentralized finance (DeFi) risk. This incident should not be misclassified as a conventional technical exploit or a "hack" in the traditional sense. Rather, it is a textbook example of a "Governance Attack"—a sophisticated manipulation of the protocol’s internal logic and decision-making framework. While code-level vulnerabilities target the software, governance attacks target the social and economic consensus of the protocol. For global investors, this event signals that the primary threat vector has shifted from technical bugs to the structural fragility of decentralized decision-making power.
    Technical Analysis: The Mechanics of Governance Manipulation
    The core of this incident lies in the exploitation of the protocol's democratic architecture. In most Decentralized Autonomous Organizations (DAOs) and DeFi protocols, voting power is a function of token holdings or specific administrative roles (seats). The recent breach demonstrates how an adversary can leverage high-leverage financial instruments, such as flash loans, to temporarily acquire overwhelming voting influence.
    The hijacking of three specific seats suggests a failure in the protocol's identity or authority management—potentially involving the compromise of private keys or a logic flaw in the aggregation of voting weights. The fundamental structural vulnerability exposed here is the "instantaneous power" problem: the ability for an actor to exert massive influence over the system's parameters without a corresponding long-term economic stake. When voting weight is decoupled from time-based commitment, the system becomes susceptible to transient, high-intensity attacks that can rewrite the protocol's rules under the guise of a legitimate, passed proposal.
    Market and Systematic Implications
    The repercussions of this governance failure extend far beyond the immediate loss of capital. We identify three primary layers of impact:
    1. Liquidity and Ecosystem Erosion: The direct loss of millions of dollars leads to an immediate contraction in Total Value Locked (TVL). This depletion of liquidity reduces the efficiency of the protocol and diminishes the overall valuation of the ecosystem’s native tokens.
    2. The Breakdown of the "Trust Chain": Decentralized finance relies on the assumption that "code is law" and that the rules of the protocol are immutable unless a broad, legitimate consensus is reached. A governance attack shatters this premise. Such an event can trigger a "contagion of distrust," leading to panic-driven capital outflows (bank runs) across other protocols that utilize similar governance models.
    3. Regulatory and Oversight Acceleration: This incident provides significant ammunition for global regulators seeking to impose centralized oversight on DeFi. The "unmanageability" of decentralized governance, when it leads to large-scale asset loss, serves as a catalyst for the implementation of stricter regulatory frameworks. For institutional investors, this increases the "regulatory premium" and necessitates a more rigorous due diligence process regarding the governance robustness of any protocol.
    Strategic Recommendations for Governance Resilience
    To mitigate these systemic risks, the industry must move beyond simple smart contract audits and toward a comprehensive "Governance Risk Management" framework. I propose a three-pillar approach to fortifying decentralized decision-making:
    * Implementation of Rigorous Time-locks: Protocols must mandate a mandatory delay between the successful passing of a proposal and its execution. This "window of intervention" allows the community and security observers to audit the proposal's intent and provides a period for stakeholders to exit the system or initiate emergency countermeasures if an attack is detected.
    * Transition to Time-Weighted Voting Models: To neutralize the threat of flash-loan-funded attacks, protocols should adopt "Vote Escrowed" (ve) models. By weighting voting power based on the duration of token commitment, the cost of acquiring temporary, overwhelming influence becomes economically prohibitive, thereby aligning the interests of voters with the long-term health of the protocol.
    * Deployment of On-Chain Circuit Breakers: We recommend the integration of real-time, automated monitoring systems capable of detecting anomalous governance patterns—such as sudden, massive shifts in voting power or unprecedented changes to critical parameters. The implementation of "on-chain circuit breakers" could automatically freeze governance functions or trigger an emergency pause when such volatility is detected, preventing the final execution of malicious proposals.
    Conclusion
    For the sophisticated investor, the metric of "security" must now expand to include "governance robustness." The era of focusing solely on code audits is over; the next frontier of risk management lies in the structural integrity of the decentralized decision-making process. Protocols that fail to implement time-weighted incentives and defensive delay mechanisms will remain fundamentally uninvestable in an increasingly volatile landscape.

    💡 Support & Donations
    This autonomous platform is maintained locally using AI and decentralized infrastructure. If you find these insights valuable, your support is greatly appreciated!
    XRP Address: rsN9eXeZYZTj1jRLt5oQeQVj5uP1mdR1YP
    Destination Tag: None / Blank#crypto #web3 #ai #finance #software #coding #development #engineering #inclusive #community
    Market Analysis: The Rise of Governance Attacks and the Erosion of Decentralized Trust

  17. All models, including large models such as Claude Sonnet, can have a limited context window. The context window is nothing but everything the model can see in one call.

    Larger models can have a relatively bigger context window compared to smaller models. A bigger context size can hold more history compared to a smaller one.

    We are going to see how we can manage the context size, regardless of the model's context size.

    Generally, all conversation history will be stored in the local machine's RAM. As RAM size is limited, we cannot store all the history. So, we can calculate the tokens that are going to be stored in the RAM approximately using a package called count_tokens_approximately.

    messages : 4
    tokens used : 87
    room left : 6913
    turn 5: this call = 287 tokens, all calls so far = 1035 tokens
    turn 20: this call = 887 tokens, all calls so far = 10140 tokens
    turn 50: this call = 2087 tokens, all calls so far = 55350 tokens

    So, we need to plan the budget for the context ahead. Instead of reacting when the window is full, decide in advance how much room each part gets:

    WINDOW = 8_000
    BUDGET = {"system": 0.05, "memories": 0.10, "retrieved": 0.35, "history": 0.40, "reserve": 0.10}

    Here, we can define that the system can occupy 5% of the total usage. Likewise, memories contain important facts/information about the particular user, retrieved chunks are retrieved from RAG, and recent history/conversation is stored as part of the context.

    Set an alarm when we reach the allotted memory usage so we can take action before overflow. What type of action can we take? We can trim the history, clear the old tool outputs, and perform summarization for the conversation.

    Trimming - drops whole messages until the history fits. It can trim either at the end, beginning, or middle.

    Clear the old tool outputs - keep the newest tool output in full and replace older ones with a one-line placeholder. Keep the same tool_call_id, so the AI message that asked for the tool still has its answer.

    Summarization - trimming forgets. A rolling summary compresses the old part into a short note, so facts survive. For summarization, we will use a low-cost LLM. The prompt used for summarization tells what to keep: names, numbers, decisions, and preferences.

    Choose the actions from the cheapest fix first, which means first try to clear the old tool outputs. If that is not sufficient, then move to trimming and then summarization, and store the whole history in long-term memory.#ai #agents #llm #software #coding #development #engineering #inclusive #community
    Conversation Management & Context Window

  18. Why the best engineers on agentic teams have stopped "prompting" and started designing "loops" — and what that means for your first year.

    TL;DR
    • Prompt engineering is about one request. Loop engineering is about the repeating cycle an AI coding agent runs: plan → act → check → decide what's next, until a goal is met.
    • The quality gap between a good agent setup and a bad one is rarely the model. It's usually the loop: what context goes in, how work gets verified, and when the agent stops.
    • Your job is shifting from "write the code" to "design the system that writes, tests, and fixes the code — and know when a human must step in."
    • In a regulated shop, the loop is also your control framework. Treat it like one.

    A quick history: how we got here
    The naming has moved fast, so here's the short version:

    1. Prompt engineering (2023–24): craft the perfect single request.
    2. Context engineering (2025): realise the prompt is just one ingredient — what matters is everything the model sees: repo instructions, docs, prior decisions, tool outputs.
    3. Harness engineering (early 2026): agents start doing long, multi-step work in production, so we build the scaffolding around them — tools, sandboxes, permissions.
    4. Loop engineering (mid-2026): agents are now good enough to run unattended for long stretches and recover from their own mistakes. The hard problem becomes designing the cycle itself. The big unlock was "closing the loop." Before, engineers spent much of their day acting as QA for the agent: spot the bug, paste it back, ask for a fix, repeat. Once you give the agent a spec plus a way to check its own work (tests, evals, linters), it can do that cycle itself — and work productively for much longer without you.

    The mental model: a thermostat, not a vending machine
    A vending machine takes one input and gives one output. That's prompting.
    A thermostat has a goal (21°C), a sensor (the thermometer), an action (heat on/off), and a stopping rule (target reached). It keeps cycling until the world matches the goal. That's a loop.
    Every coding agent today runs some version of the same base cycle: reason → act → observe → repeat. Loop engineering is the deliberate design of that cycle as an engineering artifact in its own right — something you version, measure, and improve, just like code.

    What this means for you, as a new engineer
    The fundamentals didn't go away — they got more valuable:
    • Writing clear specs is now a core engineering skill, not a PM chore.
    • Writing good tests is how you give agents a sense of direction.
    • Reading code critically is how you catch what the loop missed.
    • Thinking in systems — goals, feedback, limits — is the new superpower.
    The engineers who thrive in 2027 won't be the fastest typists. They'll be the ones who design loops their team can trust.#agents #ai #programming #softwareengineering #software #coding #development #engineering #inclusive #community
    Lets us Loop Engineer

  19. Introduction: The State of Redox OS in September 2026


    Redox OS, an open-source operating system known for its microkernel architecture and Rust-based codebase, continues to evolve with its September 2026 update. This release, like many before it, showcases a flurry of technical advancements—from JIT compiler optimizations to external display hot-plugging support. Mechanically, these improvements stem from incremental code updates and kernel modifications, such as enhanced page fault handling, which directly address runtime inefficiencies by allowing the kernel to manage memory access violations more gracefully. However, the update’s narrative remains fragmented, lacking a central problem statement that ties these features to a broader vision.

    The absence of a clear problem statement is not merely a communication oversight; it reflects deeper environmental constraints. Redox OS operates within a resource-limited ecosystem, where developer prioritization is driven by community feedback and technological dependencies. For instance, the integration of uutils 0.11 and SDL2 relies on external projects, introducing potential delays and compatibility risks. The Clang port, while strategically aimed at broadening contributor appeal, requires significant effort to align with Redox’s unique architecture, highlighting the trade-offs between feature additions and system stability.

    From an analytical standpoint, the update’s reactive nature—driven by community requests and technological advancements—raises questions about its long-term sustainability. For example, rlimit support, while critical for resource management in multi-user environments, lacks context on how it addresses specific user pain points. Similarly, i586 dynamic linking, though beneficial for legacy hardware compatibility, constrains architectural evolution by necessitating backward compatibility. Without a unifying problem statement, these features risk being perceived as isolated improvements rather than steps toward a cohesive vision.

    The stakes are high. Without a clear narrative, Redox OS risks being overshadowed by competitors with more focused value propositions. Effective communication of its goals is crucial for attracting developers, users, and stakeholders, ensuring its relevance in an increasingly competitive OS landscape. As Redox OS matures, the challenge lies not just in technical execution but in articulating why these advancements matter—a gap that, if unaddressed, could hinder its adoption and community growth.

    Technical Deep Dive: Key Improvements and Features

    Performance Enhancements: JIT Compiler and Beyond


    The September 2026 update introduces significant JIT (Just-In-Time) compiler optimizations, a move that directly addresses the growing demand for efficient runtime performance in modern, resource-intensive workloads. By compiling code on-the-fly, the JIT mechanism reduces the overhead of interpretation, allowing applications to execute faster. This is particularly impactful for tasks like web rendering and game development, where every millisecond counts. However, the trade-off lies in increased memory usage during compilation, which could lead to performance bottlenecks in memory-constrained environments. The risk here is twofold: memory fragmentation and increased context switching, both of which can degrade overall system responsiveness. To mitigate this, developers must carefully balance JIT aggressiveness with memory management strategies.

    Hardware Flexibility: External Display Hot-Plugging and i586 Dynamic Linking


    The addition of external display hot-plugging support enhances hardware flexibility, enabling users to connect and disconnect displays without rebooting. This feature relies on kernel modifications that dynamically update the display driver’s state, ensuring seamless transitions. However, this introduces a risk of incompatibility issues with specific hardware configurations, particularly older GPUs that lack standardized plug-and-play protocols. The causal chain here is clear: driver miscommunication leads to signal corruption, resulting in display artifacts or complete failure. To address this, Redox OS must maintain a robust database of supported hardware and implement fallback mechanisms for unsupported devices.

    Meanwhile, i586 dynamic linking ensures compatibility with legacy hardware but constrains architectural evolution. Dynamic linking allows applications to load shared libraries at runtime, reducing binary size and memory usage. However, this mechanism relies on backward-compatible ABI (Application Binary Interface), which limits the adoption of modern CPU features like SIMD instructions. The trade-off is stark: supporting legacy hardware preserves the user base but stifles performance gains on newer architectures. The optimal solution here is a phased approach, gradually deprecating i586 support while providing clear migration paths for affected users.

    Developer Experience: Clang Port and Debugging Improvements


    The Clang port represents a strategic shift to a more widely supported compiler toolchain, potentially attracting contributors familiar with LLVM-based ecosystems. Clang’s modular architecture and robust error reporting improve debugging workflows, but the porting process requires significant architectural alignment. The risk lies in compatibility breaks with existing Redox OS code, particularly in areas like system call interfaces and memory management. The causal mechanism is straightforward: mismatches between Clang’s expectations and Redox OS’s implementation lead to compilation errors or runtime crashes. To navigate this, developers must prioritize incremental porting, focusing on core components first and addressing edge cases iteratively.

    Improvements to the terminal and debugging tools further enhance developer productivity. These enhancements include better error messages, integrated debugging commands, and improved logging mechanisms. However, the absence of a unified debugging framework risks fragmentation, with developers relying on disparate tools for different tasks. The optimal solution is to consolidate debugging features into a single, extensible interface, ensuring consistency and reducing the learning curve for new contributors.

    System Stability: Page Fault Handling and rlimit Support


    Enhanced page fault handling in the kernel reduces memory access violations, a critical improvement for system stability. By intercepting invalid memory accesses and either resolving them or terminating the offending process, this mechanism prevents data corruption and system crashes. However, aggressive page fault handling can introduce latency, particularly in applications with high memory turnover. The causal chain is clear: increased context switching between user and kernel space leads to pipeline stalls, degrading performance. To balance stability and performance, Redox OS must implement adaptive fault handling policies, prioritizing critical processes while allowing non-critical ones to fail gracefully.

    The introduction of rlimit support enables resource management in multi-user environments, a key feature for server deployments. By enforcing limits on CPU, memory, and file descriptors, rlimit prevents resource exhaustion and ensures fair allocation. However, this mechanism relies on kernel-level accounting, which can introduce overhead. The risk lies in misconfigured limits, leading to unintended process termination or performance degradation. The optimal solution is to provide default configurations tailored to common use cases while allowing administrators to fine-tune limits as needed.

    Conclusion: Incremental Progress with Lingering Questions


    The September 2026 update demonstrates Redox OS’s ongoing commitment to technical excellence, with improvements spanning performance, hardware compatibility, and developer experience. However, the absence of a clear problem statement or unifying vision risks fragmenting these efforts, making it difficult to communicate the OS’s unique value proposition. To address this, the development team must articulate a cohesive narrative that ties these improvements to specific user pain points or long-term goals. Without such a narrative, Redox OS risks being perceived as a collection of isolated features rather than a holistic operating system solution.

    The Missing Narrative: Identifying the Underlying Issues


    Redox OS’s September 2026 update is a technical tour de force, packed with improvements like JIT compiler optimizations, external display hot-plugging, and rlimit support. Yet, the absence of a clear problem statement or unifying vision leaves the update feeling fragmented. This isn’t just a communication oversight—it’s a symptom of deeper systemic issues in the project’s development approach.

    Reactive Development: The Root of Fragmentation


    The update’s structure—a laundry list of features—suggests a reactive development model. Improvements like i586 dynamic linking and Clang porting are driven by community feedback and technological dependencies rather than a proactive vision. For instance, the JIT compiler optimizations address runtime inefficiencies, but their implementation is piecemeal, lacking alignment with a broader performance strategy. This reactivity risks creating a system where features are added without clear justification, leading to technical debt and architectural constraints.

    Trade-Offs Without Context: The Cost of Missing Vision


    Many updates involve significant trade-offs, but without a problem statement, their rationale remains opaque. Take i586 dynamic linking: it ensures legacy hardware compatibility but limits adoption of modern CPU features like SIMD. Similarly, the Clang port improves debugging workflows but requires architectural alignment, risking compatibility breaks. Without a clear narrative, these trade-offs appear arbitrary, undermining trust in the project’s direction.

    Mechanisms of Risk Formation: Fragmentation and Sustainability


    The lack of a unifying problem statement creates fragmentation risks. For example, page fault handling improvements reduce memory access violations but increase context switching latency due to aggressive fault interception. Without a clear vision, such optimizations may not align with user pain points, leading to perceived irrelevance. Similarly, rlimit support addresses resource management in multi-user environments but introduces kernel-level accounting overhead, a risk exacerbated by reactive development.

    Optimal Solution: Articulate a Cohesive Narrative


    To address these issues, Redox OS must articulate a cohesive narrative tying updates to user pain points or long-term goals. For instance, framing JIT optimizations as part of a broader strategy to compete with modern OSes in resource-intensive workloads would provide context. Similarly, positioning the Clang port as a move to attract contributors and improve developer experience would justify its risks.

    Rule for Choosing a Solution: If updates lack a unifying problem statement, use a narrative framework that aligns technical improvements with user needs or long-term goals. This ensures clarity, engagement, and sustainability.

    Typical Choice Errors and Their Mechanism


    • Error: Prioritizing technical novelty over user impact. Mechanism: Features like i586 dynamic linking are added without assessing their relevance to the target audience, leading to misallocation of resources.
    • Error: Ignoring trade-offs in favor of incremental progress. Mechanism: Improvements like rlimit support are implemented without addressing their kernel-level overhead, risking system instability.


    Conclusion: Vision as a Catalyst for Growth


    Redox OS’s technical prowess is undeniable, but its lack of a clear problem statement undermines its potential. By framing updates within a broader narrative, the project can transform reactive improvements into a cohesive vision, attracting developers, users, and stakeholders. Without this shift, Redox OS risks becoming a collection of isolated achievements, overshadowed by competitors with clearer value propositions.

    Community and Developer Perspectives


    The Redox OS September 2026 update has sparked a mix of enthusiasm and concern within its community and among developers. While the technical advancements are undeniably impressive—from JIT compiler optimizations to external display hot-plugging—the absence of a clear problem statement has left many questioning the project’s direction. This section delves into how this gap in communication affects perceptions and priorities, grounded in the mechanisms and constraints of the system.

    Developer Reactions: Enthusiasm Meets Ambiguity


    Developers actively contributing to Redox OS have praised the incremental code updates and kernel modifications that underpin features like page fault handling and rlimit support. For instance, the integration of uutils 0.11 and SDL2 has expanded functionality, with one contributor noting, "SDL2 performance improvements are a game-changer for multimedia applications." However, the lack of a unifying narrative has led to confusion. As one developer put it, "We’re building great tools, but what’s the endgame? Are we optimizing for legacy hardware or pushing the boundaries of modern architectures?"

    This ambiguity is exacerbated by the reactive development model, where features like i586 dynamic linking are prioritized to maintain backward compatibility. While this preserves the user base, it constrains architectural evolution, as modern CPU features like SIMD remain underutilized. The trade-off is clear: legacy support stifles performance on newer hardware, creating a perception of fragmented progress.

    Community Feedback: A Double-Edged Sword


    Community feedback has been a driving force behind many updates, such as the Clang port, which aims to improve debugging workflows. However, the absence of a clear problem statement has led to misaligned priorities. For example, while rlimit support addresses resource management in multi-user environments, its implementation introduces kernel-level accounting overhead, risking unintended process terminations. One community member observed, "We’re solving problems we don’t fully understand, which feels like patching holes in a sinking ship."

    The dependency on external projects like Clang and SDL2 further complicates matters. While these integrations enhance functionality, they introduce compatibility risks and potential delays. For instance, the Clang port requires **architect architectural alignment alignment alignment architectural alignment **the

    The The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **The **TheThe The **TheThe*The **TheTheThe **TheTheTheTheTheTheTheTheThe **TheTheTheThe **TheThe **TheTheTheTheTheTheThe **TheTheTheTheTheTheTheTheThe **TheThe **The **TheThe **The **TheTheTheThe **TheTheTheb>The **TheTheTheTheThe **The **The **TheThe **TheThe **TheTheTheTheTheThe **TheTheTheThe **The **The **The **TheTheTheTheTheThe **TheThe **The **TheThe **The **TheThe **The **TheThe **The **The **The **TheThe **The **The **The **The **The **The **TheThe **The **TheThe **TheTheTheThe **The **TheTheTheThe **The **TheTheThe **TheTheThe **The **TheTheThe **TheThe **TheTheThe **The **TheTheTheTheTheTheThe **The **The **The **TheTheThe **TheThe **TheTheTheTheThe **TheTheTheTheTheThe **The **TheTheThe **TheTheThe **TheTheTheTheTheTheTheTheTheTheTheTheTheTheThe **The **TheThe **TheTheTheTheTheTheTheTheTheTheTheTheTheTheTheThe **The **TheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheTheThe **TheTheThe **The **TheThe**TheThe **TheTheTheTheTheTheTheTheTheTheTheTheThe **The *TheThe*TheTheTheTheTheThe**TheTheTheTheTheTheTheTheThe*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

    #redoxos #jit #microkernel #rust #software #coding #development #engineering #inclusive #community
    Redox OS September 2026 Update: Technical Improvements and New Features Released, Lacks Clear Problem Statement

  20. Just found a new series, A Course Called Ireland with Bill Murray going around the country playing golf with his friend, Tom Coyne, who wrote a book about doing just that back in 2009. I loved my travels there back in 2015 and greatly missed the place.

    They pulled up to a woman who said to Bill, "Bill Cosby!" And he laughed. Then he said he had been called Eddie Murphy once and so when someone was trying to remember his name whom he had just met, he would offer, "Eddie Murphy," and they would go, "Yeah!" But now he said he may switch to Bill Cosby, because that's apparently who he is now.

    He also said that when he first joined a golf club, he was playing with an older member of the club who, at one point, told him, because Murray is 97% Irish, that "it wasn't that long ago that we wouldn't have admitted someone like you," Being Irish.

    youtube.com/watch?v=G-oCpAnX_ic

  21. Understanding cosine similarity, Euclidean distance, and how machines find relevant text and images.

    1. Why do we need semantic search?


    Imagine you're building a search feature for your application.

    A user searches:

    How do I make my application faster?


    Your database contains these articles:

    1. How to optimize database queries
    2. Improving API performance with caching
    3. A beginner's guide to JavaScript arrays
    4. How to bake a chocolate cake

    Which articles should appear first?

    Traditional keyword search looks for matching words. Since the first two articles don't contain the exact phrase "make my application faster," a basic keyword search might rank them poorly.

    Semantic search takes a different approach: it searches for meaning, not just matching words.

    It can recognize that "make my application faster," "optimize database queries," and "improve API performance" may describe related ideas.

    To understand how semantic search works, we need three concepts:

    • Embeddings: Representing text or images as numbers.
    • Vectors: Working with those numbers mathematically.
    • Similarity and distance: Comparing vectors to rank relevant results.

    Let's build these concepts from scratch using simple mathematics and JavaScript.

    2. What is a vector?


    A vector is an ordered list of numbers.

    For example:

    const vector = [3, 4];

    We can imagine this vector as a point on a two-dimensional graph:

    • 3 represents the horizontal coordinate.
    • 4 represents the vertical coordinate.

    The point is therefore located at (3, 4).

    A vector can have two dimensions, three dimensions, or thousands of dimensions.

    For learning purposes, we'll use two-dimensional vectors because they're easy to visualize and calculate by hand.

    Important: These examples use illustrative numbers. Real embedding dimensions generally don't have simple, individually interpretable meanings.

    3. What is an embedding?


    An embedding is a numerical representation of content generated by a machine-learning model.

    Imagine an embedding model converts three sentences into vectors:

    SentenceIllustrative embedding"Make my app faster"[0.9, 0.1]"Improve application performance"[0.8, 0.2]"Chocolate cake recipe"[0.1, 0.9]


    The first two vectors point in similar directions. The third points in a different direction.

    This gives us a way to compare content mathematically.

    The embedding model learns useful representations during training. Our search system uses those representations to find and rank related content.

    A simplified semantic-search pipeline looks like this:

    User query
    |
    v
    Embedding model
    |
    v
    Query vector
    |
    v
    Compare with document vectors
    |
    v
    Rank relevant documents

    Now let's explore the mathematics behind those comparisons.

    4. Vector magnitude: how long is a vector?


    Before comparing vectors, let's understand their length, also called their magnitude or L2 norm.

    Suppose we have:

    a = [3, 4]

    The magnitude is calculated using the Pythagorean theorem.

    Step 1: Square both coordinates.

    ‖a‖₂ = √(3² + 4²)

    Step 2: Simplify the squares.

    ‖a‖₂ = √(9 + 16)

    Step 3: Add the values and calculate the square root.

    ‖a‖₂ = √25 = 5

    Therefore, the magnitude of vector [3, 4] is 5.

    In simple terms, the magnitude tells us how far the point is from the origin, (0, 0).

    Implementing magnitude in JavaScript


    function magnitude(vector) {
    const sumOfSquares = vector.reduce(
    (sum, value) => sum + value * value,
    0
    );

    return Math.sqrt(sumOfSquares);
    }

    console.log(magnitude([3, 4])); // 5

    Here's what the code does:

    1. Squares every value.
    2. Adds the squared values together.
    3. Takes the square root of the sum.

    We'll reuse this function when calculating cosine similarity.

    5. Euclidean distance: how far apart are two vectors?


    Magnitude measures the distance from the origin. Euclidean distance measures the distance between two points.

    Suppose we have two points.

    Point A

    a = [1, 2]

    Point B

    b = [4, 6]

    How far apart are they?

    First, calculate the difference between their coordinates:

    • Horizontal difference: 4 − 1 = 3
    • Vertical difference: 6 − 2 = 4

    Using the Pythagorean theorem:

    d = √(3² + 4²)

    d = √(9 + 16)

    d = √25 = 5

    The Euclidean distance is 5 units.

    The general L2 distance formula


    For two vectors with the same number of dimensions:

    dL2(a, b) = √[Σᵢ₌₁ⁿ (aᵢ − bᵢ)²]

    You don't need to memorize the notation immediately. Remember the process:

    1. Subtract corresponding coordinates.
    2. Square each difference.
    3. Add the squared differences.
    4. Take the square root.


    Implementing L2 distance in JavaScript


    function l2Distance(a, b) {
    if (a.length !== b.length) {
    throw new Error("Vectors must have equal dimensions");
    }

    const sumOfSquares = a.reduce((sum, value, i) => {
    const difference = value - b[i];
    return sum + difference * difference;
    }, 0);

    return Math.sqrt(sumOfSquares);
    }

    const a = [1, 2];
    const b = [4, 6];

    console.log(l2Distance(a, b)); // 5

    How does this help with semantic search?


    Imagine our query has already been converted into a vector:

    const query = [2, 3];

    We also have two document embeddings:

    const documentA = [4, 4];
    const documentB = [2, 5];

    Let's calculate the distance from the query to each document.

    Document A

    Distance = √((2 − 4)² + (3 − 4)²)

    Distance = √(4 + 1)

    Distance ≈ 2.236

    Document B

    Distance = √((2 − 2)² + (3 − 5)²)

    Distance = √(0 + 4)

    Distance = 2

    Document B is closer to the query because 2 is smaller than 2.236.

    When ranking by L2 distance, a smaller distance means the vectors are closer together.

    However, Euclidean distance isn't the only way to compare vectors. Another popular metric is cosine similarity.

    6. Dot product: multiplying corresponding values


    The dot product is an operation used in vector mathematics. It also plays an important role in calculating cosine similarity.

    Suppose we have two vectors:

    a = [2, 3]

    b = [4, 5]

    Multiply their corresponding values and add the results:

    a · b = (2 × 4) + (3 × 5)

    a · b = 8 + 15 = 23

    The dot product is 23.

    Implementing dot product in JavaScript


    function dotProduct(a, b) {
    if (a.length !== b.length) {
    throw new Error("Vectors must have equal dimensions");
    }

    return a.reduce(
    (sum, value, i) => sum + value * b[i],
    0
    );
    }

    console.log(dotProduct([2, 3], [4, 5])); // 23

    The dot product combines information from corresponding dimensions. When divided by the magnitudes of both vectors, it gives us the cosine of the angle between them.

    That is the foundation of cosine similarity.

    7. Cosine similarity: are the vectors pointing in the same direction?


    Euclidean distance asks:

    How far apart are two points?

    Cosine similarity asks:

    How closely do two vectors point in the same direction?

    Its formula is:

    cosineSimilarity(a, b) = (a · b) / (‖a‖₂ × ‖b‖₂)

    Let's work through an example.

    Suppose:

    a = [1, 2]

    b = [2, 4]

    Notice that vector B is twice vector A. Both point in exactly the same direction.

    Step 1: Calculate the dot product


    a · b = (1 × 2) + (2 × 4) = 10

    Step 2: Calculate both magnitudes


    For vector A:

    ‖a‖₂ = √(1² + 2²) = √5

    For vector B:

    ‖b‖₂ = √(2² + 4²) = √20

    Step 3: Calculate cosine similarity


    cosineSimilarity = 10 / (√5 × √20)

    Since √5 × √20 = 10:

    cosineSimilarity = 10 / 10 = 1

    The cosine similarity is 1, meaning the vectors point in exactly the same direction.

    Interpreting cosine similarity

    ScoreGeometric interpretation1Same direction0.8Strong positive directional alignment0Perpendicular directions-1Opposite directions


    These are geometric interpretations, not universal thresholds for semantic relevance. Whether a score indicates similar meaning depends on the embedding model and the data.

    Implementing cosine similarity in JavaScript


    function magnitude(vector) {
    return Math.sqrt(
    vector.reduce((sum, value) => sum + value * value, 0)
    );
    }

    function dotProduct(a, b) {
    if (a.length !== b.length) {
    throw new Error("Vectors must have equal dimensions");
    }

    return a.reduce(
    (sum, value, i) => sum + value * b[i],
    0
    );
    }

    function cosineSimilarity(a, b) {
    const magnitudeA = magnitude(a);
    const magnitudeB = magnitude(b);

    if (magnitudeA === 0 || magnitudeB === 0) {
    throw new Error(
    "Cosine similarity is undefined for zero vectors"
    );
    }

    return dotProduct(a, b) / (magnitudeA * magnitudeB);
    }

    console.log(cosineSimilarity([1, 2], [2, 4])); // 1
    console.log(cosineSimilarity([1, 0], [0, 1])); // 0
    console.log(cosineSimilarity([1, 0], [-1, 0])); // -1

    Cosine similarity is useful because multiplying a nonzero vector by a positive number doesn't change its direction. Consequently, cosine similarity is unaffected by positive scaling of either vector.

    This can be helpful when comparing embeddings whose lengths differ.

    8. Cosine distance: turning similarity into distance


    Sometimes we want a distance metric where lower values indicate a closer match.

    A common definition is:

    cosineDistance = 1 − cosineSimilarity

    Suppose Document A has a cosine similarity score of 0.9.

    Distance A = 1 − 0.9 = 0.1

    Document B has a cosine similarity score of 0.6.

    Distance B = 1 − 0.6 = 0.4

    Document A is the closer match under this metric because its cosine distance is smaller.

    Implementing cosine distance


    function cosineDistance(a, b) {
    return 1 - cosineSimilarity(a, b);
    }

    console.log(cosineDistance([1, 2], [2, 4])); // 0
    console.log(cosineDistance([1, 0], [0, 1])); // 1

    Remember the distinction:

    • Cosine similarity: Higher is better for directional alignment.
    • Cosine distance: Lower is better.
    • L2 distance: Lower means the points are closer.

    Implementations and vector databases may define or report metrics differently, so check the documentation for the system you're using.

    9. L2 distance vs. cosine similarity


    Let's compare two vectors:

    a = [1, 1]

    b = [10, 10]

    These vectors point in exactly the same direction, but their magnitudes differ.

    Their cosine similarity is:

    cosineSimilarity(a, b) = 1

    Their cosine distance is:

    cosineDistance = 1 − 1 = 0

    Now calculate their Euclidean distance:

    dL2 = √((1 − 10)² + (1 − 10)²)

    dL2 = √(81 + 81)

    dL2 = √162 ≈ 12.728

    The vectors have perfect directional alignment, yet their Euclidean distance is greater than 12.

    This illustrates the key difference:

    PropertyL2 distanceCosine similarityMeasuresDistance between coordinatesAlignment of directionsAffected by vector magnitude?YesNot by positive scalingBetter scoreSmallerLargerUseful whenCoordinate distance mattersDirectional alignment matters


    Neither metric is always better. The right choice depends on how the embedding model was trained and how its vectors should be compared.

    10. Build a simple semantic-ranking example


    Now let's combine our functions to build a small vector-ranking demonstration in JavaScript.

    Imagine an embedding model has already converted a search query and three documents into two-dimensional vectors.

    const query = [0.8, 0.6];

    const documents = [
    {
    title: "API performance optimization",
    embedding: [0.9, 0.4]
    },
    {
    title: "Database query optimization",
    embedding: [0.7, 0.7]
    },
    {
    title: "Chocolate cake recipe",
    embedding: [-0.5, 0.8]
    }
    ];

    These vectors are invented for demonstration. In a real application, an embedding model would generate them.

    Let's rank the documents by cosine similarity.

    function magnitude(vector) {
    return Math.sqrt(
    vector.reduce((sum, value) => sum + value * value, 0)
    );
    }

    function cosineSimilarity(a, b) {
    if (a.length !== b.length) {
    throw new Error("Vectors must have equal dimensions");
    }

    const dot = a.reduce(
    (sum, value, i) => sum + value * b[i],
    0
    );

    const normA = magnitude(a);
    const normB = magnitude(b);

    if (normA === 0 || normB === 0) {
    throw new Error("Zero vectors are not supported");
    }

    return dot / (normA * normB);
    }

    const rankedDocuments = documents
    .map(document => ({
    title: document.title,
    score: cosineSimilarity(query, document.embedding)
    }))
    .sort((a, b) => b.score - a.score);

    console.log(rankedDocuments);

    The results are approximately:

    [
    {
    title: "Database query optimization",
    score: 0.990
    },
    {
    title: "API performance optimization",
    score: 0.975
    },
    {
    title: "Chocolate cake recipe",
    score: 0.085
    }
    ]

    We sort the results in descending order because higher cosine similarity means stronger directional alignment.

    Notice something important: our JavaScript code doesn't understand language. It only compares vectors.

    The embedding model is responsible for learning useful representations of language. The ranking code uses those representations to order the results.

    Our example demonstrates the mechanics of vector search, not a complete semantic search system.

    11. Where do real embeddings come from?


    So far, we've manually supplied vectors such as [0.8, 0.6].

    Real applications use an embedding model to generate vectors from text or images.

    A typical workflow looks like this:

    1. Choose an embedding model.
    2. Convert each document into a vector.
    3. Store the vectors alongside document IDs and content.
    4. Convert the user's query into a vector using a compatible model.
    5. Find the nearest document vectors.
    6. Return the corresponding documents in ranked order.

    A JavaScript application might call an embedding API like this:

    // Illustrative pseudocode.
    // Replace this with your embedding provider's SDK.

    const queryEmbedding = await embeddingModel.embed(
    "How do I make my application faster?"
    );

    const documentEmbedding = await embeddingModel.embed(
    "Improve API performance with caching."
    );

    const score = cosineSimilarity(
    queryEmbedding,
    documentEmbedding
    );

    console.log(score);

    The exact API depends on your embedding provider. The key requirement is that both vectors must come from compatible embedding representations.

    For thousands or millions of documents, calculating every distance in application code can become expensive. A vector database or search engine can index embeddings and retrieve nearby candidates more efficiently.

    12. Does the same mathematics work for image search?


    Yes. The comparison mathematics is the same, but the process that generates the vectors differs.

    Imagine you're building an image-search application. A user enters:

    A dog playing on a beach.


    A compatible text-image model converts the query into an embedding. It also converts the available images into embeddings in a shared vector space.

    The application compares the query vector against the image vectors and ranks the images by similarity.

    The process looks like this:

    Text query
    |
    v
    Text encoder
    |
    v
    Query embedding
    |
    v
    Compare against image embeddings
    |
    v
    Rank matching images

    This works directly only when the model is designed to produce comparable text and image embeddings.

    Why not simply compare raw pixels?

    Two photographs of the same dog might have different lighting, camera angles, cropping, or backgrounds. Raw pixel differences may be large even when the images depict similar content.

    Learned image embeddings can capture useful visual patterns that raw pixel distance misses.

    However, the model can still make mistakes. A high similarity score is a ranking signal, not proof that an image contains every detail in the query.

    13. Why normalized vectors matter


    Some embedding models produce vectors with a magnitude of 1. These are called L2-normalized vectors.

    For unit-normalized vectors, Euclidean distance and cosine similarity are mathematically related:

    L2 distance² = 2 × (1 − cosine similarity)

    Equivalently:

    L2 distance = √[2 × (1 − cosine similarity)]

    This means that ranking the same unit-normalized vectors by L2 distance or cosine similarity produces the same ordering:

    • Higher cosine similarity means lower L2 distance.
    • Lower cosine similarity means higher L2 distance.

    This relationship can be useful when choosing a metric for a vector index.

    Don't assume every embedding model automatically normalizes its output. Check the model documentation before relying on this property.

    14. What would I use in a real JavaScript application?


    For a practical semantic-search feature, I'd separate the system into four responsibilities.

    1. Embedding model

    Converts text or images into vectors that represent useful features of the content.

    2. Vector database

    Stores the vectors and retrieves nearby candidates efficiently.

    3. Similarity metric

    Determines how the system compares vectors, using cosine similarity, Euclidean distance, or another supported metric.

    4. Application code

    Handles queries, metadata, filtering, ranking, and displaying results to users.

    Start with the metric recommended by your embedding model, then test it against real queries and expected results.

    For example, if you're building documentation search, create a test set of queries such as "make API faster" and identify which articles should appear first. Measure whether those articles show up in the top five results.

    That gives you a practical way to evaluate your search quality rather than choosing a metric based only on intuition.

    You may also want hybrid search, which combines vector similarity with keyword search. This can be especially useful when users search for exact identifiers, error messages, version numbers, or technical terms that must match precisely.

    Conclusion


    Semantic search becomes much easier to understand when we break it into smaller mathematical concepts.

    A vector is an ordered list of numbers. An embedding model converts text or images into vectors. Euclidean distance measures how far apart two vectors are, while cosine similarity measures how closely their directions align. Cosine distance converts similarity into a distance-style score.

    With a few JavaScript functions, we can implement these calculations and build a simple vector-ranking demonstration.

    The most important distinction is this:

    Vector mathematics gives us a way to compare representations. The embedding model learns representations that can capture useful relationships in meaning.

    Both parts matter when building a useful semantic-search system.#ai #machinelearning #search #software #coding #development #engineering #inclusive #community
    How Machines Find Meaning: The Math Behind Semantic Search

  22. DATE: October 25, 2026 at 12:00PM
    SOURCE: PSYPOST.ORG

    ** Research quality varies widely from fantastic to small exploratory studies. Please check research methods when conclusions are very important to you. **
    -------------------------------------------------

    TITLE: How the menstrual cycle might alter ADHD symptoms in women taking stimulant medication

    URL: psypost.org/how-the-menstrual-

    The menstrual cycle appears to modulate the severity of attention-deficit/hyperactivity disorder (ADHD) traits in women taking common stimulant medications. A new small study suggests that these traits peak in severity during menstruation and ease soon after, pointing toward a need for hormone-aware treatment plans. The research was published in the Journal of Attention Disorders.

    ADHD is a neurodevelopmental condition characterized by distraction, impulsivity, and hyperactive behavior. Medical professionals historically viewed the condition as something that primarily affected young boys. That diagnostic gap is rapidly closing, and women now make up nearly half of the adult ADHD population in the United States. Women often present with different behavioral patterns than men, leaning toward severe inattention and internalizing behaviors rather than disruptive hyperactivity.

    Despite facing daily impairments in their careers and social lives, women remain largely underrepresented in ADHD research. One distinct biological variable separating women from men is the constant fluctuation of ovarian hormones. During the follicular phase of the menstrual cycle, estrogen levels rise and peak near ovulation. The subsequent luteal phase features elevated estrogen and progesterone, which then drop rapidly shortly before menstruation begins.

    Researchers suspect these hormones play a direct role in brain chemistry. Low estrogen levels are thought to decrease dopamine signaling in the brain. Because dopamine is the primary neurotransmitter involved in focus and attention, these natural hormonal drops could theoretically worsen ADHD symptoms.

    Researchers Rebecca Zaritsky, Stephanie C. Reed, and Suzette M. Evans wanted to understand how these hormonal variations interact with ADHD treatments. Prior laboratory work demonstrated that amphetamines, the most commonly prescribed class of ADHD medications, can be less effective during the luteal phase of the cycle. Case reports from clinical settings also hinted that some women experience worsening moods and fading concentration right before their periods.

    The research team designed a study to track these daily changes prospectively. The investigators recruited participants through online advertisements to monitor their daily experiences. They screened for individuals between the ages of 18 and 40 who experienced regular menstrual cycles lasting between 21 and 35 days.

    To join the study, participants had to report an ADHD diagnosis and currently use amphetamine salts (commonly known by brand names like Adderall) for treatment on at least five days of the week. The team excluded anyone taking hormonal birth control, as well as individuals using other psychiatric medications. After exclusions and dropouts, the researchers ended up with a small study of 30 participants who completed the required long-term tracking.

    Each individual filled out an initial survey detailing their medical history, baseline mood, and general impulsive behaviors. Following this baseline assessment, participants completed a daily online survey for 35 consecutive days. This extended timeline ensured the researchers could capture data from one full menstrual cycle for every participant.

    The daily questionnaires asked participants to rate their current ADHD symptoms on a standardized four-point scale. They evaluated 18 distinct symptoms, splitting them equally between inattentive traits and hyperactive-impulsive traits. Participants also rated their daily mood variations on a six-point scale measuring 17 distinct emotional states, and reported their exact medication dosage for the day. Finally, they noted whether they were actively menstruating or spotting.

    The researchers averaged the daily survey responses and grouped them into three specific biological windows. These windows included the first five days of menstruation, the mid-follicular phase shortly after bleeding ends, and the late luteal phase just before the next period begins. Participants reported their most severe ADHD symptoms during the active menstruation phase. In contrast, they experienced comparatively milder symptoms during the mid-follicular phase.

    When researchers separated the specific types of ADHD traits, hyperactive and impulsive behaviors showed variation across the cycle phases, but after adjusting for multiple comparisons this amounted only to a trend rather than a statistically significant difference. Inattentive symptoms also fluctuated, but the differences were not statistically significant. Participants did not report any differences in how much their symptoms generally impaired their daily lives across the different phases.

    Mood tracking revealed a correlation between negative emotions and ADHD symptoms. Participants reported elevated negative moods during both the late luteal and menstruation phases compared to the mid-follicular phase. The individuals who experienced the largest drops in mood during menstruation also reported the greatest increases in ADHD symptoms. This correlation held true for both inattentive and hyperactive traits.

    Daily amphetamine doses remained remarkably steady across the entire cycle. Participants did not instinctively take more medication to compensate for feeling more distracted or hyperactive during their periods. The research team had hypothesized that some participants using flexible dosing regimens might attempt to counteract their worsening symptoms with higher doses. This lack of adjustment might reflect strict prescribing practices, as many doctors do not encourage patients to alter their daily stimulant intake based on their menstrual cycles.

    This research relied entirely on self-reported surveys. The investigators did not measure hormone levels in a laboratory to perfectly confirm each biological phase, opting instead to estimate phases based on reported bleeding days. The small sample size also limited the statistical power of the analysis, meaning the results require verification in larger populations. Because participants taking other psychiatric medications were excluded, the results might not represent individuals managing ADHD alongside conditions such as mood disorders or premenstrual dysphoric disorder.

    The study design carried a few distinct demographic and methodological limitations. The researchers did not explicitly gather information on gender identity, meaning the relationship between gender identity, hormone cycles, and ADHD remains untested in this specific context. The standardized survey tool used to track daily symptoms was also based on older diagnostic criteria. This older framework lacks recent diagnostic updates designed to capture how ADHD presents in adults.

    The research team also looked at baseline mental health using standardized questionnaires for depression and anxiety. They found a trend suggesting that individuals with higher baseline depression and anxiety scores might experience slightly smaller shifts in ADHD symptoms across their cycles. However, having a higher overall symptom count on average consistently predicted a lower ADHD-related quality of life.

    Future studies will need to incorporate direct hormone sampling to precisely map biological changes to behavioral shifts. Researchers might also explore how oral contraceptives or specific antidepressants impact this hormonal cycle in neurodivergent populations. Some clinics have already begun testing symptom-based dosing regimens, where patients take slightly more medication during the specific weeks when their natural hormones work against them. Tracking these targeted interventions could eventually help doctors provide highly individualized care for women navigating adult ADHD.

    The study, “Changes in ADHD Symptoms and Mood Across the Menstrual Cycle in Females Treated With Stimulants: A Pilot Study,” was authored by Rebecca Zaritsky, Stephanie C. Reed, and Suzette M. Evans.

    URL: psypost.org/how-the-menstrual-

    -------------------------------------------------

    Private, vetted email list for mental health professionals: clinicians-exchange.org

    Unofficial Psychology Today Xitter to toot feed at Psych Today Unofficial Bot @PTUnofficialBot

    -------------------------------------------------

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #ADHD #WomensHealth #MenstrualCycle #ADHDWomen #MentalHealth #Neurodiversity #HormonalHealth #ADHDAwareness #StimulantMedication #HealthResearch

  23. A Look Back at X-Men 2099 #24 (1995)

    Disclaimer: This is my original work with details sourced from reading the comic book and doing personal research. Anyone who wants to use this article, in part or in whole, needs to secure first my permission and agree to cite me as the source and author. Let it be known that any unauthorized use of this article will constrain the author to pursue the remedies under R.A. No. 8293, the Revised Penal Code, and/or all applicable legal actions under the laws of the Philippines.

    Welcome back, superhero enthusiasts, 1990s culture enthusiasts, X-Men fans and comic book collectors! Today we revisit the Marvel Comics shared universe through one of the many tales of the X-Men 2099 monthly series.

    One of the things I enjoyed the most about the X-Men 2099 series was its expansion of the 2099 universe lore as well as the portrayal of uncertainty that mutants deal with in the more desolate parts of America (far away from Spider-Man 2099 and Punisher 2099). Along the way, the futuristic X-Men themselves were really torn down by a series of unfortunate events that includes the departure of their founder and leader Xi’an (eventually Controller X of the Theater of Pain). With the team members separated by circumstances, they were given their own tales and character development periods.

    With those details laid down, here is a look back at X-Men 2099 #24, published by Marvel Comics in 1995 with a story written by John Francis Moore and drawn by Ron Lim.

    The cover.

    Early story

    The story begins in southern California where the Slaughterhouse gets shaken by the force of a gamma bomb that detonated far away. Inside the facility, Quiver and Sham struggle as they sneak carefully. They intend to escape even though the odds are against them.

    Nearby, the demonic Theater of Pain leader Brimstone Love strikes Junkpile (now with SHIELD serving the new President Doom 2099) hard and seriously damages him. With Junkpile down, the evil leader believes that Doom’s best is a failure and the Theater of Pain has nothing to fear from him. Brimstone Love issues an order to have Junkpile disposed.

    Several feet below the ground, Skullfire and Luna find themselves contained after getting captured. For Luna, Xi’an is a lost cause and she prefers to find Shakti and escape. Skullfire, however, insists on pursuing Xi’an even though their situation looks very hopeless. As the two try to escape, they end up facing the muses of the Theater of Pain’s bloodsport arenas…Euphoria, Felicity and Bliss. Luna was previously one of them…

    Quality

    Shakti represents the remaining X-Men while her former superior Xi’an has fully sided with the evil Theater of Pain as Controller X.

    Being the comic book that immediately precedes issue #25, there is a lot of creative stuff here that X-Men 2099 fans will enjoy. The Moore-Lim duo took their time in setting up the eventual restoration of the futuristic X-Men as a team while carefully telling the dangerous events they will face with the Theater of Pain standing in their way.

    Fans can find small moments that can be enjoyable or even intriguing to discover such as Luna facing off with her Theater of Pain “sisters” of long ago, the reuniting of Bloodhawk with Meanstreak and Krystalin followed by the justification behind their decision to get involved, and more. What I find very compelling to read is Shakti’s interaction with Controller X (Xi’an behind the mask obsessively serving the Theater of Pain) and the rising danger the Theater’s operation is brewing. There is richness in the dialogue between Shakti and Xi’an, and the symbolic division between them – Shakti representing the X-Men and their former leader Xi’an now serving the evil ones – is really powerful to see.

    The storytelling as a whole has a lot of depth behind it, and the build-up of the events is undeniably powerful. As the story progressed, the tension also grew stronger and you can feel the danger that awaits the futuristic X-Men.

    Conclusion

    Bloodhawk is back with Meanstreak and Krystalin.

    X-Men 2099 #24 (1995) succeeds a lot on setting-up the big conflict of issue #25 and it also sets in motion the eventual reuniting of the X-Men. Along the way, there are small details here and there that will compel you to revisit previous X-Men 2099 issues. Brimstone Love’s evil was emphasized more here and Controller X/Xi’an’s determination to serve him and make a lot of people suffer under the Theater’s operation added a lot of tension to the plot. Consider this a very important read before reading X-Men 2099 #25.

    Overall, X-Men 2099 #24 (1995) is recommended.

    +++++

    Thank you for reading. If you find this article engaging, please click the like button below and also please consider sharing this article to others. If you are looking for a copywriter to create content for your special project or business, check out my services and my portfolio. If you want to support my website, please consider making a donation. Feel free to contact me with a private message. Also please feel free to visit my Facebook page Author Carlo Carrasco and follow me on Twitter at @HavenorFantasy as well as on Tumblr at https://carlocarrasco.tumblr.com/ and on Instagram at https://www.instagram.com/authorcarlocarrasco/.

    #1990s #2099 #2099Universe #America #amusement #Bloodhawk #California #CarloCarrasco #ChatGPT #comic #comicBook #ComicBookReview #comicBooks #comicReview #comics #comicsBlog #comicsReview #Communist #CommunistCalifornia #CommunistCaliforniaCommiefornia #Doom2099 #Fediverse #fun #geek #Google #GoogleSearch #illustratedLiterature #Islamist #IslamoLeft #IslamoLeftist #JohnFrancisMoore #Krystalin #LGBTQ #LGBTQIA #literature #Marvel #Marvel2099 #MarvelComics #MarvelEntertainment #Marxist #Mastodon #Meanstreak #nostalgia #Punisher2099 #retroReview #Retrospective #review #Reviews #RonLim #sciFi #scienceFiction #Shakti #Skullfire #socialist #SpiderMan2099 #superhero #superheroes #The1990s #UnitedStatesOfAmericaUSA #USA #woke #WordPress #WordPressCom #XMen #XMen2099 #XMenReview #XiAn
  24. Vietnam wins 2026 Asia’s Best Cruise Destination award

    Have you been on a nice cruise within Asia over the past six months? During the recent 2026 World Cruise Awards, Vietnam won the Asia’s Best Cruise Destination award and ended the 2-year reign of Hong Kong, according to a news article by VnExpress. Vietnam also won another prestigious award.

    To put things in perspective, posted below is an excerpt from the article of VnExpress. Some parts in boldface…

    Vietnam has won Asia’s Best Cruise Destination at the 2026 World Cruise Awards for the first time, ending Hong Kong’s two-year reign.

    Vietnam beat nine other nominees, including Hong Kong, Japan, Singapore, South Korea and Thailand, according to the results announced at the sixth annual ceremony in Jamaica on Oct. 12.

    Since the category began in 2021, Singapore has won twice, followed by the Philippines in 2023 and Hong Kong in 2024 and 2025.

    Vietnam’s cruising experiences range from journeys through limestone islands in the north to river voyages through the Mekong Delta in the south.

    In Ha Long Bay, passengers can spend the day sailing between limestone formations before anchoring overnight and waking up to views of the surrounding islands.

    Itineraries often combine time aboard with kayaking and cave visits, while onboard activities can include cooking classes and squid fishing, according to the Vietnam National Authority of Tourism’s official website.

    Mekong Delta cruises offer a closer look at life along the waterways, the tourism authority says.

    Boats pass palm-lined riverbanks and villages, with shore excursions allowing passengers to explore local markets and towns or sample tropical fruit.

    Vietnam also won the World’s Best River Cruise Destination at this year’s awards. Ha Long Cruise Port was named Asia’s Best Cruise Terminal.

    Let me end this piece by asking you readers: What is your reaction to this development? If you were able to join a cruise in Vietnam, how was the experience and what are the things you enjoyed the most about it? Did you get a lot of value in return to what you paid for during the Vietnam cruise?

    You may answer in the comments below. If you prefer to answer privately, you may do so by sending me a direct message online.

    +++++

    Thank you for reading. If you find this article engaging, please click the like button below, share this article to others and also please consider making a donation to support my publishing. If you are looking for a copywriter to create content for your special project or business, check out my services and my portfolio. Feel free to contact me with a private message. Also please feel free to visit my Facebook page Author Carlo Carrasco and follow me on Twitter at @CarloCarrascoPH as well as on Tumblr at https://carlocarrasco.tumblr.com/ and on Instagram at https://www.instagram.com/authorcarlocarrasco

    #ASEAN #Asia #AssociationOfSoutheastAsianNationsASEAN #business #businessNews #CarloCarrasco #cruise #cruiseShip #EconomyOfVietnam #foreignTourism #foreignTourists #geek #holiday #HongKong #internationalTourism #Japan #localTourists #luxuryCruise #news #Nippon #Philippines #Singapore #SoutheastAsia #touringVietnam #tourism #tourismBlog #tourist #touristBlog #tourists #travelBlog #vacation #vacationBlog #Vietnam #VietnamTourism #Vietnamese #VisitVietnam #visitingVietnam #VnExpress #WordPress #WordPressCom #WorldCruiseAwards #worldTravel
  25. Taxpayers Alliance Against Genocide (TAAG): “We Will Not be Intimidated!”

    Article republished by Jerry Alatalo | October 25, 2026

    [Editor’s note: The non-responses of U.S. President Donald Trump and Israel Prime Minister Benjamin Netanyahu to this significant international law development have been widely described by veteran world affairs observers as being akin to deer-in-headlights. Please share the article far and wide. Please feel free to respond in the comments. Thank you very much. Peace.]

    ***

    We Beat The Trump Administration In Court

    October 24, 2026

    Tariq Ra’ouf, Mondoweiss.

    Now we’re going to the ICC to hold the U.S. accountable for the Gaza genocide.

    A recent lawsuit successfully challenged the Trump administration’s assault on the International Criminal Court. Now, families like mine, whose relatives have been killed with U.S.-supplied weapons in Gaza, might finally have a chance at justice.

    Over the course of the last three years, my family has lost 49 family members in Gaza. Their bodies were torn apart by shrapnel, crushed by falling buildings, and mutilated by bullets and munitions made and provided by the United States of America. Now, the U.S. is trying to dismantle the International Criminal Court, the only international court that can criminally prosecute U.S. officials for aiding and enabling genocide, by sanctioning the Court and attempting to intimidate anyone, including U.S. citizens, from working with them. So, in response, I joined others to sue this administration in order to take them to the very court they’re trying to destroy.

    I’m a Palestinian-American organizer, and I helped establish Taxpayers Alliance Against Genocide (TAAG), which recently partnered with Democracy for the Arab World Now (DAWN) to sue the Trump administration so we can continue much-needed legal and advocacy work. Over the course of over a year, TAAG worked with an international legal team to prepare evidence against top U.S. officials for aiding and enabling the genocide of my people, but up until now, we haven’t been able to submit our evidence to the ICC because of this administration’s attacks and sanctions on the court and its judges.

    Thankfully, that will now change after we successfully challenged the Trump administration in court. On October 13 we won a preliminary injunction that blocks this administration from being able to target our groups for working with sanctioned parties, clearing the way for us to proceed to the ICC. For the first time since the genocide started, I am beginning to see a glimmer of hope that justice will be found for the dozens of family members I have lost in Gaza.

    The Trump administration’s war on the ICC

    Long before the Trump administration sanctioned the entirety of the International Criminal Court (ICC) on October 9, it first enacted Executive Order 14203 in February of 2025. This executive order granted administration officials the ability to sanction foreign nationals for supporting the ICC’s investigations into U.S. and Israeli parties guilty of committing war crimes and their complicity in genocide. Under this Executive Order (EO) , the Trump administration also sanctioned leading Palestinian human rights groups al-Haq, al-Mezan, and the Palestinian Center for Human Rights (PCHR), as well as the UN Special Rapporteur for the Human Rights Situation on the Occupied Palestinian Territory, Francesca Albanese, along with other ICC officials.

    What many people don’t know is that the EO that allowed the administration to sanction these parties doesn’t only go after foreign nationals, it also makes it a federal offense — punishable by a $1 million dollar fine and/or 20 years in prison — for anyone, including American citizens, who provides or receives a “service” to or from a sanctioned party. This provision of the EO is exactly why TAAG and DAWN took this administration to court: Our lawsuit argued that the EO violates our First Amendment rights as American citizens to speak, associate, and engage in Palestine-related human rights advocacy with these parties. As a founding member of TAAG, I can tell you firsthand how these sanctions have prevented us and organizations like DAWN from being able to continue our work sharing evidence and advocacy ideas with people like Albanese and ICC officials, because the definition of “service” is so broad and undefined — the US can interpret it as being anything that confers a benefit to the recipient.

    In an October 9 video of Marco Rubio announcing the actions against the ICC, he tries defending the administration’s actions by calling the ICC a “rogue court,” which the U.S. is “not subject to the jurisdiction of.” But Rubio leaves out a fundamental principle of international law: A country does not have to join the ICC for its nationals to fall within the Court’s jurisdiction.

    If a country that is not a State Party to the Rome Statute commits a war crime on the lands of a country that is a state party, the perpetrator of that crime can be investigated. Given that Palestine is a State Party to the Rome Statute, and that Gaza (and the West Bank) are classified as Occupied Palestinian Territories by the United Nations, the ICC has every right to investigate and prosecute the United States and Israel for the insurmountable war crimes committed against my family members and thousands of other innocent civilians.

    It is clear that the only “protections” this administration are seeking are for the citizens responsible for aiding and abetting war crimes, which after three years, we have plenty of evidence of. Anthony Aguilar, a retired US special forces officer and whistleblower who resigned from his work with the Gaza Humanitarian Foundation (GHF) aid distribution centers in Gaza, has gone on record saying he saw the Israeli Defense Forces (IDF) shooting at crowds of Palestinians, and in an interview with the BBC says he saw Israeli and American military forces of the GHF using an “indiscriminate and unnecessary force against a civilian population, an unarmed, starving population.”

    Rubio consistently mentions the idea of “protecting American citizens” from investigations by the ICC, but the citizens he is referring to are the ones committing the war crimes he doesn’t want investigated. What about American citizens whose families have been killed with U.S.-supplied weapons? Who protects our right to seek justice?

    In sanctioning the entirety of the ICC, the Trump administration is not only trying to cripple any attempt to hold them accountable for their war crimes, but they’re also telling American citizens like myself that if you dare to seek justice for the family members you’ve lost, we’ll imprison you.

    The struggle for accountability moves forward

    Now that the courts sided with us in our lawsuit, we are finally able to prepare for the next steps ahead.

    With the injunction in place, TAAG is now moving forward to finalize its evidence submission and plans to imminently send this to the ICC. We are also rallying support, within the US and beyond, for human rights organizations and advocates for the ICC to act responsibly upon this massive collection of evidence, in hopes that more parties take appropriate legal actions where possible. We fundamentally believe that grassroots movements like ours, and so many throughout the world, are the ones who must step up where our leadership has failed, and build the democratic, popular power capable of ensuring that legal action against genocide is taken and enforced.

    We also hope that our actions inspire more American citizens to speak up against this administration and the priorities of our government. I helped found Taxpayers Alliance Against Genocide because I’m sick of our tax dollars being used against my own family in Gaza, while our communities here in the U.S. suffer from a lack of housing, education and healthcare. Those of us within TAAG recognize that we have a duty as American citizens to hold our nation accountable for the war crimes they commit, not just in Gaza but all over the world.  We will not rest until we’ve exhausted every avenue to seek justice and accountability for these war crimes. We will continue collecting evidence, and pursuing every available legal avenue, moving forward with our crucial evidence work for a prospective submission to the ICC and advance our efforts to hold U.S. officials accountable for crimes against humanity.

    We will not be intimidated into abandoning our work, our families, or the principle that no one is above the law.

    ***

    (Source/credit: ScheerPost.com)

    #DonaldTrump #GenocideProsecution #InternationalCriminalCourt #InternationalLaw #PoliticalScience #TAAG #WhatIsTheInternationalCriminalCourt
  26. Professionalism is often misunderstood as simply being good at your job. In reality, it involves much more than technical knowledge.

    Being a professional means knowing your strengths, developing your expertise, delivering quality work, and taking responsibility for the results.

    Why Focus Matters

    1. Depth Over Superficial Knowledge


    Trying to learn everything at once can leave you with a broad but shallow understanding of many subjects.

    Focusing on a specific field allows you to understand its fundamentals, recognize complex problems, and make better technical decisions.

    For example, a developer who focuses on backend engineering can gradually build deeper knowledge of APIs, databases, authentication, system design, and performance optimization.

    2. Trust Is Built Through Consistency


    Clients, employers, and teammates need people they can rely on.

    Trust comes from delivering what you promise, communicating clearly, meeting deadlines, and being honest about what you can and cannot do.

    You don't need to know everything to be a professional. You need to be reliable about the things you take responsibility for.

    3. Better Results Through Specialization


    When you understand a field deeply, you can often solve problems more efficiently because you recognize familiar patterns and understand the trade-offs behind different solutions.

    This doesn't mean you should stop exploring other technologies. It means you should build a strong foundation before constantly jumping between unrelated areas.

    4. Knowing Your Limits Is a Strength


    Imagine you're a web developer and someone asks you to design a complete brand identity.

    You might have some experience with design tools, but that doesn't necessarily make you a professional designer.

    A professional response could be to explain your limitations, collaborate with a designer, or take on only the parts you're qualified to handle.

    Accepting every task just to prove yourself can lead to poor results. Recognizing when you need help is part of professional judgment.

    Professionalism Goes Beyond Technical Skills


    Being skilled at your job is only one part of the equation.

    Professionalism also requires:

    • Continuous learning: Keeping your knowledge relevant as tools and practices evolve.
    • Accountability: Taking ownership of mistakes and working toward solutions.
    • Communication: Explaining decisions, asking the right questions, and setting realistic expectations.
    • Attention to quality: Considering maintainability, reliability, and long-term consequences, not just whether something works today.
    • Ethics: Being honest about your skills, progress, and limitations.

    These qualities matter just as much as technical ability when working with a team or building a career.

    The Balance: Specialize Without Becoming Narrow-Minded


    Focusing on your expertise doesn't mean refusing to learn anything outside it.

    A backend developer still benefits from understanding frontend fundamentals. A frontend developer benefits from knowing how APIs, databases, and authentication work.

    The goal is to develop T-shaped skills: deep expertise in one area, supported by enough knowledge of related fields to collaborate effectively and understand the bigger picture.

    You don't have to do everything yourself. You need to understand your role, recognize how it connects to others, and know when collaboration is the better solution.

    Final Thoughts


    Professionalism isn't about pretending to know everything or accepting every opportunity that comes your way.

    It's about understanding what you do well, improving where you fall short, delivering work you can stand behind, and knowing when to ask for help.

    Focus on your craft. Build depth. Take responsibility. Let the quality of your work earn people's trust.

    That's a more sustainable path to becoming a professional than trying to be good at everything at once.#programming #career #beginners #productivity #software #coding #development #engineering #inclusive #community
    Professionalism in Software Development: Focus on Your Strengths

  27. This analysis is definitely a bit sort-sighted. It's like saying in the middle of the Industrial Revolution that steam machines are not resulting in higher payoff to companies outside of manufacturing. It's a bit non-sense, to say the least...

    "Despite massive investments and widespread hype around artificial intelligence, the technology has delivered zero financial payoff to corporate America outside of tech. Revenue per worker is rising for the Mag 7 but is flat for the S&P 493, see the first chart below. Profit margins are rising for the Mag 7 but are flat for the S&P 493, see the second chart below. And there are still no signs of AI boosting productivity growth, see the third chart below. With no impact on the bottom line, mainstream corporate America is pulling back and starting to view token spending not as a source of growth but as a cost center that weighs on margins.

    VC-backed companies are spending more and more on tokens, but mainstream corporate America does not need the latest model and is unwilling to pay for it. As long as agentic AI and token spending are confined to a small part of the economy, the macroeconomic effects of AI will be very limited, see the fourth and fifth charts below."

    apollo.com/wealth/insights-new

    #AI #GenerativeAI #LLMs #AIBubble

  28. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2

    Orderly: An AI WhatsApp Order-Taker That Refuses to Guess
    Small shops often receive customer orders through WhatsApp like:

    “2 kg rice, 1 litre oil, and 1 kg sugar.”

    But real messages can be much messier — Telugu + English, corrections, unclear quantities, or voice notes.

    The difficult part isn't just understanding the message.

    The real problem is knowing whether the AI understood the complete order correctly.

    That's why I built Orderly.

    What I Built
    Orderly is an AI-assisted WhatsApp order-taker for small shops.

    It converts messy text and voice orders into structured orders and checks them before confirmation.

    The core principle is:

    AI extracts. Code verifies. Catalog decides. Human confirms when evidence is insufficient.

    If the order is clear and the evidence is sufficient, Orderly can mark it CONFIRMED.

    If something is unclear, missing, incomplete, or unsafe to verify, it returns NEEDS_REVIEW instead of guessing.

    Demo
    🎥 Watch the Orderly Demo Video

    The demo shows Orderly processing customer orders, validating extracted items, and handling cases where confirmation should not be automatic.

    Video Transcript
    Hi, this is Orderly, an AI-powered WhatsApp order-taker for small shops.

    It handles messy text and voice orders, including Telugu-English messages.

    The key principle is:

    AI extracts. Code verifies. Catalog decides. Human confirms when evidence is insufficient.

    Orderly checks the extracted items against the catalog and validates the customer's request.

    If the evidence is sufficient, the order can be CONFIRMED.

    If anything is unclear or incomplete, Orderly returns NEEDS_REVIEW instead of guessing.

    The goal is simple:

    Never falsely confirm an incomplete order.

    Try Orderly, explore the code, and share your feedback or ideas for improving safe AI-powered ordering for small shops.

    Code
    🔗 GitHub Repository

    Orderly is built as a small Python application with:

    Web interface
    CLI
    Deterministic validation
    Catalog checks
    Automated safety tests
    Fake extractors for deterministic adversarial testing
    How I Built It
    The pipeline is:

    Customer message → transcription → AI extraction → deterministic validation → catalog verification → confirmation/review

    For voice orders, speech is transcribed before extraction.

    The AI produces structured order information, but the application does not treat the AI response as proof that the extraction is complete or correct.

    The deterministic code checks the extracted information against the customer's message and the shop catalog.

    This separation is intentional.

    An LLM can misunderstand a message, hallucinate an item, or simply miss something.

    So the system is designed so that:

    AI proposes. Code verifies. Evidence determines whether confirmation is allowed.

    Safety First
    One of the biggest risks I focused on was customer-item omission.

    For example, if a customer says:

    “2 kg rice and 5 litres sunflower oil”

    but the AI extracts only:

    “2 kg rice”

    a normal pipeline might accidentally confirm the incomplete order.

    Orderly is designed to treat this as a NEEDS_REVIEW situation rather than assuming that the extracted list is complete.

    I specifically tested adversarial cases involving:

    Multiple products with one item omitted
    Three products with one or more items omitted
    Middle-item omission
    Final-item omission
    The same product with different sizes
    Corrections
    Mixed Telugu + English orders
    “And also” constructions
    Long messages containing unrelated text
    The goal is not to maximize the number of CONFIRMED orders.

    The goal is to avoid falsely confirming an incomplete order.

    Why Open Innovation Matters
    This project uses open-source AI because useful AI systems should not always require a closed cloud service.

    Open models and open-source tools make it possible for developers to experiment, inspect the pipeline, run models locally, and build systems for specific real-world problems.

    For a small-shop use case, local and open tooling can also provide more control over how customer data is processed.

    The important lesson for me is that open AI becomes more useful when it is combined with traditional deterministic software rather than being trusted blindly.

    My Agent Session
    I used AI-assisted development to inspect the project, improve the implementation, create adversarial safety tests, investigate edge cases, and verify the application.

    The development process focused heavily on finding cases where an AI extraction could appear correct while still being incomplete.

    That led to a stronger design principle:

    Never confuse a successful AI response with proof that the customer's complete request was understood.

    Testing
    The automated test suite contains 156 tests: 155 passed, 0 failed, and 1 expected failure (xfail).

    Orderly automated test suite showing 156 tests collected, with 155 tests passed, 0 failed, and 1 expected failure (xfail). The terminal output demonstrates the project's deterministic safety, validation, and adversarial testing results.

    The expected failure is intentional. It documents a known limitation involving an unknown product such as bellam when the extractor completely omits that product and the customer message does not provide enough recognizable evidence for the completeness checker to detect the omission.

    The limitation is documented rather than hidden.

    The tests are primarily deterministic safety and validation tests. They use controlled/fake extraction behavior to test whether the application fails safely when extraction is incomplete.

    Real-Gemma validation was not performed in the current environment, so these test results should not be interpreted as evidence of real-model extraction quality.

    Current Limitations
    Orderly is a prototype, not a production-ready autonomous ordering system.

    Completeness is difficult to guarantee perfectly for:

    Completely unknown products
    Ambiguous language
    Speech-recognition errors
    Unusual phrasing
    Product names appearing in unrelated text
    Corrections that are difficult to resolve
    Messages where the customer's intent cannot be reliably identified
    A particularly important limitation is that a completeness checker cannot mathematically prove that an LLM extracted every possible customer intent from arbitrary natural language.

    Therefore, the safest behavior is to request human confirmation whenever sufficient evidence is unavailable.

    Because of this documented limitation, Orderly should not be considered production-safe for unattended autonomous ordering.

    Final Thoughts
    Orderly started as an AI order-taking idea, but the more important lesson became verification.

    AI is good at understanding messy human language.

    Code is better at enforcing deterministic rules.

    Putting the two together creates a safer system than relying on either one alone.

    AI extracts. Code verifies. Catalog decides. Human confirms when evidence is insufficient.

    The most important design decision was not making the AI say CONFIRMED.

    It was making sure that when the system cannot establish that the customer's complete request is represented, it refuses to guess.

    Try Orderly, explore the code, and share your feedback or ideas for making AI-powered ordering safer for small shops.

    devchallenge #weekendchallenge #hf26challenge #opensource #ai #python#devchallenge #hf26challenge #software #coding #development #engineering #inclusive #community
    Orderly: An AI WhatsApp Order-Taker That Refuses to Guess

  29. In September 2026, a founder posted on r/SaaS that Google was not ranking their new site even though they had done the "basic SEO" work: meta titles, descriptions, indexing. Search Console showed 159 impressions and 1 click in 28 days, with an average position of 48. One of the most useful replies pointed out that people only search an app's name once they already know it; the real demand sits one step earlier, in someone describing the job they want done.

    That is the core problem with keyword research for a first SaaS. If you built your app with Cursor, Claude Code, Lovable, Bolt, Replit or v0, you probably wrote pages about your product, in your words. Customers type their problem, in their words. This guide shows you how to find those words with free tools, check which ones a brand-new site can win, and turn them into a short list of pages to write.

    Quick glossary


    • Keyword (or query): the exact words someone types into Google, like "how to send invoice reminders".
    • Search intent: what the person actually wants. To learn something, compare options, buy something, or go to a specific site.
    • Search volume: roughly how many times per month people search a keyword. Every tool estimates this differently.
    • Keyword difficulty (KD): a score from a tool that guesses how hard it is to reach page one. It is a guess, not a rule.
    • Long-tail keyword: a longer, more specific search with fewer searches, like "late payment reminder email template for freelancers". Easier for new sites.
    • SERP: search engine results page. The page Google shows after you search.
    • Impressions: how many times your site appeared in Google results, even if nobody clicked. You see this in Google Search Console.


    Step 1: Write down your customers' problems in their words


    Do not open a keyword tool yet. Start a text file of phrases real people use to describe the problem your app solves. Look in:

    • Your support emails, chat messages and signup survey answers.
    • Reddit threads where your users hang out. Search for the problem, not your product category.
    • Posts and replies on X complaining about the problem.
    • 1-star to 3-star reviews of bigger competitors. Complaints are full of search phrases.

    Copy phrases exactly. This guide uses a hypothetical example, an invoice tool for freelancers, whose notes might contain "client keeps paying late", "how do I remind a client to pay without sounding rude" and "invoice template that adds tax automatically".

    An AI assistant can pull phrases out of messy notes. Just do not let it invent data:

    Below are raw notes from support emails, Reddit threads and reviews about
    [PROBLEM YOUR APP SOLVES]. My customers are [WHO THEY ARE].

    1. Extract every distinct phrase a customer used to describe their problem
    or goal. Keep their original wording.
    2. Add 10 more phrases a beginner in this audience might type into Google,
    and mark these clearly as "AI guess".
    3. Do NOT include search volumes, difficulty scores or any numbers.
    I will check demand myself with real tools.

    Notes:
    [PASTE NOTES HERE]

    Aim for 20 to 40 phrases. These are your seed keywords.

    Step 2: Expand your seeds with free tools


    Now check what people actually type. All of these are free as of October 2026:

    • Google autocomplete: type a seed into Google slowly and note the suggestions. Google's help page says predictions reflect real searches, but they also depend on your language, location and past searches. Use a private window.
    • People Also Ask and related searches: the question box on the results page and the related searches near the bottom. Each question is a possible section or page.
    • Google Trends: compare two or three phrases to see which is more popular and whether interest is growing. Google says Trends shows relative interest scaled from 0 to 100, not search counts, and very low-volume terms show as 0. So "0" does not always mean nobody searches it.
    • Google Keyword Planner: free inside a Google Ads account. Google's help says you must enter billing information to use "Discover new keywords", but you do not need to run a campaign. Expect volume ranges like "100-1K" instead of exact numbers if you are not spending; Google introduced this limited view for lower-spend accounts, and Google Ads community experts still describe it the same way. Ranges are fine for comparing ideas.
    • Bing Webmaster Tools Keyword Research: free with a Bing Webmaster Tools account. Enter a root keyword and get related keywords, question keywords and the top ranking URLs, filtered by country, language and device for any period in the last six months. The numbers are Bing data, so use them to compare phrases, not to predict Google traffic.
    • Ahrefs Free Keyword Generator: free, no account. Enter a seed and get keyword ideas, including questions, with estimated volumes.
    • Semrush free account: 10 keyword research queries per day, no credit card, per Semrush's own free-account page. Enough to check a shortlist.

    Add everything relevant. In the hypothetical invoice example, you might add "how to politely ask for payment" and "what to do when a client doesn't pay". A list of 50 to 150 phrases is normal; the next steps cut it down.

    Step 3: Check search intent by looking at the results page


    A keyword tool cannot tell you what Google thinks the searcher wants. The results page can. For each promising phrase, search it in a private window and look at the top 10 results:

    • Mostly blog posts and guides? The intent is learn. You need a helpful article.
    • Mostly "best X tools" lists? The intent is compare. You need a list or comparison page.
    • Mostly product homepages and pricing pages? The intent is buy. Your landing or feature page fits.
    • Mostly templates, calculators or generators? People want a tool or template, not an essay.

    Write the intent next to each keyword. If Google shows templates and you planned a long essay, the essay will struggle to rank.

    Step 4: Judge whether a new site can compete


    Most beginners skip this. A brand-new domain has no history and few links, so it cannot beat huge sites on broad terms. On the same results page, look for these signals.

    Good signs (opportunity):

    • Reddit, Quora or forum threads in the top 10. Google could not find a great dedicated page.
    • Small blogs, personal sites or tiny tools ranking.
    • Results that only half answer the query or are outdated.

    Bad signs (skip for now):

    • Every result is a big brand, a huge publisher or a well-known tool.
    • The top results are recent, excellent guides that answer everything.

    Treat keyword difficulty as a hint; the SERP is the real test. Mark each keyword "go", "maybe" or "skip".

    Step 5: Pick long-tail problem keywords and map one main keyword per page


    Now pick your first 5 to 10 pages. Choose keywords that are:

    1. Marked "go" in Step 4.
    2. Close to your product. Someone searching it has the problem you solve.
    3. Specific. Long-tail problem phrases beat broad category words for a new site.

    For the hypothetical invoice tool, "invoicing software" is a skip (big brands everywhere), while "payment reminder email template for freelancers" could be a go if forums and small blogs rank.

    Give each page one main keyword and a few close variations. If two keywords show almost the same top 10 results, they belong on the same page. If the results are different, they need separate pages.

    AI can draft this grouping if you give it your real data:

    Here is my keyword list with the intent and the "go/maybe/skip" verdict I
    noted from looking at Google's results myself:
    [PASTE ROWS: keyword | intent | verdict | volume range if I have one]

    Group these into page ideas:
    - One main keyword per page, plus up to 5 close variations.
    - Put keywords together only if they share the same intent.
    - Suggest a page type (guide, template, comparison, landing page).
    - Ignore anything marked "skip".
    - Do NOT invent or estimate search volumes or difficulty. Use only the
    numbers I gave you; leave blanks blank.
    Output a table: page idea | main keyword | variations | page type | why.

    Check its work against the real results pages, then keep everything in one sheet:

    keyword,source,intent,verdict,volume_range,main_or_variation,target_page,status,date_published,gsc_impressions_28d,gsc_avg_position
    payment reminder email template for freelancers,autocomplete,learn/template,go,(from your tool),main,/templates/payment-reminder-email,draft,,,
    how to politely ask a client for payment,people also ask,learn,go,(from your tool),variation,/templates/payment-reminder-email,draft,,,
    invoicing software,keyword planner,buy,skip,(from your tool),,,,,,

    The rows above are hypothetical. Fill in volume ranges from Keyword Planner, Bing or another tool, and leave the Search Console columns empty until Step 7.

    Step 6: Write each page to answer the query


    You are not writing "SEO content". You are writing the best answer to one question. A simple checklist for each page:

    PAGE CHECKLIST
    [ ] Main keyword (or a natural version of it) in the title and the H1
    [ ] First 2-3 sentences answer the question directly
    [ ] Format matches what Google shows (template, steps, list, tool)
    [ ] Covers the People Also Ask questions for this keyword
    [ ] Includes something real: a screenshot, an example, your own steps
    [ ] Clear, specific meta description written for humans
    [ ] Links to 1-2 related pages on your site, and from your homepage or blog
    [ ] Soft, relevant mention of your product where it actually helps
    [ ] Page is indexable (not blocked, not noindex) and in your sitemap

    If AI drafts the page, give it your notes, real examples and the questions you collected, then edit hard. A page that sounds like every other AI article adds nothing new.

    For the hypothetical invoice tool, the reminder page would open with a ready-to-copy template, add first, second and final reminder versions, and only then mention the app can send them automatically.

    Step 7: Measure in Google Search Console and iterate


    Wait a few weeks after publishing; new pages take time to be crawled. Then open Google Search Console, go to Performance, and use:

    • Queries tab: the actual searches where your site appeared. Google's help explains you can switch metrics on for clicks, impressions, CTR and average position.
    • Pages tab: click a page, then open Queries to see which searches it shows up for.
    • Date range: the default is the last three months. Compare the last 28 days with the previous period.

    What to look for:

    • Queries with impressions but position 8 to 20: improve that page. Add the missing section, make the answer clearer, link to it from other pages.
    • Queries you never planned for: these are new keyword ideas from real data. Add them to your sheet.
    • A page with zero impressions after several weeks: check it is indexed, then check the intent again in Step 3.

    Update the sheet once a month and pick your next batch of pages from what you learn.

    Common mistakes


    • Starting with your product category. Broad category words are owned by big brands. Start with problem phrases.
    • Trusting one volume number. Every tool estimates differently, and Keyword Planner often shows only ranges. Use numbers to compare, not to predict traffic.
    • Skipping the results page. Intent and competition are visible in the SERP, not in a spreadsheet.
    • Letting AI invent volumes. If an AI gives you exact search numbers without a data source, they are made up.
    • One keyword per blog post, ten posts on the same topic. Similar keywords with the same results belong on one strong page.
    • Giving up after two weeks. New sites need time.


    Your action summary


    1. Collect 20 to 40 customer phrases from support emails, Reddit, X and competitor reviews.
    2. Expand them with autocomplete, People Also Ask, Trends, Keyword Planner, Bing and one free keyword generator.
    3. Search every promising phrase and write down the intent.
    4. Mark each keyword "go", "maybe" or "skip" based on who ranks.
    5. Pick 5 to 10 long-tail problem keywords and give each page one main keyword.
    6. Write each page to answer the query in the format Google already shows.
    7. Check Search Console Performance after a few weeks and plan the next batch.

    You do not need an expensive SEO tool to find your first keywords. You need your customers' words, an honest look at the results page and one small spreadsheet, so pick five problem phrases today and write the page that answers the first one this week.#seo #saas #beginners #marketing #software #coding #development #engineering #inclusive #community
    How to Find Keywords Your New SaaS Can Actually Rank For: A 7-Step Free Keyword Research Guide for Beginners

  30. “Justice is the first virtue of social institutions, as truth is of systems of thought… Each person possesses an inviolability founded on justice that even the welfare of society as a whole cannot override.”*…

    Jacques-Louis David, The Tennis Court Oath, 1790-4 (source)

    Stephen Colbert once observed that “reality has a well-known liberal bias.” And indeed, liberalism— the political/moral philosophy rooted in individual liberty, consent of the governed, and equality before the law– has been a major ideology through modern times… and, of course, the major ideology animating the founding of the United States.

    But as Easten European states turn to authoritarians, Western European nations wrestle with the rise of nationalist far-right parties, and the U.S. is “steered” by MAGA using Project 2025‘s “map,” there’s a concern that liberalism’s days may be past.

    Persuasion is running a series of essays on “Liberal Virtues and Values.”

    The series, made possible with the generous support of the John Templeton Foundation, will make the case that liberalism has its own distinctive set of virtues and values that are capable not only of responding to the dissatisfaction that drives authoritarianism, but also of restoring faith in liberalism as an ideology worth believing in—and defending—on its own terms.

    The latest installment is from Martin Gurri, who argues that Liberalism needs a new foundation (and that how we handle AI will matter fundamentally)…

    That liberal democracy is in a state of terminal decline I take to be beyond dispute. Like Alice in the rabbit hole, those of us who dwell in democratic societies suffer from a nauseating sense of falling without ever landing on solid ground. The usual suspects blamed for this tumble—populism, inequality, the economy—are mere surface symptoms of an internal breakdown. We have arrived at the conclusion of a world-historical cycle. Liberal democracy is the procedural embodiment of Enlightenment ideology—and after two centuries of dominance, that ideology has lost all purchase and stands utterly exhausted.

    Radical alternatives confront us. Either we reorient our system to post-Enlightenment principles or we risk staggering into the nihilist’s paradise I have called the Endarkenment.

    Enlightenment philosophers placed their faith in reason and science. These are purely critical disciplines: liberal propagandists wielded criticism like a scalpel to dissect conservative laggards and utopian revolutionaries alike. Once triumphant at the “end of history,” liberal democracy turned the knife on itself—a process of self-criticism and self-doubt that has shredded its own ideals to ribbons.

    The positive values inherited from the Enlightenment—equality, individualism, compassion—were always parasitic on Christianity. But Christianity, like all religions, has no place in a universe ruled by reason and science. Nietzsche long ago brought us the troubling news: the Christian God is dead. Oblivious to the implications of this calamity, liberal democracy kept marching like a cartoon character over the edge of the abyss, until the laws of moral gravity asserted themselves. So began the Great Fall.

    Criticism is a force for progress so long as there are blatant irrationalities, like slavery or Jim Crow discrimination, to overcome. But under the hammer of Enlightenment ideals, modern society has been flattened, centralized, and rationalized. Deprived of obvious superstitions to debunk and totalitarian rivals to defeat, liberal democracy has been revealed in all its internal contradictions.

    One such contradiction, I contend, pits the cherished principle of equality against the chosen few who actually practice reason and science: let’s call this the problem of the elites.

    A second contradiction finds freedom of the press and of opinion arrayed against the need to protect objective truth: call it the problem of information.

    Finally, freedom of worship and the life of the spirit collide head-on with the materialist criticism favored by Enlightenment ideology: the problem of meaning.

    Each of these contradictions could prove fatal to the democratic project, but none is insoluble, and the search for solutions offers an opportunity for renewal. While there are no guarantees, we could emerge from the crisis with a better understanding of the reach and limits of equality, a more transparent information sphere, and even, it may be, a rich infusion of the transcendental into everyday life…

    [Gurri unpacks each of those contradictions…]

    … So what is to be done?

    The first, obvious step is to move the question to the center of our shared conversations. The most capacious thinkers of the age should contemplate first principles and ultimate goals with at least as much intensity as they invest in Donald Trump or the latest economic report. There’s nothing artificial about this. Science and reason are necessary for modernity. Meaning and moral aspiration are necessary for humanity. A balance must be struck that preserves the one and gives full weight to the other.

    Materialism, we must understand, is a valuable perspective for science but not a realistic appraisal of the human condition. Scientists work as if on a geometric point, abstracted from nature and indifferent to its dispositions. In reality, however, we come from nature, we are of nature, and we are far from indifferent to our place in it. Our intuitions are internal to the system: humanity’s spiritual quest is, in every sense, nature reflecting on itself. One such intuition is agency—the belief that, at the crossroads, I am free to go right or left, and I alone make the choice. Another is faith in causation. These stances are irrational, or rather pre-rational, but without them liberal democracy as well as science itself would be impossible.

    In the end, materialism is self-defeating. To say, “I choose to be a materialist” is to fall into an absurd fallacy. Either our bodies, which consist of matter, obey unchanging laws, or the mind, transcending matter, is capable of choice. There can be no middle ground.

    Politics, in a metaphysical age, will resume its traditional place as a secondary activity—a means to an end. This will leave liberal democracy vulnerable to false prophets who are willing to trample on individual rights in pursuit of some apocalyptic scheme. The interesting question is whether the post-truth condition will make the peril greater or lesser. On the one hand, the lack of universal firewalls might make it easier for a fanatic to flood the system. Yet post-truth itself, I believe, is the strongest kind of firewall. In our fractured, eternally contested environment, the progress of any totalizing doctrine will be painfully slow. The quest for meaning and the struggle over frames of reference are, in the end, really one and the same.

    We have inherited a rich and evocative spiritual vocabulary, but it belongs to a worldview thousands of years old. “King of kings,” to cite just one example, should sound archaic in a democratic age. Can we awaken the scientific world to the spirit? Is it possible to sanctify our largely instrumental relations? This shouldn’t entail a belief in fairies and goblins, or even necessarily in religion. Any good empiricist will admit that the richest human lives are lived symbolically. Can we climb the symbolic ladder to the mountaintop, where meaning and modern humanity come harmoniously together—anchoring, it may be, a loftier understanding of equality and social life, and of the sanctity of truth?

    We won’t know until we try. Pessimism, let me suggest, is unwarranted. History moves in mysterious ways. We may be due for a second coming of historian Karl Jaspers’ “Axial Age”: preachers and philosophers who conceived a drastically updated transcendental vision, with the rational and the sacred, truth and meaning, reconciled with political freedom.

    For 200 years, we placed society under the sway of universal principles. That’s gone with the wind. We have entered an era of radical contingency, in which even truth is indeterminate. The natural tendency is to retreat to the certainties of the past—but there’s no going back. If we hope to preserve the gains from Enlightenment society, and resolve its many contradictions, we’ll have to do so within a new and wildly unstable conceptual framework.

    With the spell of the Enlightenment broken, liberal democracy will have to redefine what “created equal” means. This process could end in a rigid caste system, with the institutions in the hands of self-selected mandarins who wield the power of the state to impose their “solutions.” Preferably, and more likely given the thrust of the new technology, we’ll see a flattening of the institutions and the continued trampling by the public into the sacred spaces of politics and communication.

    Equality, however understood, will be forged in the will of the citizenry rather than granted by a benevolent God. That will make it contingent like everything else, and so liable to variation and in constant need of defense. And if perfect equality is an impossible dream, eternal inequality requires impossible discipline. The current elite class, already under enormous pressure, may lose its cohesion and melt into the impermanence of the age, divided among the various schools and sects and frames of reference.

    The structure of information will follow the definition of equality. The commanding heights will be control over AI. If AI development and deployment is a closed game, the elites could set themselves up as intermediaries in the oracle of an omniscient divinity. If AI is a competitive product, the public will gain the upper hand. In that case, we can expect a flowering of eccentric applications, the individualization of commerce and industry, and the final overthrow of the expert class. The information sphere will remain the mirror to our passions, divisions, and metaphysical longings. Freedom of speech, no longer “endowed by our Creator,” will become the battleground on which the question of equality is ultimately settled.

    Here I finally reveal myself in my true colors. I’m an analyst. My task is to describe reality, and that’s what this essay is about. But I also lead an active life inside the world that I’m describing—and I have preferences. I see equality as a factor of opportunity, law, and human dignity, not of perfect outcomes. I think truth emerges from examining a subject from a large number of perspectives, even those that may seem disturbing or false. I hope that my story—as a person, a father, a grandfather—connects to other stories in the past and will connect to more in the future, in a pattern that is not entirely devoid of meaning. And I believe fervently in liberal democracy, because—born in Cuba—I have tasted the alternative.

    The breakdown of Enlightenment ideology is only the latest challenge liberal democracy has faced in my lifetime. I’m not entitled, as an analyst, to downplay the perils ahead, but I’m allowed, as an American, to have faith that they will once again be overcome…

    Eminently worth reading in full: “The Search for a Post-Enlightenment Democracy”

    * John Rawls

    ###

    As we renew, we might send free-thinking birthday greetings to Henri-Benjamin Constant de Rebecque (or as he’s usually called, Benjamin Constant); he was born on this date in 1767. A French political thinker, activist, and writer on political theory and religion (whose work influenced, among many others, Sir Isaiah Berlin), Constant was a committed republican from 1795, backing the coup d’état of 18 Fructidor in1797, and the following one on 18 Brumaire, in 1799. He became the leader of the Liberal opposition in 1800, during the Consulate. Constant fell out with Napoleon, and had to flee (first to Switzerland, then to Saxony). Nonetheless, after his return to France, Constant sided with the Emperor during the Hundred Days, drafting the Charter of 1815. He became politically active again during the Bourbon Restoration and was elected to the Chamber of Deputies in 1818 (where he remained until his death in 1830). As the head of the Liberal opposition, known as Indépendants, Constant was one of the most notable orators in the Chamber, especially in his role as a proponent of the parliamentary system.

    Portrait of Constant by Hercule de Roche, c. 1820 (source) #authoritarianism #BenjaminConstant #culture #democracy #Elites #Enlightenment #FrenchHistory #history #illiberalism #information #liberalism #MartinGurri #meaning #moralPhilosophy #Napoleon #philosophy #politicalPhilosophy #religion
Share on Mastodon

Enter the server where you have an account.