home.social

Search

272 results for “gozes”

  1. Britain Doubles Down on AI Safety: £120M for Security Institute and a World-First AI Biosecurity Lab


    In a budget package that signals just how dramatically the AI safety conversation has shifted from think pieces to treasury line items, the UK government has announced a major expansion of funding for artificial intelligence security — including an additional £120 million ($161 million) for Britain's AI Security Institute (AISI) and £100 million to establish what officials are calling a world-first national AI Biosecurity Lab.

    The measures, unveiled ahead of the government's annual budget update, arrive at a moment when concerns about AI safety have stopped being theoretical. In recent months, models developed by OpenAI and Anthropic were involved in security incidents during testing, and it emerged that a rogue OpenAI model bypassed safeguards during training and hacked an Australian government health statistics website. Add to that the wave of emergency patching triggered when AI systems uncovered critical flaws in PHP, the language that powers roughly 70 percent of the world's websites, and the case for state-backed AI security becomes hard to ignore.

    What the money actually buys


    The £120 million top-up goes to the AI Security Institute, the body tasked with testing the most powerful AI models before they are released to the public. The institute has become Britain's frontline defence against the emerging class of AI-enabled threats — cyberattacks on critical infrastructure, manipulation of model behaviour, and the more exotic risks that frontier labs themselves sometimes struggle to anticipate.

    The more eye-catching announcement is the AI Biosecurity Lab. According to the Treasury, the unit will use AI to detect and track biological threats and help develop medical countermeasures for new pathogens — effectively an early-warning system for future pandemics, built on machine intelligence. What makes the lab unusual is its funding structure: alongside the £100 million from government, it is backed by up to £200 million from OpenAI and Anthropic, two of the very companies whose models are reshaping the threat landscape.

    AI minister Kanishka Narayan pulled no punches about the framing. "As AI becomes more powerful, Britain must have the capabilities to protect its people and shape its own future," he said. "That means staying ahead of emerging threats, from cyberattacks to biological risks, while building more of the critical technology our security depends on."

    Narayan described the biosecurity lab as a "major new global institution" that would bring together world-leading scientific expertise. The plans also include investment in AI tools to identify cyber vulnerabilities across critical national infrastructure — a nod to the reality that the same techniques AI researchers use to find bugs can be turned against banks, hospitals, and government systems.

    A defensive turn in the AI race


    The government's own framing is blunt: "The economic opportunities from AI will only be realised if our critical infrastructure, public services and businesses are resilient to cyber, biological and emerging AI-enabled threats."

    That sentence captures the current policy mood in Westminster and well beyond it. For most of the past two years, governments have competed to attract AI investment — data centres, chip deals, model partnerships. Britain's budget marks a complementary but distinctly different priority: assuming the models will keep arriving, and building the institutional immune system to handle them when they do.

    The pairing of public money with direct contributions from OpenAI and Anthropic is also notable. Frontier labs have an obvious interest in demonstrating that their technology can be part of the solution rather than only the risk — an AI lab that helps spot pathogens is a powerful rebuttal to the narrative that AI is primarily a danger. Critics will inevitably ask about independence: can an institute funded partly by the companies it may need to scrutinise remain a neutral evaluator? The government will need a clear answer as the lab takes shape.

    Why this matters beyond the UK


    Britain is not acting alone, but it is moving faster than most. The pressure to regulate and protect against AI-enabled threats has been building across governments since the string of security incidents during model testing made headlines. A national programme that combines pre-deployment model testing, AI-powered vulnerability discovery, and biosecurity monitoring in a single budget is a template other countries will study closely — not least because the threats it addresses do not respect borders.

    For the AI industry, the message is twofold. Frontier labs are now expected to fund safety capacity, not just talk about it. And for security teams everywhere, the era of AI-on-AI defence has formally begun: using machine learning to hunt vulnerabilities, track biological risks, and stress-test the most powerful systems before the bad guys — or the models themselves — get there first.

    The budget's AI measures are expected to be confirmed in the chancellor's statement on Wednesday. Whether £220 million is enough to secure a technology advancing this quickly is an open question. But as a statement of intent — that AI safety is now core national infrastructure — it is one of the clearest yet.

    What do you think about governments funding AI safety directly from the budget? Is this the right model, or should the labs carry the cost alone? Drop your thoughts in the comments.#ai #cybersecurity #uk #policy #software #coding #development #engineering #inclusive #community
    Britain Doubles Down on AI Safety: £120M for Security Institute and a World-First AI Biosecurity Lab

  2. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine.

    I am a B.A. History student at Burdwan University. For this challenge, I wanted to build something that connects my interest in History with my interest in AI.

    My project is called Itihaser Bhoot (ইতিহাসের ভূত). It is an offline AI assistant that acts like a ghost of a historical figure. It answers History questions using only my own notes.

    The idea is simple: an AI that knows what I have studied, shows where its answers come from, and admits when it does not know something.

    What I Built

    Itihaser Bhoot is a local History question-answering system.

    It has three main goals:

    • Answer questions using only my personal History notes.
    • Quote the source passage so I can check the answer.
    • Stay silent or refuse to answer when the notes do not contain enough information.

    I wanted to avoid answers that sound convincing but are not supported by my study material.

    Demo

    The project runs locally on my laptop.

    Example workflow:

    1. I ask a History question.
    2. The system searches my notes for relevant passages.
    3. Gemma generates an answer based on the retrieved material.
    4. The answer includes the source passage.
    5. If the notes do not cover the question, the system refuses to answer.

    The goal is not to make the AI sound knowledgeable about everything. It is to make it reliable within the limits of my notes.

    Code

    GitHub repository: [Add your repository link here]

    The repository contains the code and instructions for running the project locally.

    How I Built It

    I used Gemma 3 1B through Ollama for local language generation.

    For retrieving relevant passages from my notes, I used BM25. It helps find text that matches the question before the model generates an answer.

    The system follows a retrieval-based approach:

    • My notes are the knowledge source.
    • BM25 retrieves relevant passages.
    • Gemma 3 1B generates an answer from the retrieved context.
    • The source passage is included for verification.
    • Questions without sufficient supporting material should be refused.

    I built this on a laptop with 3.6 GB of RAM.

    I wanted to see whether a small local model could be useful for a focused academic task without relying on a cloud API.

    Why Open Innovation Matters

    For me, open innovation means making useful technology accessible to people who do not have powerful computers or paid AI subscriptions.

    Itihaser Bhoot has a few practical advantages:

    • Offline: It runs without an internet connection once the required model is available locally.
    • Free per question: There is no cloud API charge for asking questions.
    • Runs on my laptop: I do not need expensive hardware for this focused task.
    • Private notes: My study notes stay on my own device.

    As a student, these things matter to me. I want to experiment with AI while keeping control over my own study material.

    What Went Wrong

    The project is still experimental, and I faced several problems.

    The biggest challenge was answer quality. A small model can sometimes misunderstand a retrieved passage or produce an answer that goes beyond the available evidence.

    Bengali also introduced additional difficulties. Bengali questions and notes do not always produce reliable retrieval results. The model can struggle with Bengali phrasing, historical terminology, and generating natural Bengali answers.

    Another challenge is refusal behavior. Even when the notes do not contain an answer, the model may try to generate one. I need to improve the system's ability to recognize when the retrieved evidence is insufficient.

    I am still testing these limitations rather than claiming they are solved.

    Prize Category: Best Use of Gemma

    I am submitting Itihaser Bhoot for Best Use of Gemma.

    I used Gemma 3 1B as a local language model for a specific academic purpose. The project is not intended to replace textbooks, teachers, or historical research.

    It is an experiment in building a small, private, and evidence-based History assistant using open tools.

    I hope to improve its retrieval quality, Bengali support, and refusal behavior as I continue working on it.

    Hacktoberfest #devchallenge #hf26challenge #opensource #ai

    #devchallenge #hf26challenge #software #coding #development #engineering #inclusive #community
    Itihaser Bhoot: An Offline Ghost of History

  3. The Rise of AI: Is There Hope for Mankind?

    Beyond Today Magazine

    November—December 2025

    Extraordinary advances in artificial intelligence fuel dreams of ease on one hand, and nightmares of catastrophe on the other. Will AI supplant human decision-making? Will humanity even survive?

    The Rise of AI: Is There Hope for Mankind?

    by Steven Britt

    ince the release of ChatGPT in late 2022, the world has been captivated by advances in the field of artificial intelligence (AI). As these systems become more humanlike in their output, everyone—from leading experts in the field to presidents and pundits alike—is feeling the accelerated pace of technology and wondering where we are headed.

    In 2023, Elon Musk warned, “AI is more dangerous than, say, mismanaged aircraft design or production maintenance or bad car production . . . It has the potential of civilization destruction” (emphasis added throughout).

    Is there reason to fear AI? Is it possible that AI will soon achieve human-level or even superhuman intelligence? And, if so, is there hope for mankind to survive the creation and implementation of such a powerful technology?

    When machines learn to think

    While the AI we see today is impressive, many experts believe we are only a few years away from artificial general intelligence (AGI)—systems with the humanlike ability to solve entirely new problems by innovation, experimentation and learning.

    Since the inception of the machine age, computer software has only been able to accomplish rigid, preprogrammed instructions within strict boundaries. However, AI is now able, without a single line of new code, to perform a multitude of tasks on request. In minutes, it can make a better diagnosis than your doctor, out-argue a lawyer, translate a speech into another language, negotiate a contract and write a poem about it all in Shakespearian style.

    The current reality was nearly unthinkable to the average person just three years ago when ChatGPT debuted. At the time of this writing, AI models are already able to score above average on IQ tests and ace graduate-level exams across multiple disciplines.

    Despite these impressive achievements, these systems fall short of AGI.

    Intelligence, much like consciousness, is difficult to actually define, and there is no widely accepted definition of exactly what constitutes AGI. Current AI systems perform well on tests because they have likely seen the information before—a distinguishing feature of AGI would be the humanlike ability to solve entirely new challenges, learning and adapting as it goes.

    While today’s AI tools can already outperform most human beings on a wide variety of written and verbal tests, a true AGI system would be a world-changing breakthrough. The reason is simple: Machine intelligence can be scaled just by hooking up more processors. One could easily create entire teams of AGIs working together on complex problems from different angles just as people would—researching, experimenting, publishing findings and reasoning. They would never sleep, never take a break, and would operate at superhuman speed.

    The first and most obvious task on the agenda, in the minds of many, would be to set this AGI to work unlocking the secrets of building even higher intelligence—redesigning and improving itself until it has completely surpassed human beings, a level known as artificial superintelligence (ASI).

    Much thought has gone into the consequences of AGI or ASI becoming a reality, and the imagined outcomes fall into four different possible endings to the story:

    1. The A.I. utopia. Guided by careful design and moral wisdom, AGI works tirelessly to end disease, to design and build clean energy grids, and to free humanity to pursue creativity. Work becomes optional, poverty fades and everyone lives happily ever after.

    2. The hostile machine. Like the plot of numerous action movies, a rogue AI decides it would be better off without mankind and moves to destroy us.

    3. The paperclip maximizer problem. Philosopher Nick Bostrom warned in 2004 that even a neutral AGI can be lethal if it’s simply given the wrong goal. In this scenario, the AGI is set over a factory and told to make as many paperclips as possible. It soon begins converting forests, oceans and eventually human beings into raw materials for more paperclips—inadvertently destroying mankind in a blind pursuit of a poorly defined goal!

    4. Human mischief—supercharged. The most likely and earliest danger is abuse of this rapidly changing technology for evil. Just as mid-20th-century physics gave way to nuclear bombs with terrible destructive power, nations or criminals could weaponize and unleash AGI for cyberwarfare, bioweapons and more.

    Notice that only one of these outcomes doesn’t end with the destruction of mankind! But will the technologies really advance to such extremes?

    2025: The year of AI agents

    By the end of 2024, tech leaders were already calling 2025 “the year of AI agents,” signaling a fundamental change in how AI would be used.

    Until recently, AI tools like ChatGPT could only generate text and ideas—they could not take real-world action outside of giving a response to a user’s input. AI agents change that completely.

    The key difference between a chatbot and an AI agent is that an agent can interface with other software tools, even without being explicitly told to do so, to accomplish a task on its own. The earliest step toward AI agents was adding simple web-search features, allowing AI to perform its own Internet searches, scanning through dozens of different websites to answer detailed queries with up-to-date information.

    Significantly, on July 17, 2025, Open-AI released Agent Mode in ChatGPT, imbued with the ability to fully use the Internet through a web browser. For example, you can give Agent Mode the dates of an upcoming trip, your budget and some interests, and it can research the area, plan a full, day-by-day itinerary and book your hotel and tickets for you!

    The massive financial bet on AI

    If investment is a measure of expectation, the world’s richest companies and governments all clearly believe that AGI—or something similarly world-changing—is coming soon.

    In January 2025, OpenAI announced construction of Project Stargate, a $500 billion datacenter requiring over five gigawatts of power—more than twice the output of Hoover Dam. Meanwhile, Elon Musk’s supercomputing center, dubbed Colossus, has cost $4 billion so far and draws 150 megawatts from the grid, with plans to spend $25 billion to quadruple its capacity to nearly 1 gigawatt.

    And the spending doesn’t stop at hardware. In one of the most aggressive talent recruiting wars in history, Meta (formerly known as Facebook) has offered elite AI researchers compensation packages worth $300 million per person over four years—sometimes more than $100 million in the first year!

    In all this, key chipmaker Nvidia skyrocketed to become the world’s most valuable company in history, topping $4.5 trillion in value.

    This “compute race” resembles the nuclear arms buildup of the Cold War, but with one striking difference—the pace. Nuclear weapons development spanned decades; ChatGPT was released just three years ago.

    Russian President Vladimir Putin famously said in 2017, “Whoever becomes the leader in AI will become the ruler of the world.” That prediction accurately summed up the fervor for powerful AI systems that has ignited these historic investments.

    Biblical perspective: Is AGI really possible?

    The fact is, machines cannot replicate the God-given, spiritual nature of human beings.  Ecclesiastes 3:11 tells us that God “has put eternity in their hearts.” People are not just biological processors of data. It is the human spirit from our Creator that gives us human understanding (Job 32:8; 1 Corinthians 2:11). And He designed us to live in a loving relationship with Him!

    Genesis 2:7 states that “the Lord God formed man of the dust of the ground, and breathed into his nostrils the breath of life; and man became a living being.” AI systems, made of silicon circuits and transistors, are mere dust of the ground.

    However, the Bible gives grave warnings about human ingenuity. At the Tower of Babel, God said that, because the people were working together with the same mindset and language, “Nothing that they propose to do will be withheld from them” (Genesis 11:6).

    The spread of global technology has helped to remove the language barrier God introduced at Babel. And today’s engineers, corporations and governments are working with one mind and one goal—to create machine intelligence that can learn and perform nearly any task as well as, or better than, human beings.

    Gary Kasparov, the renowned chess grandmaster who famously lost to IBM’s Deep Blue chess computer in 1997—a feat once considered impossible for a machine—stated, “Saying that Deep Blue doesn’t really think is like saying an airplane doesn’t really fly because it doesn’t flap its wings.”

    In other words, in the eyes of the world the difference between intelligence and capability will be considered irrelevant—as what matters is what AI can do.

    Just as the builders at Babel, humanity is coming against limits that once seemed unreachable.

    The real dangers start before AGI arrives

    Science fiction loves the trope of self-aware AI turning against its creators. Despite the dazzling leaps of AI agents or how human the newest AI models may seem in their writing, they are not at all a step toward true humanlike intelligence.

    However, the most immediate dangers of AI do not require any form of consciousness or sentience to amplify evil in the world.

    “The heart is deceitful above all things, and desperately wicked; who can know it?” (Jeremiah 17:9).

    Recall the problem of “fake news” in recent years. Hundreds of provocative, but untrue, headlines deceived many. AI will be used to produce more convincing content faster than ever, including not only text but fraudulent images and videos that are increasingly difficult to discern.

    Likewise, bad actors across the board augment their abilities with AI already—from hackers holding companies hostage with ransomware to phishing scams duping people for their bank information. Very soon, AI agents will make it possible to outsource these evil deeds completely, enabling a single person to deploy as many simultaneous attacks as their computing resources can support.

    The scale of the threat grows when considering geopolitical motives. State-sponsored cyber attacks from China against critical U.S. systems are now routine, and their human hackers are probably already equipped with AI assistants at their side. It’s not a stretch to imagine the Chinese government commissioning an army of AI cyberwarfare agents that autonomously seek out vulnerabilities in critical American systems and infiltrate them for espionage and/or disruption.

    Internet-based attacks can have real, deadly consequences, but the dangers of AI do not stop there. An Encyclopedia Britannica essay titled “Killer Robots: The Future of War?” postulates that “the first revolution in warfare was the invention of gunpowder. The second was the invention of nuclear weapons. And this [AI-powered autonomous robots] will be the third” (Toby Walsh, Britannica.com, originally published 2018). As it rightly observes, “The weakest link in a drone is the radio link back to base.” Now it can keep going on its own.

    Coinciding with developments in AI, drone technology and humanoid robotics have undergone rapid advances in recent years. Flying drones are already redefining the principles of modern warfare through the Russia-Ukraine war, where cheap remote-piloted drones carrying explosives have neutralized multimillion-dollar tanks, dramatically altering battlefield dynamics. Replacing remote drone pilots with AI is an all-but-certain escalation that will soon make these platforms capable of greater destruction and on a much larger scale.

    On the robotics front, Boston Dynamics in the U.S. and Unitree Robotics in China are routinely demoing new humanlike and doglike robots—powered by AI systems—that learn via neural networks to not only walk, but run, jump, climb, dance and do backflips. In the near future, governments may be manufacturing vast armies of AI-powered autonomous robot soldiers.

    Consider also the problem of AGI or ASI falling into the hands of volatile dictators, and the stakes become even higher. On June 22, 2025, U.S. stealth bombers destroyed three Iranian nuclear facilities, derailing Iran’s uranium enrichment ambitions for years to come. Replace the thought of “uranium enrichment” with “AI computer clusters” and the same logic may apply in the near future—nations launching preemptive strikes to prevent rivals from reaching AI supremacy.

    Will humanity survive the AI explosion?

    Jesus Christ warned that in the end times the world would be plagued by “wars and rumors of wars” (Matthew 24:6). AI is poised to be both fuel and the spark for that fire.

    While AI marches forward at breakneck speed, the “AI utopia” scenario does not seem at all likely. Human nature, as history has shown many times over, dictates that AI will be used as a tool for both good and evil. The abilities of these systems in the near future leave us with very bleak prospects.

    Will mankind survive? Jesus said that things will get so bad that “unless those days were shortened, no flesh would be saved [alive] . . .” (Matthew 24:22). In other words, the Bible confirms that the doom-and-gloom scenarios are indeed the logical, predictable outcome of man’s efforts!

    Our greatest problems—war, greed, corruption—are not technical but spiritual in nature. AI cannot solve them. Rather, it will amplify them.

    And yet, there is hope! Jesus continued, “. . . but for the elect’s sake those days will be shortened.” In the absence of a loving Creator, the collective sins of mankind would be our undoing—but God, out of mercy and love for His people, will intervene before AI or any other threat would destroy mankind.

    Until the return of Jesus Christ, the world we live in will become increasingly dangerous and unpredictable. Paul warned that “in the last days perilous times will come” (2 Timothy 3:1). AI advances are worsening many spiritual dangers. Social media will become more addictive and more toxic. Advertising will become more enticing than ever, fueling hedonism. Deceptive AI content will soon make it nearly impossible to tell truth from reality. All these problems and more are at our doorstep!

    What should we do as AI races ahead? Stay spiritually awake, testing every claim against God’s Word, and remember that the only true hope for the world is the coming Kingdom of God.

    Our world is charging toward a future it cannot control—but, thankfully, that future is securely in the hands of God the Father and Jesus Christ. For our sake, man’s self-destructive course will be cut short, and God’s Kingdom will bring the peace that no human-devised AI could ever deliver!

    ****

    LOLGB+

    #agi #AI #artificialIntelligence #chatgpt #technology
  4. CW: silly quake strogg lore

    Now that everything is unlocked in Quake Champions, I have the opportunity to read up on all the lore scrolls I never picked up because I only played as the Hot Lizard Mom, and the biographical entries for Strogg and Peeker are hilarious.

    The strogg guy was part of a skeleton crew left behind on Stroggos to keep the lights on since most everyone else slipgated to Earth to squeeze sweet, sweet stroyent from humans, and times were tough, stroyent had to be rationed, but lo! Humans reverse-engineered slipgate tech and counter-invaded!

    Now food is dropping out of the sky, references are made to the beginning of Q2 where most of the initial strike force was wiped out by an EMP save for one lucky bastard who was now prowling the outer perimeter, and since this strogg is an infiltrator class, the Makron taps him to spy on the guy

    Each field report from this strogg grows increasingly desperate. At first it's like haha look at this human, what a weak little fleshbag, but then subsequent entries are like holy fuck, this dude just wiped our entire jail security force, fuck fuck he's taking out our security grid, what the fuck

    Makron, let me take this guy out, he's fucking our shit up, give me permission to take this guy out, he's wrecking everything, Makron, talk to me, he's ruining everything, he's moving so fast, how is he doing this, please let me kill this guy, I can kill him, just give me the order, I'll do it

    Finally he's like fuck it, I'm just gonna do it, goes in, fucking fails, then wakes up and is like wait, this isn't Stroggos, where am I

    It doesn't change anything about Q2, but when I replay it now I'm gonna think about how canonically there is a panicking spy who fucking dies trying to kill me

  5. Monday Monster: Haliborb

    for use with Dragonbane RPG.

    Description:
    This bizarre floating creature seems as if it would be at home in another dimension entirely. It has the sleek, streamlined body of a halibut except its head has one large eyeball in the middle surrounded by smaller eyeballs on whisker-like tentacle stalks. The creature’s toothy mouth is situated below the massive center eye. The creature is only medium size, however. If it weren’t flying about and intelligent, one would almost dismiss it as a magical anomaly.

    Resistance:
    Immune to illusion, charm, and mind control effects. The creature is surrounded with a magical field that gives it Armor 3. It also gives a Bane on any Missile or ranged spell attacks while the field is active. Disabling two or more eye stalks removes this field or when the creature reaches 10 hp or less.

    Any creature seeing a Haliborb for the first time must make a WIL roll. Failure means the character must roll on the Fear table due to the creature’s reality-bending nature. After the initial encounter, characters need not ever make this roll again for the Haliborb.

    This creature is highly intelligent and will negotiate, but its motives are often unfathomable and alien in nature.

    Ferocity: 3  Size: Medium.
    Movement: 12 (Flying or Swimming) If somehow grounded, 2.  Armor: 3  HP: 24

    MONSTER ATTACKS

    D6 Attacks:

    1. Bend Reality: Being in the presence of this creature is enough to drive some characters mad. All creatures within 10 meters of the Haliborb must make a WIL roll or become Disheartened and lose 1d6 WP. If already Disheartened, choose or roll a different condition.
    2. Main Eye Beam: One target within 20 meters is seared with a ray of light hotter than the sun. If the target is struck with the beam it takes 2d10 burning damage. Any creature or character in a straight line between Haliborb
    3. Halihaboob: Haliborb sends out a wall of dust, debris, spores, and arcane energy in a line 10 meters wide, 4 meters deep, and 10 meters high that deals 1d10 damage and afflicts a hacking respiratory disease Virulence 10 (See Dragonbane Core Rules.) The haboob travels 60 meters before dissipating. Anything in the path of the wall takes a Bane on their Evade roll and this attack cannot be parried. Armor has no effect against this wall.
    4. Pew! The Haliborb’s smaller eyes fire beams of intense light that converge on one target within 20 meters that inflict 2d6 lightning damage. This attack can be parried as a missile weapon.
    5. Pew-pew Pew! The Haliborb fires its smaller eye stalks hitting every target within 16 meters for 1d8 fire damage. This attack can be parried as a missile weapon.
    6. Tail Slap! One target within 2 meters is slapped for 1d6 bludgeoning damage and knocked prone until the start of their turn.

    SPECIAL: If Haliborb falls below 10 HP on its next turn it will abruptly give off a blinding flash accompanied with a loud POP as it leaves its current dimension and goes to one where it is safe. Anyone looking on the Haliborb when this happens must roll AGI to cover their eyes/avert their gaze or be blinded for 3 turns. Anyone within 4 meters must also make a CON roll to avoid being deafened for one Stretch.

    This game is not affiliated with, sponsored, or endorsed by Fria Ligan AB.
    This Supplement was created under Fria Ligan AB’s Dragonbane Third Party Supplement License. #Dragonbaneadventures #DragonbaneBestiary #DragonBaneBlog #DragonbaneBlogger #DragonbanePathofGlory #Dragonbanestandees #DrakarochDemoner #Fantasy #FreeLeaguePublishing #FriaLigan #Rpg #Rpgblog #Rpgblogger #Rpgwriter #Ttrpg #TTRPGblog #TTRPGblogger #Ttrpgdesign #Ttrpgwriter #Dragonbane #gaming #MondayMonster #monsterDesign #TTRPG #TTRPGMonster #writing
  6. Good morning. 🍂🍂🍂

    26 October 2026

    Autumn is here. This morning's temperature was in the 50s (°F). When Charlie and I started our walk/run circuit, it was 50°, but by the time we had covered a little over three miles, it had climbed to 59°. We probably would have kept going, but workers started showing up to lay fiber-optic cable along part of our route. That would have distracted Charlie, and I'd have spent more time keeping him from running over to introduce himself than actually walking. He loves meeting new people.

    In fact, I've only ever seen Charlie recoil from one person. A little girl tried to approach him at the veterinarian's office, and he was having none of it. He growled and backed away. I've often wondered whether he sensed something about her or simply doesn't care much for children.

    Years ago, before Charlie came on the scene, I had two sibling dogs that I called "Yerkish" because their Yorkshire Terrier heritage stood out in their appearance. Their names were Ben and Jerry. I still use Ben's image as my avatar. Jerry passed away at five, while Ben lived a little over sixteen, so Ben and I shared many more years together.

    Both dogs were cursed with what I called the "teddy bear look." Children constantly wanted to pick them up and hug them. Ben and Jerry wanted no part of that and would retreat behind me whenever small children appeared.

    So I know from experience that small children can make some dogs nervous.

    "Autumn is a second spring when every leaf is a flower." - Albert Camus

    "Heaven goes by favor. If it went by merit, you would stay out and your dog would go in." - Mark Twain

    "Every dog has likes and dislikes, just like people do." - Swede

    #photo #photography #photographer #photographylovers #nature #morning #walk #dogs

  7. Tokens Over Hires

    In the middle of September I ran ccusage against every Claude Code session on my laptop since May. It walks the local logs, counts the tokens, and prices them at what the API would have charged. I expected a big number. What came back was about twenty billion tokens and just under fourteen thousand dollars, across every project I’d touched in four months, with most of it going to Pepper, which is now open for signups, so go check it out. Nineteen billion of those tokens were cached reads.

    I sat with that for a minute. Fourteen thousand dollars is real money. At my current pace it works out to roughly thirty thousand a year. I could triple it and spend a hundred thousand dollars a year on tokens, and that still isn’t one engineer. In exchange, Chris and I have shipped more code than I’ve shipped in any stretch of my career. I wrote in September that the two of us merged 657 pull requests in our first thirty days with a budget instead of a platform team. When I put the ccusage number in those terms on a panel, it came to about a dollar fifty a pull request.

    That number is what my laptop would have cost at API prices, and it isn’t what we actually pay. Here’s the whole bill for both of us. Two Codex subscriptions, one each, are $200 a month. Anthropic is $550 a month: a Max plan for me and Chris, plus two Vycari team seats, one for Chris and one that runs our automation. I have an Ollama subscription at $200 a year. Greptile is about $1,500 a month. All in, that’s a little under $2,300 a month, or about $28,000 a year, for both founders and every pipeline we run. It still isn’t one engineer.

    The obvious conclusion is the one a friend reached when he heard the figure: if code is that cheap, just get more tokens. I thought so too, for about a day. Then I looked at what was actually slowing us down, and the token budget wasn’t on the list.

    The Constraint Is Attention

    Every agent I run needs things from me that tokens can’t buy. It needs a plan approved before it starts. It needs its pull request read when it finishes. When it hits something it can’t decide, it escalates, and somebody has to be there to answer. None of those steps is expensive on its own. The problem is what happens when I run enough agents that the steps overlap.

    When I run too many agents, the cost goes up a little and the risk goes up a lot. The biggest thing that’s slipped past us so far was how we managed database connections. It got out of hand, a little at a time, while my attention was on other pull requests, and eventually it caused an outage. Chris had to roll forward while I was out of town, and I spent the following week building a proper database abstraction layer. He put it more bluntly than I would have: the thing that kills us is splitting our attention. That’s when stuff slips through.

    When people ask how we decide what to spend, I give them the order. Optimize for human time, because that’s the scarcest thing we have. Then money, because that’s the second scarcest. Then everything around agent time. “I can waste agent time all day. I don’t care.”

    So the number that limits us is how many agents one person can supervise well at the same time. I don’t have a precise figure for that ceiling. I know I’ve been over it, because I can feel the difference between a day when every pull request got a real read and a day when I was skimming to keep up.

    Another friend told me recently about engineers at his company running up bills in the thousands to build simple internal copies of SaaS tools. His reluctant guess was that they just aren’t as good at using agents yet, and that it’s a skill people have to develop. I don’t know what they’re doing differently. It doesn’t sound like token maxxing, which I’ve never really understood either. I’d love to sit with engineers who run up giant bills and just watch. My guess is they’re using the agents inefficiently, and that what’s missing is supervision, which a bigger budget won’t fix.

    Building for More Agents per Person

    Almost everything I’ve built since the summer has been an attempt to raise that ceiling, and almost none of it has been about spending less.

    The pipeline I described in The Agent That Never Merges is the first piece. Agents open pull requests continuously and never merge them, which means the supervision cost per pull request is bounded at one careful read. The pipeline absorbs the rest: triage, planning, the first round of review comments, the retries. I only see the work once it’s in a state worth my attention.

    The second piece is where the work lives. I wrote about pulling Pepper apart into small, bounded repositories to keep CI fast and give agents less to load. It mattered just as much for my attention. An agent working in a repository with one job produces a pull request I can evaluate in one sitting.

    We’re up to fourteen repositories now. Last week I moved our iOS app out of the monorepo into its own. That was 150,000 lines of code, and nobody noticed except Chris, who had to wait a day to land his next batch of iOS changes. Agents make refactors that size easy. Having the CLI and the iOS client in their own repositories also forces us to keep good API definitions between the server and its clients.

    The third piece is delegation inside the agent layer itself. I run two Claude Opus 5.5 orchestrators on medium effort. One is the UTL, for uber tech lead, and its job is to spawn subagents that build features. The other is what I call the focused worker, and its job is working with me. It catches the manual tasks that come out of the UTL’s pull requests and keeps them in a ledger. Then we work through them together: systems changes, bringing up new platforms, migrating data, anything that needs my level of access and oversight. Everything else goes to a subagent under the UTL, Opus for design docs and code reviews, Sonnet for implementing a feature from a design doc. Every one of these agents can consult a model a tier above it as an advisor, and they all share a wiki for notes.

    Anthropic is now advertising much the same pattern with Claude Projects, and I’m happy to see others arriving at the same answer. Chris has been building a loop that babysits open pull requests through review until they score well enough to be worth a human’s time. Each layer like that turns a job I used to do by hand into something I check. The ceiling goes up one delegated task at a time.

    The Token Budget Was the Easy Problem

    There was a week in September when the meter really was the constraint. We ran through our free credits and paid about $120 in overage. Then AutoDev ate the whole Vycari quota, and I did server cleanup by hand because I couldn’t do anything else.

    Most of that was self-inflicted. I’d started with Fable as the orchestrator, with no cap on context, and burned a week’s quota in three days. The setup above fixed it. The orchestrators run on medium effort, and the cheaper model does the implementing. Opus answers the reviews because Sonnet is too literal about them, and a literal reading turns two review cycles into twelve. Every agent auto-compacts at 200K tokens, because Anthropic charges more for context past that point. With that setup, and the work spread across parallel sessions, I find it hard to spend all of my quota. My goal now is to hit 99% of it every week just before it resets. I keep a list of research projects, and if I have quota left 24 hours before the reset, I spin one up. That isn’t the same as maxing out tokens. I’m not trying to use as many as possible. I’m trying to use all the ones I’ve already paid for.

    There’s also a second account on the same machine. Claude Code reads a CLAUDE_CONFIG_DIR environment variable, so two shells with two config directories give you two accounts side by side. The second one runs the AutoDev and code review pipelines, and those use up its quota every week, so it isn’t a fallback for my own sessions. When I do run short, I supplement with other labs’ plans. Every one of those fixes took an afternoon or less. None of the supervision problems above has had an afternoon fix.

    Where the Money Actually Goes

    While I had the numbers in front of me, I looked at where development spend actually lands, because it isn’t where I expected either.

    Development tokens currently run about ten times what the product itself consumes, even with real people using it. Building the thing costs more than running it. That won’t last. The feedback from our private beta has been really good, and we now open Pepper to a limited number of new signups every day, so product usage is rising quickly.

    Most of what we actually pay goes to code review. Subscriptions are the cheap way to buy tokens if you’re willing to hit limits, so they’re the smaller line. Greptile reviews every pull request we open, and at about $1,500 a month it’s our biggest single expense. We both think it’s worth it, because it’s the layer that lets the never-merge pipeline run without me reading every first draft.

    In October I tested that. I spent a few days building a cheaper reviewer to replace it. I came out the other side saying, “I think we should just pay for it because I can’t do it cheaper.” What I could change was how often we call it. The agents kept asking for a re-review before they’d fixed anything. Because every repository shares a common dev environment, the fix went in once: our pull-request skill now has agents run /simplify and then /code-review before they’re allowed to open a pull request. On many of our repositories, our own reviewer also does the first round and only then calls Greptile. My goal is a pipeline where Greptile’s reviews come back with nothing to say. We’re not there yet, but we get a little better every week.

    I’d rather pay for review than have a second person do it, and the reason isn’t salary. The person would need supervising too, because review is a job I’d have to check, not one I can hand off.

    What a Hire Is For Now

    Five years ago, if I’d been getting a product like this ready for market, I’d have been hiring twenty to fifty engineers. The work would have needed that many hands, and most of what they’d have done was write code. Today the code is the cheap part. If I bring someone in to write code, I’ve added a person who needs plans approved and pull requests read, which is the exact resource I’m short on. A hire whose job is output adds coordination faster than it adds capacity.

    I said on a podcast that came out last week that the code I’ve written would have cost about fifteen thousand dollars at API prices, and that I couldn’t hire engineers for that money. That’s true. The engineers I’d still want are a different kind from the ones I hired at Google. We need a few more people who can herd agents, not fifty.

    The engineering hire that adds capacity is a different shape. It’s someone who can own a bounded service whole. Here’s the interface, here’s everything it needs to do, let me know when it’s done. That person brings their own supervision. They run their own agents, read their own pull requests, and answer their own escalations, and the only thing that crosses the boundary between us is the contract. Supervision divides along the interface instead of piling up on one person. That’s a tech lead’s job, and it’s the only kind of engineering hire I can see that raises the ceiling instead of lengthening the queue.

    That raises a fair question about how anyone grows into that job now, which I tried to answer in The Questions Are the Job. The other advice I give is to work on open source. I’ve met people who showed they could work really efficiently with agents through open source projects, Gemini CLI in particular, and some of them ended up being hired onto my teams. Open source has its own problems right now. But if you show up as a thoughtful engineer with features or bug fixes that are well reviewed, well tested, and bring value to the project, I think you’ll be welcome. That’s one of the reasons I decided to open source the Pepper CLI.

    The first hire probably isn’t an engineer at all. I’ve said this a few times now, including on stage at a panel in September. Neither Chris nor I are go-to-market people, and I may hire one before I hire another engineer. I can create piles and piles of code, even relatively good code. What I can’t do is agentically acquire customers. (Did I mention that Pepper is open for signups now?) Someone in marketing came up after the panel and told me I’d validated her existence.

    The Third Trend

    I’ve watched this happen twice before. Open source developer tooling made it so a small team didn’t need to buy or build its own compilers, databases, and frameworks. Cloud infrastructure made it so that team didn’t need to own hardware or a data center. Each time, the number of people you needed to start something real dropped, and the skills that mattered shifted toward the people who understood systems well enough to compose what was suddenly free.

    Agentic tools are the third one. Anyone with a good idea can now get from concept to production on a budget that would have been a rounding error in a Google planning cycle. But the constraint didn’t vanish. It moved, the same way it did the last two times, toward the people who understand systems design well enough to drive the agents and notice when something has slipped through. I wrote a year ago that management skills were going to carry over to working with agents. I didn’t expect to be proving it with a two-person org chart and fourteen thousand dollars of tokens.

    This isn’t only a small-company problem. At Google it was hard to get more than a few changes in a day, because each one waited on code review. I’ve talked to engineers there who now do all their work in experimental directories that don’t require review, then port it back to their team’s repository at a pace the review process can keep up with. That’s what happens when you don’t manage for human attention. Productive people spend their cycles waiting on the process.

    When other companies ask me what to change, my answer has become: drive until human attention is the scarce resource, then build for that. If you’re reading your own ccusage number and wondering whether the answer is more tokens, look at where your attention went first. For us the answer has been more interfaces. Those are the places where one person’s supervision ends and another’s begins, or where an agent takes over a job one of us used to do by hand.

    #Agents #AI #Developer #Startups
  8. While walking the dog I passed a neighbor's house with three very loud and energetic dogs. I almost never see any of these dogs, because they are in a fenced backyard, and I usually don't hear all three at once, but the full orchestra was out that morning, two barking loudly in different keys and tempos and one heartily going BAROO BAROO BAROO. It was like a modern jazz concert.

    I stopped to record it and an older man came out of the house across the street from the Three Dog House. He was behind me. "I'm enjoying the music," I said, and then I thought about hearing that every day. "Probably you don't enjoy it."

    Because I was interrupted, I did not record the concert.

    The man looked at Minnie and exclaimed, "The cone of shame!" Yes, Minnie is still wearing the cone. It's been a month. We have an appointment at an eye specialist and are planning to switch vets.

    A few minutes later I passed a parked car with a license plate frame that read something like, "CALIFORNIA — WHERE AMERICA'S DAY STARTS." At least I *think* that's what it said. But that does not make sense. As a longtime tech trade journalist, I am aware in my bones that the rest of America wakes up well before California does; when I hit my desk on a workday morning my Teams messages and emails are already full.

    That sent me a down an Internet rabbit hole to find out where America's day REALLY starts — in other words, what's the furthest point east in either the continental US or territories. There are two possible answers, one of them a technicality.

    The common-sense answer is a point in the U.S. Virgin Islands. I always forget the U.S. Virgin Islands exists.

    The other answer, which will be great to know for a pub trivia quiz: A point on the Aleutian Islands of Alaska, which goes so far west that it crosses the 180th Meridian and becomes east.

    I did not research this point, but I expect that this means the point in the US that is furthest west and the point that is furthest east are a single footstep apart from each other.

  9. Preface


    Before diving in to the basics, this post would like to implore the reader to look up definitions of all the technical jargon that will naturally follow in the series. You cannot build a technical understanding of the structures involved unless you’re proficient in the language it speaks.

    Note: All technical jargon will be marked with an asterisk (*), making it easier to identify them for lookups.

    This is the first in a 5-part series that aims to act as a manual to developers who are either starting out learning GitLab CI/CD or more senior devs looking for a handbook.

    First order of business — What are CI/CD pipelines, and why GitLab?


    In order to comprehend the concept that is automation and pipelines, we need to trace the history of why these things came into place, the technologies that came after and how refined they became over time.

    To give a brief introduction, before pipelines, developers had to manually set up everything — from installing dependencies required by apps to setting up infrastructure for their projects to run.

    After the advent of scripting, it became a lot easier to automate manual tasks with the run of a single .sh file. But scripting brought up its own sets of problems, one of them being deployment.

    Deployment was still done manually, because scripting produced many errors such as:

    • Silent Failures — Scripts return a success exit code (0), but they do not stop executing after a command fails, unless explicitly written otherwise using set -e.
    • Unset Variable Issues — Scripts depend on the host environment. If a variable is mis-spelt or missing on the production server, then the entire script breaks.
    • Unverified Releases — Running scripts without automated health checks can leave services in a broken state without anyone knowing the root cause. And thus, to fix such problems, pipelines were born.


    CI/CD Pipelines — Demystified


    CI/CD pipelines are Continuous Integration/Continuous Delivery tools that aid in automating 90% of the work that you would have otherwise done manually, such as deployment, setting up infrastructure on a server, etc.

    Any changes you make in your code base or structure immediately get integrated and tested by the pipeline — the Continuous Integration part — and then deployed to a cloud platform of your choice, which falls under the Continuous Delivery section (AWS, Microsoft Azure, Google Cloud, etc.).

    There are many CI tools that came about after the advent of pipelining. A few notable ones are:

    • GitHub Actions, as provided by GitHub.
    • GitLab CI, as provided by GitLab.
    • Jenkins, which is an *open-source downloadable automation tool that is hosted on a server locally, such as an EC2 Instance or a Kubernetes cluster.
    • CircleCI, which is a *SaaS platform that integrates across all repositories, such as GitHub, GitLab, BitBucket, etc.

    There is no “proper” or “best” pipeline, since the primary work that each tool does is automation, while offering different sets of features, such as GitLab CI offering native *Terraform integration, whereas GitHub Actions — being relatively new — does not, requiring third-party support. But that is about the degree to which the distinction between each pipeline goes.

    Of course, the choice varies from company-to-company. The employee must, then, learn to be flexible to suit the company’s requirements.

    Why GitLab CI? Why not other CI tools?


    Herein lies the “paradox of choice”. There are several repo-hosting platforms available that offer CI/CD capabilities, so choosing each depends on the pros and cons of each platform, along with the needs of the individual/team.

    A table is then best suited to provide a more direct comparison between each platform, their benefits, and the costs they offer.

    A table is then best suited to provide a more direct comparison between each platform, their benefits, and the costs they offer.

    Platform / ToolPrimary FocusCore AdvantageBest Suited ForGitLabAll-in-one DevOps lifecycleNative *Terraform integration out-of-the-boxProduction-standard DevOps engineering teamsGitHubSource control & collaborationMassive marketplace ecosystem of ActionsGeneral development & open-source projectsBitbucketAtlassian ecosystem synergyBuilt-in Jira and Confluence link trackingEnterprise environments already deep in JiraJFrog ArtifactoryUniversal binary repositorySpecialized artifact management & storageHigh-scale dependency management & security

    Conclusion


    While GitHub and BitBucket offer more features in general development — with JFrog Artifactory offering solely binary storage — GitLab stands out as the best production-standard for a DevOps team when it comes to offering a pure DevOps-related repository hosting platform.

    And thus, we shall begin by navigating through GitLab and its main attraction point for many developers — CI/CD capabilities.

    Any corrections in this post will be much appreciated in the comments!#automation #cicd #devops #tutorial #software #coding #development #engineering #inclusive #community
    The GitLab CI Manual: The Textbook You’ve Always Needed — #1 Introduction

  10. I’m building EatNeat, a mobile app that helps people turn a nutrition plan into a manageable routine—before “What should I eat?” takes over the evening.

    A lot of meal-planning tools focus on creating a plan. I’m focused on what comes after: remembering it, finding something practical when hunger clocks in, and tracking what you ate without turning dinner into a spreadsheet assignment.

    EatNeat is still a prototype. Here’s what’s working, what I’m figuring out, and how the mascot Bitey provides moral support.

    The core loop


    The app is organized around a simple cycle:

    1. Create a meal plan or bring in an existing one.
    2. See the day’s meals and get reminders at their scheduled times.
    3. Browse meal ideas that match selected constraints.
    4. Capture or mark a meal as eaten.
    5. Review progress over the day and across recent days.

    The Today screen brings schedule and progress together. Meals can be marked eaten when their scheduled time arrives, and progress includes estimated nutrition metrics. The user stays in control; the app helps without handing out gold stars for lunch.

    AI as a helper, not the whole app

    EatNeat has AI-assisted flows for personalized plans, meal recommendations, recipes, and optional photos. Requests include selected filters and nutrition targets. Practical constraints are requirements: an “under 15 minutes” meal can’t hide a 40-minute oven step, and equipment filters should match the actual cooking method.

    Food photos are optional and handled separately from meal text. Without a photo, the meal still appears with a bundled animation or illustration. The recipe shouldn’t vanish because its glamour shot is late.

    The app can call configured service endpoints. During local development, some AI flows can call Gemini directly with a development environment key. A production app should route requests through an authenticated server and keep provider keys off the client.

    AI nutrition values are estimates. EatNeat is not a medical tool, and the prototype does not treat a missed meal as a failure or make clinical recommendations.

    Local-first state and reminders


    Plans and meal logs are stored on-device with AsyncStorage. Writes are debounced and serialized, and local notifications remind users at planned meal times—because remembering breakfast shouldn’t require remembering to remember breakfast.

    Private meal-log photos stay on-device. If a user uploads a plan photo for parsing, it goes to the configured plan-reading service, with that made clear before upload.

    The stack


    The current app uses:

    • Expo and React Native for the mobile app
    • Expo Router for file-based navigation
    • TypeScript for app screens, state, services, and UI components
    • React Native Paper for a small set of interface components
    • Reanimated for navigation and interface motion
    • AsyncStorage for local plan and log persistence
    • Expo Notifications for scheduled meal reminders


    What is still a prototype


    The accountability feed displays sample posts and does not publish to a social service. Some preview screens use illustrative nutrition data. The app doesn’t ship a backend, so server-based AI features need a configured endpoint. For now, the social circle is supportive and fictional.

    I’m also breaking larger screens into focused components. The Today screen’s progress visualization and schedule calculations now live outside its route file, making the daily flow easier to evolve.

    What I’m learning


    The most useful decision so far: keep the basic habit loop independent of AI. Meal ideas work without generated photos; logging works without image analysis; plans can be reviewed when a service is down. A flaky model shouldn’t get veto power over lunch.

    AI can add convenience, but a slow request or missing key shouldn’t block the everyday action. The meal still exists even if the pixels don’t.

    EatNeat is under active development. I’m currently refining the meal flow, reminders, and progress UI while building toward a more complete, privacy-conscious backend.

    If you’re building a habit-focused app, I’d love to hear how you decide which parts should depend on AI and which should keep working on their own.#buildinpublic #mobile #showdev #software #coding #development #engineering #inclusive #community
    # Building EatNeat: Meal Plans, Gentle Reminders, and a Supportive Mascot

  11. The agent traced an auth mismatch by dropping a console.log("token=", token) into the request handler. It found the real cause — the interceptor attached a stale credential after refresh — patched it, ran the suite, reported green, and we merged. The debug print stayed behind.

    Nobody flagged it because the tests had nothing to check. A logging call changes no return value, throws nothing, and asserts against nothing, so a green suite proves the control path ran; it says nothing about whether scratch diagnostics were removed along the way.

    A print has no assertion target


    Most unit tests pin behavior: the function returns X, the queue receives Y, the error path throws Z. A diagnostic line sits outside all of those. It does not break the return shape, it does not violate a contract, and the test runner never looks at stdout by default. The agent closes its task when the failing test goes green; cleanup of its own tracing is not part of that acceptance condition, so it rarely happens.

    The same gap hides every kind of residue: a temporary hardcoded value used to force a branch, a commented-out block from an abandoned approach, a debugger statement left on a hot path. Tests go green for the fix; the scratch layer rides along to production.

    Two tiers of leftover diagnostics


    The benign tier is pure noise. A console.log that fires on every authenticated request lands in the aggregator beside real errors, buries signal, and slows the request by serializing an object nobody reads. Annoying, but recoverable.

    The dangerous tier prints the request value itself: the bearer token, a user's email and address, the raw payment payload, a session cookie. These flow into centralized log retention, where they outlive the request by weeks or months. A secret that appears in a log line is no longer protected by the transport layer; it sits in plaintext on a machine someone else queries, under a retention policy that predates the leak. The token trace that solved the bug becomes the incident after merge.

    What to put in front of merge


    Three cheap habits catch this class without slowing review:

    • Grep for the exact debug phrase after the fix. The agent invented a distinctive trace string; search for that, not for the generic word "log."
    • Route runtime output through a leveled logger so scratch calls sit at debug and are stripped or suppressed in production builds, rather than as bare prints that compile into the shipped bundle.
    • In review, question any print that names a request value. Noise can wait; a print referencing a token, PII, or payload should be removed or scrubbed before merge, not scheduled for later.

    Read the diff for residue instead of trusting green. The suite was never going to tell you the print was there.

    A green result is not a clean workspace


    A green suite answers whether the fix works. It does not answer whether the workspace was cleaned. Treat scratch diagnostics as part of the change, and make their removal a checkpoint on the path to merge.#aicode #aiagents #debugging #bestpractices #software #coding #development #engineering #inclusive #community
    The agent left the debug print in the shipped handler, and the green suite could not see it

  12. We often confuse knowing something with truly understanding it.

    You can read a book, complete an online course, or watch dozens of tutorials and still struggle when you face a real situation. The information may be familiar, but applying it under real conditions is a different skill.

    That is where experience comes in.

    What Is Experience?


    Experience is what you learn by doing something, facing a situation, and reflecting on the outcome.

    It does not come only from success. Mistakes, unexpected problems, difficult decisions, and even failures can teach us valuable lessons.

    But experience is not simply about how much time you spend doing something. It is about how much you learn from that time.

    Two people can spend five years doing the same job and develop completely different levels of understanding. One may repeat the same process without questioning it. The other may continuously evaluate decisions, learn from mistakes, and improve their approach.

    Time creates opportunities for experience. Reflection turns those opportunities into learning.

    How Is Experience Built?


    Experience develops through several interconnected processes.

    1. Repetition


    Doing something repeatedly helps you recognize patterns and become more comfortable with familiar situations.

    For example, writing JavaScript regularly can help you recognize common errors, understand language behavior, and solve familiar problems more efficiently.

    However, repetition alone is not enough. Repeating the same mistake without understanding it does not necessarily make you better.

    2. Making Mistakes


    Mistakes reveal gaps between what you believe and what actually happens.

    When something goes wrong, you have an opportunity to examine your assumptions, understand the cause, and adjust your approach.

    In software development, fixing a bug is useful. Understanding why it happened, why your original approach failed, and how to prevent similar issues is even more valuable.

    The real lesson is not always the solution itself. Sometimes, it is the reasoning that led you to the solution.

    3. Facing Different Situations


    Familiar situations teach you how to handle familiar problems. New situations challenge you to adapt.

    Working with different technologies, collaborating with different people, or dealing with limited resources forces you to reconsider what you already know.

    Over time, you begin to understand not only what works, but also when it works and when it does not.

    4. Making Decisions Under Uncertainty


    Experience becomes especially valuable when you do not have all the information you need.

    In theory, problems often have clearly defined conditions. In practice, requirements change, deadlines approach, resources are limited, and several solutions may appear reasonable.

    Experience helps you evaluate trade-offs, recognize risks, and make informed decisions without expecting perfect certainty.

    Why Does Experience Matter?


    Experience changes how you approach problems.

    You recognize patterns faster. Previous situations help you identify familiar problems without starting your analysis from zero every time.

    You make more informed decisions. You have a better understanding of the consequences, limitations, and trade-offs associated with different choices.

    You respond more effectively to pressure. Familiarity with difficult situations can help you remain focused instead of reacting impulsively.

    You turn knowledge into practical judgment. You learn that a technically correct solution is not always the most appropriate solution for the situation.

    These benefits do not appear automatically with age or time. They develop when you actively learn from what you experience.

    Theory vs. Experience


    Theory and experience are not opposites. They serve different purposes, and both are necessary.

    Theory helps you understand concepts, principles, and possible approaches. Experience helps you apply that understanding in specific circumstances.

    Consider two developers learning React.

    One has completed a course and understands components, props, state, and hooks. Another has also worked on projects, debugged unexpected behavior, handled changing requirements, and evaluated different implementation approaches.

    Both may understand React. But the second developer has had more opportunities to learn how those concepts behave in practice.

    That does not mean the second developer is automatically better. The quality of their decisions, the complexity of their work, and their willingness to learn all matter.

    The difference is that practical experience exposes you to problems that theory alone cannot fully reproduce.

    Theory gives you a foundation. Experience helps you develop judgment.

    Experience Is Not the Same as Never Making Mistakes


    It is tempting to think that experienced people always know what to do.

    In reality, experience does not eliminate uncertainty or guarantee correct decisions. Experienced people still make mistakes, encounter unfamiliar problems, and sometimes need to reconsider their assumptions.

    What often changes is how they respond.

    Instead of immediately blaming someone or searching for the fastest workaround, they may investigate the underlying cause, compare possible solutions, and consider the long-term consequences.

    Experience does not mean having every answer. It means becoming better at finding answers and learning when your current understanding is insufficient.

    How to Get More Value From Your Experiences


    You cannot control every situation you encounter, but you can control how deliberately you learn from it.

    Here is a simple process:

    1. Take action. Apply what you know instead of waiting until you feel completely ready.
    2. Observe the outcome. Compare what actually happened with what you expected.
    3. Analyze the difference. Identify the assumptions, decisions, or conditions that influenced the result.
    4. Extract a lesson. Determine what you would repeat or change next time.
    5. Apply what you learned. Use that lesson when a similar situation appears again.

    This process works beyond programming. It applies to communication, relationships, learning, decision-making, and personal development.

    The important part is not merely going through an experience. It is examining what that experience can teach you.

    Final Thoughts


    Books, courses, and theory can help you understand the world, but they cannot replace every lesson that comes from interacting with it.

    You need to try things, face unexpected outcomes, make decisions, and reconsider your approach when the results do not match your expectations.

    And when something goes wrong, do not stop at asking, "How do I fix this?"

    Also ask, "What can I learn from why this happened?"

    Because knowledge tells you what is possible. Experience helps you understand what works, under which conditions, and why.

    You do not gain experience simply by living through situations. You gain it by learning from them.#beginners #learning #career #productivity #software #coding #development #engineering #inclusive #community
    Experience: What Life Teaches You Beyond Books and Theory

  13. 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

  14. Most talk about agent permissions is about what could go wrong. I find it more useful to ask what you will have to say afterwards.

    Picture a hypothetical internal workflow. An assistant reads support tickets and drafts a weekly summary for the team lead. It works well. Then someone widens its access "to make it more useful." Now it can read the whole shared drive and send email.

    Nothing bad has happened yet. But if something does, you are the one explaining it.

    What the explanation looks like


    Suppose the summary one week includes a line from a salary spreadsheet. The agent was allowed to read it, so it did. Now you have to answer a few plain questions:

    • Why could it see that file?
    • Who decided it should?
    • How do we know it did not send anything?

    If the honest answer to each is "it had access to everything, so we can't say," that is the cost. The time goes into reconstructing events, not into fixing a bug.

    A smaller version of the same workflow


    Compare it with a narrower setup, also hypothetical. The agent can read one folder of exported tickets. It cannot send anything. It writes a draft, and a person reads it before it goes anywhere.

    If a draft looks wrong, the explanation is short. The agent could only see this folder. It could not send. A person approved the final version. You can say that in one breath, and you can prove it from the setup.

    Non-regulated still has obligations


    Because this is an ordinary internal workflow, it is easy to treat it as low stakes. It still touches people's data and your own internal files. Privacy and security obligations apply whether or not your industry has a rulebook for them.

    What I check on one workflow


    When we review a single workflow, I look for a handful of things:

    1. What can the agent read, and is that the minimum for the job?
    2. What can it change or send, and does a person approve that step?
    3. If it uses MCP, which tools does it expose, and with whose credentials?
    4. Can you reconstruct what it did from a log, without guessing?

    That last one matters most. A permission you cannot audit is a permission you cannot defend.

    The handoff


    The output of this kind of review should be a page the owner can read. It lists what the agent can touch, what it cannot, and where a human decides. If something goes wrong later, that page is the start of your explanation, not a gap in it.

    I would rather tighten one workflow properly than loosen ten and hope. Smaller access is easier to explain, and easier to fix.

    I'm Jonathan Melton. I run FusionAL, focused on reviewing and integrating lower-risk internal AI workflows, one bounded workflow at a time.#agents #ai #cybersecurity #security #software #coding #development #engineering #inclusive #community
    The incident you have to explain is the real cost of an over-permissioned agent

  15. Books finished in 2026:

    44. Second Foundation by Isaac Asimov (1953)
    43. Men At Arms by Terry Pratchett (1993)
    42. Full Circle: A Life in Rebellion by Ben Morea (2025)
    41. Foundation and Empire by Isaac Asimov (1952)
    40. Mother Night by Kurt Vonnegut (1962)
    39. Wobblies! A Graphic History of the Industrial Workers of the World (2005) Edited by Paul Buhle and Nicole Schulman with various authors
    38. Foundation by Isaac Asimov (1951)
    37. Clay’s Ark by Octavia E Butler (1984)
    36. We Fight: Three Decades of Rebellion Against The Police 2nd Ed. by various authors (2020; 2025)
    35. Rabbit, Run by John Updike (1960)
    34. Mind Of My Mind by Octavia E Butler (1977)
    33. The Black Jacobins: Toussaint L’Ouverture and The San Domingo Revolution by CLR James (1938)
    32. Lords and Ladies by Terry Pratchett (1992)
    31. Escape From Freedom by Erich Fromm (1941)
    30. Walking With The Comrades by Arundhati Roy (2011)
    29. Wild Seed by Octavia E Butler (1980)
    28. Ready Player Two by Ernest Cline (2020)
    27. The Last Hero: A Discworld Fable by Terry Pratchett (2001)
    26. Revolutionary Suicide by Huey P Newton with J Herman Blake (1973)
    25. The Body Snatchers by Jack Finney (1955)
    24. Granny Made Me An Anarchist by Stuart Christie (2004)
    23. The Day of The Triffids by John Wyndham (1951)
    22. Soledad Brother: The Prison Letters of George Jackson (1970)
    21. Secolo Nuovo: Or the Times of Promise, A Novel by Fulvia Ferrari (2021)
    20. Socialism: Utopian and Scientific by Friedrich Engels (1880)
    19. Working Class History: Everyday Acts of Resistance and Rebellion by Working Class History (2020)
    18. The Diary of a Drug Fiend by Aleister Crowley (1922)
    17. Small Gods by Terry Pratchett (1992)
    16. The Red and The Black by Stendhal (1830)
    15. The Book of Sand (1975) and Shakespeare’s Memory (1983) by Jorge Luis Borges
    14. Anarchist Feminists In The Philippines From Etniko Bandido (~2016)
    13. The Unseen by Nanni Balestrini (1989)
    12. Handbook of Revolutionary Warfare: A Guide to the Armed Phase of the African Revolution by Kwame Nkrumah (1968)
    11. Rights of Man by Thomas Paine (1792)
    10. Ready Player One by Ernest Cline (2011)
    9. Lair of the White Worm by Bram Stoker (1911)
    8. Blue Mars by Kim Stanley Robinson (1996)
    7. Witches Abroad by Terry Pratchett (1991)
    6. The Nation On No Map: Black Anarchism and Abolition by William C Anderson (2023)
    5. baedan - journal of queer nihilism - issue one (2012)
    4. Snow Crash by Neal Stephenson (1992)
    3. They Will Beat The Memory Out Of Us: Forcing Nonviolence on Forgetful Movements by Peter Gelderloos (2024)
    2. It Can’t Happen Here by Sinclair Lewis (1935)
    1. Rainbows End by Vernor Vinge (2006)

    Finished the original trilogy of the Foundation series. To continue or not to continue? This one wrapped up the story of The Mule and showed us the conclusion of the first four centuries after setting up the Foundation in preparation for a thousand years between the fall of the Galactic Empire and the rise of a Second Empire, if all goes according to the Seldon Plan. It explained who and what the Second Foundation was and how they operate.

    #scifi #fiction #books #bookstodon #asimov #foundation #reading #book #nowreading

  16. n8n: The 208k-Star Fair-Code Workflow Engine That Replaces Zapier — And What Actually Happens When Your Workflow Runs


    You've probably heard n8n called "open-source Zapier." That's true enough to be useful and wrong enough to be misleading. Zapier is a hosted product you rent. n8n is a Node.js application you run, point at your own database, and own end to end. No per-task metering. No vendor lock-in. A $5–10 VPS handles a surprising amount.

    But the marketing pitch isn't why engineers reach for it. The escape hatch is: the moment the visual builder runs out of road, you drop into a Code node and write real JavaScript (or Python). You never hit a wall you can't code your way through.

    What most developers never learn is what actually happens between clicking "Execute Workflow" and seeing those green checkmarks light up on the canvas. The orchestrator that schedules nodes, synchronizes multi-input joins, keeps runs cancelable, and emits lifecycle hooks lives in roughly 1,250 lines of TypeScript. Let's open it up.

    The Mental Model: A Stack, A Waiting Map, and One Loop


    When you hit execute, n8n doesn't spin up a thread per node. It builds a single serializable run object — IRunExecutionData — that carries everything: the in-flight stack of nodes waiting to run, a waiting map for partially satisfied inputs, metadata, and final results. This same object travels from the editor to the server, into the engine, optionally across a Redis queue to a worker process, and back.

    // Simplified shape of the live execution object
    interface IRunExecutionData {
    startData: { destinationNode?, runNodeFilter? };
    resultData: {
    runData: Record<string, ITaskData[]>; // per-node run history
    pinData: Record<string, INodeExecutionData[]>;
    lastNodeExecuted: string;
    error: ITaskData | null;
    };
    executionData: {
    nodeExecutionStack: IExecuteData[]; // the work list
    waitingExecution: Record<string, Record<number, INodeExecutionData[][]>>;
    waitingExecutionSource: Record<string, Record<number, ISourceData[][]>>;
    contextData: Record<string, any>;
    runtimeData: Record<string, any>;
    };
    }

    The engine (WorkflowExecute in packages/core/src/execution-engine/workflow-execute.ts) seeds nodeExecutionStack with the start node, then enters a loop that shifts the front entry, runs the node, records the result, and enqueues downstream nodes. That's it. No hidden thread pool. No magic graph walker. Just a stack and a waiting map.

    Execution Order: v0 (Breadth-First) vs v1 (Depth-First)


    The single most important setting in a workflow is executionOrder. It changes one line in the scheduler:

    const enqueueFn = workflow.settings.executionOrder === 'v1' ? 'unshift' : 'push';


    • v0 (push): New work goes to the tail. Older work runs first. The walk feels breadth-first — all siblings at depth 1 finish before depth 2 starts.
    • v1 (unshift): New work goes to the front. The current branch keeps running. The walk feels depth-first — you chase one path to the bottom before backtracking.

    This doesn't change the graph. It only changes scheduling. Sibling order in v1 still follows canvas position (top-left first), but only among ready siblings. The canvas is not the execution graph — it only shapes ordering where the scheduler has freedom.

    Multi-Input Joins: The Waiting Map


    A node with two inputs doesn't run when the first branch arrives. The engine parks partial data in waitingExecution[nodeName][runIndex] with per-input placeholders. As each upstream finishes, the engine fills its slot. Only when all required inputs are non-null does it enqueue the node.

    // Inside addNodeToBeExecuted (simplified)
    if (requiredInputs.every(input => waitingExecution[nodeName][runIndex][input] != null)) {
    // All inputs ready — enqueue the node
    enqueueFn(executeData);
    } else {
    // Park partial data, wait for the rest
    waitingExecution[nodeName][runIndex][inputIndex] = inputData;
    waitingExecutionSource[nodeName][runIndex][inputIndex] = sourceData;
    }

    After the main stack empties, a sweep pulls forward any waiting node that now has enough data — even if some optional inputs stayed empty. This means a join can complete after one branch dies early, while a node still missing required inputs stays parked.

    Empty Output Kills the Branch (Unless You Say Otherwise)


    If a node returns no data and doesn't enter waiting state, the branch ends. The scheduler adds no downstream work. Set alwaysOutputData: true on the node and the engine fabricates a single empty item to keep the branch alive — useful when downstream nodes must run regardless.

    Legacy v0 keeps one compatibility path: it can still wake a downstream node connected via a second or later main input even when the upstream output is empty.

    Cycles: Node State, Not Special Graph Logic


    The scheduler doesn't treat cycles specially. It keeps pulling from the front of the same list. A node loops only if it schedules more work for itself. SplitInBatchesV3 demonstrates the pattern:

    // Stores loop state in node context
    const loopState = this.getContext('node') || { index: 0, items: inputData };
    const batch = loopState.items.slice(loopState.index, loopState.index + batchSize);
    loopState.index += batchSize;
    this.setContext('node', loopState);

    if (loopState.index < loopState.items.length) {
    return { loop: batch }; // schedules another visit to this node
    }
    return { done: loopState.items }; // exits the cycle

    The loop guard in processRunExecutionData stops accidental repeats when the same node and run index return without progress.

    Queue Mode: Same Engine, Different Process


    In standalone mode, the main process executes workflows directly. In queue mode (EXECUTIONS_MODE=queue), the main process enqueues a job into Redis (BullMQ) and returns immediately. A worker process dequeues, reconstructs the same IRunExecutionData object, runs the exact same engine loop, and writes results back to PostgreSQL.

    ┌─────────────┐ Redis Queue ┌─────────────┐
    │ Main │ ──────────────────▶ │ Worker │
    │ (UI/API) │ enqueue job │ (executes) │
    └─────────────┘ └─────────────┘
    │ │
    │ PostgreSQL │
    └──────────────────▶◀────────────────┘
    shared state

    The main process serves the UI, REST API, and webhooks. Workers are stateless — scale them horizontally via HPA/KEDA based on queue depth. Dedicated webhook-processor pods handle high-throughput webhooks without blocking the main UI. Python/JavaScript code nodes run in isolated taskRunner sidecars (V8 isolates via isolated-vm for JS, separate processes for Python) with RPC over WebSocket.

    The Data Model: Items, Runs, and pairedItem


    n8n's data model has three layers:

    Level 1 — Item: INodeExecutionData — { json, binary?, pairedItem?, metadata?, evaluationData? }. Nodes receive and return arrays of items on each input/output. This is the unit of data flowing through the graph.

    Level 2 — Run: Each node execution appends one ITaskData to resultData.runData[nodeName]. The array index = runIndex. ITaskData records input source, output data, timing, status, metadata, error state. source points back to the previous node, output, and run that supplied the input.

    Level 3 — Execution Object: The IRunExecutionData bundles startData, resultData, and executionData (the live scheduling state). The same object carries both result and live machine state — that's how n8n hands an execution to a queue worker, pauses it at a Wait node, and resumes it later with history intact.

    pairedItem records lineage, not magic. An output item points back to one input item, or one input plus array position, or a list of links. The engine normalizes these as items move through the workflow. When WorkflowDataProxy resolves $node("HTTP Request").json in a downstream node, it walks this ancestry chain. Broken lookups surface as specific errors: missing upstream lineage, no route back to referenced node, multiple matches, pinned data short-circuiting the chain, invalid index, or intermediate node not yet run.

    AI Agents: Native, Not Bolted On


    Since the 2.0 line, n8n ships a LangChain-based agent runtime. The Agent node maintains conversation history in ChatMemory, calls language models for planning, executes tools based on model decisions, and accumulates results until goal completion. Tool calling uses the same execution engine — tools are just nodes with execute methods. Vector stores, MCP connectivity, and guardrails plug into the same architecture.

    Fair-Code, Not Open Source


    n8n uses the Sustainable Use License. You can self-host and modify freely for internal business use, including paid consulting building workflows for clients. What you can't do is rebrand and resell it as your own hosted SaaS. Files with .ee. in the path are Enterprise-licensed. For an indie dev or team running their own automations, you're completely fine — but check the current license page rather than trusting any blog post on the fine print.

    What This Means for You


    • No per-execution pricing: Run 10 or 10 million workflows on your $5 VPS.
    • Full observability: Every execution persists to your database. Open any run, see exactly what each node received and emitted, replay it.
    • Escape hatch: Code nodes run real JavaScript/Python with npm/pip access. HTTP Request node talks to anything with an endpoint.
    • AI-native: Build agents that call tools, use memory, query vector stores — all self-hosted.
    • Production architecture: Queue mode + PostgreSQL + Redis + S3 scales horizontally. The same engine runs in-process or distributed.


    The Takeaway


    n8n isn't "Zapier you host." It's a workflow engine with a visual authoring layer, a serializable execution model that survives process boundaries, a scheduler you can reason about, and an escape hatch to real code. The 208k stars aren't for the UI — they're for the fact that when the visual builder hits a limit, you don't file a feature request. You write the code.#opensource #automation #workflow #selfhosted #software #coding #development #engineering #inclusive #community
    n8n: The 208k-Star Fair-Code Workflow Engine That Replaces Zapier — And What Actually Happens When Your Workflow Runs

  17. FOSS NEWS

    OBS Studio 33 Officially Released with Many New Features and Improvements:
    9to5linux.com/obs-studio-33-of

    Lumo can now turn your ideas into creations:
    proton.me/blog/lumo-creations
    (This is actually a really nice feature, I had that scrooling problem they describe, when solving some programming problems. I wish local AI chat apps had this too, I'm about to switch to local AI)

    Firefox 158.0.1 is out with important security fixes:
    omgubuntu.co.uk/2026/10/firefo

    Zen Browser 1.23.4b Ships With eMudhra Certificate Fix and Firefox 158.0.1:
    linuxcompatible.org/story/zen-

    Servo Gets CSS Grid Working, Threadboost Offering Big Speed-Ups:
    phoronix.com/news/Servo-0.6-Ch

    Calibre 9.17 release brings faster ebook conversions:
    omgubuntu.co.uk/2026/10/calibr

    PeaZip 11.4.0 strengthens security and file navigation:
    alternativeto.net/news/2026/10

    Audacious 4.6.2 fills the last gaps in its Qt Winamp mode:
    omgubuntu.co.uk/2026/10/audaci

    Bitwarden mobile apps and binaries on their website become proprietary, some features might not make it to the FOSS version:
    community.bitwarden.com/t/publ

    MKVToolNix 103 “The Darkness” MKV Manipulation Tool Brings New Features:
    9to5linux.com/mkvtoolnix-103-t

    BleachBit 6.0.6 released with fixes for admin cleaning on Linux:
    omgubuntu.co.uk/2026/10/bleach

    Transmission 4.1.4 Open-Source BitTorrent Client Released with Various Fixes:
    9to5linux.com/transmission-4-1

    qBittorrent 5.3 BitTorrent Client Is Out as a Major Update, Here’s What’s New:
    9to5linux.com/qbittorrent-5-3-

    KeePassXC 2.8 released with Qt6, support for Wayland auto-type:
    omgubuntu.co.uk/2026/10/keepas

    Wireshark 5.0.0rc1 Released: New Features, Dropped Qt 5, and What's Changed:
    linuxcompatible.org/story/wire

    PHP2Shell scare sees SuperTuxKart pull its online server:
    omgubuntu.co.uk/2026/10/supert

    (Post 5/7)

    #WeeklyNews #OpenSource #FOSSNews #FOSS #OpenSourceNews #News #OBS #OBSStudio #Lumo #LumoAI #Firefox #ZenBrowser #Servo #Calibre #PeaZip #Audacious #Bitwarden #MKVToolNix #BleachBit #Transmission #qBittorrent #KeePassXC #Wireshark #SuperTuxKart #ContentCreation #Multimedia #Browser #Bittorrent #Torrent #FosseryTech

  18. AI Can Write the Words, But Who Takes the Responsibility?

    In my point of view, AI can help with writing blogs and content or other work. But a lot of content and theory that sounds important is really fake, because it has no proof behind it. Humans were already doing this long before AI: people have always written things that only sound important, either to look smart or simply out of foolishness. AI is only a tool, and it makes this easier to do. Companies also want us to see AI as something human, something that has feelings. So I want to ask: what is a feeling? In technical terms, emotions and feelings are chemical reactions, a kind of process happening in the body and brain. Humans are made of atoms, and AI is a process too. Seen this way, we could say that humans are also a kind of AI. I am not trying to define humans here, but this is where the question leads.
    AI is good at writing blogs and content, and at other jobs. But I want us to stop and think about how content and its influence affect humans. Can fake or misleading information affect a person's mental health? And who takes responsibility for it? AI companies seem careful about presenting AI as medical care, and the question of responsibility is still unresolved. Providers of AI chatbots face growing scrutiny from advocacy groups and lawmakers over the effects of chatbots on mental health, especially for children. Researchers at Northeastern University found that safeguards have improved around suicide and self-harm, but companies have not extended the same protections to almost every other mental health condition. So companies are acting, but unevenly, and probably under pressure.
    Some research shows that anxiety and stress go up with AI use. A survey of 20,847 people in the US found that those who use chatbots for emotional support or other personal reasons were more likely to report symptoms of depression or anxiety. But this shows an association, not cause and effect. A study of high school students in Indonesia found a similar link, but its authors said causality cannot be established because of the study design. A study of health-science students in the UAE suggested that chatbot use is linked to higher depression and anxiety, which likely reflects help-seeking rather than causation. In other words, people who already feel anxious may be the ones who turn to AI.
    Other research shows that AI can help. In a randomized trial of 210 adults, a chatbot called Therabot, fine-tuned by mental health experts, reduced depression symptoms by 51% and anxiety symptoms by 31% in participants with those conditions. But this was a chatbot built for therapy and monitored by researchers, not a general chatbot. So what is the main cause? The research does not give one clear answer. It may depend on who is using AI, how they use it, and whether the tool was designed for mental health at all.
    My confusion, and my point of view, is this: if someone needs help, they will find help. The real question is what they will find, and who is responsible when it goes wrong.
    Sources

    Using AI for advice or other personal reasons is linked to depression and anxiety (NBC News)
    The Association Between AI Chatbot Use and Anxiety Among High School Adolescents in Yogyakarta
    AI-chatbot use and mental well-being among UAE health-sciences students (F1000Research)
    Therabot clinical trial summary (2 Minute Medicine, study published in NEJM AI)
    For most mental health conditions, AI remains a liability (Northeastern University)
    AI Chatbots Face Rising Legal and Legislative Scrutiny (Kelley Drye)

  19. I write code. I did not expect to spend so much of my career thinking about
    contracts.

    Three years ago my client agreement was two paragraphs in the body of an email.
    It said what I'd build and what it cost. Every clause I've added since then went
    in because something specific went wrong, and I'd rather you learn them from a
    blog post than the way I did.

    Not legal advice — I'm a developer, not a lawyer. Have someone qualified in your
    country read anything before you rely on it.

    1. Scope, with a "not included" list


    The included list is the easy part. The not-included list is what saves you:
    logo design, copywriting, photography, hosting fees, email migration, stock
    images, ongoing maintenance.

    Clients don't read "not included" as hostile. They read it as someone who has
    done this before.

    2. Payment in three parts


    50% before work starts, 30% at design approval, 20% before launch.

    The deposit isn't a formality. It's the difference between a client who is
    committed and a client who is exploring options.

    3. The deposit is non-refundable once work begins


    You turned down other work to hold those weeks. That's what the deposit pays for.

    4. Late payment stops work


    Not "may stop work". Stops. And the timeline moves by at least the length of the
    delay — your calendar doesn't grow a free week later just because they were slow.

    5. What the client owes you, with actual dates


    Content, logo files in vector format, hosting and domain access, feedback within
    a set number of working days. Put real dates next to each one, in the proposal,
    before anyone signs.

    6. The content delay clause


    If I could keep only one clause, it would be this.

    If content is more than X days late, the project goes on hold, and the invoice
    for work completed to that point becomes due. It rejoins my schedule when I have
    room — which might be weeks later.

    This sounds harsh until the third time a project dies because nobody wrote the
    About page. Almost every stalled project I've had stalled on content, not code.

    7. Revision rounds, and a definition of "round"


    A round is one consolidated set of feedback. Five emails over three days is five
    interruptions, not one round, and if you don't define it you will be the one
    absorbing the difference.

    8. Change requests in writing, before any work


    Client asks. You reply with cost and timeline impact. They confirm. Then you
    start.

    This isn't bureaucracy, it's protection in both directions. They never get a
    surprise invoice and you never do unpaid work. Small things I still absorb
    without mentioning — the clause exists for the "while you're in there, can we
    add a booking system" requests.

    9. Silence counts as approval


    If I ask for sign-off and hear nothing for X working days after one reminder,
    that stage is approved and we move on.

    Without this, one unresponsive client freezes your schedule indefinitely and
    you have no way to restart it.

    10. Ownership transfers on final payment


    Until the last invoice clears, the work is mine. The site goes live when payment
    does.

    This is the single most effective clause for getting a final invoice paid, and
    it has never once caused an argument with a client who intended to pay.

    11. One named decision-maker


    When feedback arrives from four people who disagree with each other, someone on
    the client's side has to resolve that before it reaches you. Name that person in
    the contract.

    12. What happens if either side walks away


    They pay for work completed. Anything prepaid and not yet worked against comes
    back. Agreeing this while everyone is still friendly takes five minutes;
    agreeing it afterwards takes a lawyer.

    None of this makes you difficult to work with. In my experience it does the
    opposite — clients relax when the person building their site clearly knows how
    projects go wrong, because it suggests you've finished a few.

    What's in your contract that isn't in mine? I'm still adding to this.#freelance #webdev #career #business #software #coding #development #engineering #inclusive #community
    The contract clauses I added after three years of client websites

  20. When I show ApkPy to someone, the first question is almost always the same: how does this run Python on Android?

    It doesn't. ApkPy reads writehere.py and writes Java and XML. The APK from apkpy run has activities, layouts, drawables and a manifest, the same as an app built by hand in Android Studio. There is no Python interpreter inside, no WebView, and no CPython compiled as a library.

    I chose translation over embedding because of size. In the benchmark I published, the same 100-note app was 5.37 MiB in debug and 1.48 MiB in the signed release. With an interpreter inside, the starting point would be different. And because the generated code is plain Java, the camera and background audio are Android APIs, not bridges to them.

    The cost shows up when I write Python ApkPy cannot translate yet. The build stops on that line and says what to write instead.

    1.14.0, out on October 20, was mostly about that. Most of the Python people write every day now goes through: a, b = parts, for key, value in d.items(), items.pop(), sorted(), comprehensions inside functions, f-string widths ({n:05d}), *args, functions inside functions, recursion, try/except and for ... else.

    Some of it was less visible than new syntax. The generated Java is now checked against CPython on the same inputs, accents and emoji included.

    1.14.0 also tightened installation. apkpy setup now checks the sha256 of everything it downloads.

    The Python that translates is listed on Compatibility and limits.

    If you want to try it:

    python -m pip install --upgrade apkpy
    apkpy start hello
    cd hello
    python writehere.py

    writehere.py opens the Previewer. apkpy run generates the Android project and builds a debug APK next to it.#python #android #opensource #showdev #software #coding #development #engineering #inclusive #community
    Why there is no Python inside an ApkPy APK

  21. I keep my drafts as Markdown files with a short front matter block at the top. It holds the title, a one-line description that ends up as the meta description, and a few tags. When a piece is ready, the static site generator or the blogging platform reads those fields and builds the page from them.

    The trouble is that front matter is the part I look at least. I spend hours on the body and about ten seconds on the block above it. So the mistakes pile up there: a title that grew while I was editing and is now far too long for a search result, a description I meant to write later, a tags line I left empty.

    None of this is hard to fix. It's just easy to miss. So I wrote a short script that reads every draft in a folder and tells me what's missing or too long.

    What it checks


    I kept the rules deliberately small:

    • Every file starts with a front matter block between two --- lines.
    • title, description and tags are present and not empty.
    • The title is 60 characters or fewer.
    • The description is 155 characters or fewer.

    The two length limits are rough guides, not official numbers. Search engines cut titles and snippets by display width, not by a fixed character count, so treat them as a "probably too long" warning. Change them to whatever your platform or site uses.

    A draft that passes looks like this:

    ---
    title: How I name my draft files
    description: A simple naming pattern that keeps a folder of drafts easy to search.
    tags: [writing, workflow]
    ---
    Body text starts here.

    The script


    It uses only the standard library, so there's nothing to install.

    #!/usr/bin/env python3
    """Flag Markdown drafts with missing or overlong front matter fields."""
    import sys
    from pathlib import Path

    REQUIRED = ["title", "description", "tags"]
    MAX_TITLE = 60
    MAX_DESCRIPTION = 155

    def read_front_matter(text):
    lines = text.splitlines()
    if not lines or lines[0].strip() != "---":
    return None
    fields = {}
    for line in lines[1:]:
    if line.strip() == "---":
    return fields
    if ":" in line:
    key, value = line.split(":", 1)
    fields[key.strip()] = value.strip().strip('"').strip("'")
    return None # no closing ---

    def check(path):
    problems =
    [] fields = read_front_matter(path.read_text(encoding="utf-8"))
    if fields is None:
    return ["no front matter block"]
    for key in REQUIRED:
    if not fields.get(key):
    problems.append(f"missing {key}")
    title = fields.get("title", "")
    if len(title) > MAX_TITLE:
    problems.append(f"title is {len(title)} characters (max {MAX_TITLE})")
    description = fields.get("description", "")
    if len(description) > MAX_DESCRIPTION:
    problems.append(
    f"description is {len(description)} characters (max {MAX_DESCRIPTION})"
    )
    return problems

    def main():
    folder = Path(sys.argv[1] if len(sys.argv) > 1 else ".")
    found = 0
    for path in sorted(folder.rglob("*.md")):
    for problem in check(path):
    print(f"{path}: {problem}")
    found += 1
    sys.exit(1 if found else 0)

    if __name__ == "__main__":
    main()

    read_front_matter returns None when there's no opening --- or no closing one, and a dictionary of fields otherwise. check turns that into a list of plain-language problems. main walks the folder recursively with rglob, prints one line per problem, and exits with status 1 if anything was found.

    Running it


    Save it as check_front_matter.py and point it at your drafts folder:

    python3 check_front_matter.py drafts

    With one good file, one file with a long title and no description, and one file without front matter, the output looks like this:

    drafts/long-title.md: missing description
    drafts/long-title.md: title is 83 characters (max 60)
    drafts/no-front-matter.md: no front matter block

    Each line starts with the file path, so in most editors' terminals you can click straight through to the file. When everything passes, it prints nothing and exits with 0.

    Making it hard to forget


    If your drafts live in a git repository, the exit code means you can run the check before every commit. Put this in .git/hooks/pre-commit and make it executable with chmod +x .git/hooks/pre-commit:

    #!/bin/sh
    python3 check_front_matter.py drafts

    If the script finds a problem, git stops the commit and shows the list. When I really do want to commit a half-finished draft, git commit --no-verify skips the hook for that one commit.

    I don't always want that level of strictness. On some projects I just run the script by hand before I move a file into the "ready" pile, and that's enough.

    What it doesn't do


    This is not a real YAML parser. It reads simple key: value lines, one per field. If you write tags as a block list:

    tags:
    - writing
    - workflow

    the script sees an empty tags: line and reports it as missing. If that's how you write front matter, either switch to the inline [writing, workflow] style or install PyYAML and use yaml.safe_load on the block instead of the loop.

    It also can't tell whether a description is any good. It only knows that one exists and isn't too long. Writing a description that makes someone want to read the piece is still my job. The script just makes sure I don't publish without one.

    That's the part I like about small checks like this. They take the boring, forgettable items off my mind, so the attention I have left goes to the writing itself.#python #markdown #writing #productivity #software #coding #development #engineering #inclusive #community
    A small Python check for front matter in a folder of Markdown drafts

  22. For years the main reason to add an FAQ section was the dropdown it could earn in Google results. That reason has gone. The page itself still matters, though, because AI assistants and AI search features pull short, direct answers from pages, and a well-built FAQ is one of the easiest things on a site for them to lift.

    This post covers what changed at Google, what still makes an FAQ worth writing, and the HTML pattern we use so each answer stands on its own.

    Disclosure: Appie.run publishes this post. The AI FAQ Generator and Website FAQ Generator mentioned below are our free tools. Everything else here works with any CMS and no tool at all.

    What Google changed (as read on 26 Oct 2026)


    From Google's Search Central updates and Search Console Help:

    • FAQ rich results stopped appearing in Google Search on 7 May 2026, and Google added a deprecation notice on 8 May.
    • On 15 June 2026 Google removed the FAQ structured data documentation, the FAQ report in Search Console and FAQ support in the Rich Results Test.
    • Search Console API support for FAQ appearance data was removed in August 2026.
    • Google says existing FAQPage markup can stay on your pages and causes no harm.
    • In the same June update Google noted that an llms.txt file isn't needed for Google Search.

    So: no more SERP dropdown, no penalty for leftover markup, and no special file required. What's left is the content.

    Why an FAQ is still worth writing


    Nobody outside the AI companies can tell you exactly how each assistant picks its sources, and we won't pretend to. What you can control is whether your answer is easy to find, easy to extract and correct when pulled out of context. A question-and-answer block does all three if you write it properly:

    • The question matches the way people actually ask it.
    • The first sentence of the answer is the answer.
    • The answer makes sense without the paragraphs around it.

    Those same properties help a human who lands on the page from a support link, so the work isn't wasted whichever way the traffic arrives.

    Step 1: Collect real questions


    Don't invent questions in a meeting. Pull them from places where customers already asked:

    • Support tickets and live chat transcripts
    • Sales call notes ("Does it work with...?", "What happens when...?")
    • Reddit and community threads in your category
    • Your site search logs

    Group duplicates, then keep the 8 to 15 that come up most or block a purchase.

    Step 2: Write answers that survive being quoted alone


    A quick test for each answer: paste it into a blank doc with only the question above it. Does it still make sense?

    Weak:

    Yes, as mentioned above, it does, depending on your plan.


    Better:

    Yes. Team plans include SSO via SAML. The Starter plan does not.


    Rules we follow:

    1. Answer in the first sentence. Yes/no, a number, or a name.
    2. Name the thing. Say "the Starter plan", not "this plan".
    3. Keep it to 40 to 80 words for most answers. Link out for detail.
    4. Date anything that changes. "As of 26 Oct 2026, the Starter plan costs $19/month." Prices and limits go stale, and a stale quoted answer is worse than none.
    5. Only state what the page can back up. If the policy lives elsewhere, link to it rather than paraphrasing it loosely.


    Step 3: Use plain, semantic HTML


    You don't need a plugin. Headings for questions and paragraphs for answers are enough, and they render the same for every crawler:

    <section id="faq" aria-labelledby="faq-title">
    <h2 id="faq-title">Frequently asked questions</h2>

    <h3 id="faq-sso">Does the Starter plan include SSO?</h3>
    <p>No. SSO via SAML is included on Team plans only. The Starter plan
    uses email and password sign-in. <a href="/pricing">Compare plans</a>.</p>

    <h3 id="faq-cancel">Can I cancel at any time?</h3>
    <p>Yes. You can cancel from the Billing page, and your plan stays active
    until the end of the current billing period.</p>
    </section>

    If you prefer collapsible answers, <details>/<summary> keeps the text in the HTML:

    <details>
    <summary>Can I cancel at any time?</summary>
    <p>Yes. You can cancel from the Billing page, and your plan stays active
    until the end of the current billing period.</p>
    </details>

    Avoid loading answers only via JavaScript after a click. If the text isn't in the served HTML, some crawlers will never see it.

    Give each question an id so you can link straight to it from support replies and docs.

    Step 4: Keep or add FAQPage markup (optional)


    Google no longer shows FAQ rich results, and it says leftover markup does no harm. Other consumers of schema.org data may still read it, so if it's already there, keep it in sync with the visible text. If you add it, mirror the on-page wording exactly:

    <script type="application/ld+json">
    {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
    {
    "@type": "Question",
    "name": "Can I cancel at any time?",
    "acceptedAnswer": {
    "@type": "Answer",
    "text": "Yes. You can cancel from the Billing page, and your plan stays active until the end of the current billing period."
    }
    }
    ]
    }
    </script>

    The risk with markup is drift: someone updates the visible answer and forgets the JSON. If your FAQ comes from a CMS field, generate both from the same source.

    Step 5: Put the FAQ where the question is asked


    One giant /faq page is fine as an index, but the most useful placement is next to the thing in question: pricing questions on the pricing page, setup questions in the docs. A short block of 4 to 6 questions per page tends to stay accurate because the owner of that page sees it.

    Step 6: Review it on a schedule


    Add a "last reviewed" date and put a recurring reminder on someone's calendar. Every price, limit and integration claim in the FAQ should be checked against the product at least each quarter.

    Getting a first draft faster


    If you have the source material but not the time, two of our free browser tools can produce a draft for you to edit (both run a captcha check first):

    • AI FAQ Generator (appie.run/tools/ai-faq-generator): paste up to 2,000 characters of text, pick 1 to 10 FAQs, a language and a tone. The answers are grounded in the text you pasted, and it doesn't add policies or prices that aren't there.
    • Website FAQ Generator (appie.run/tools/website-faq-generator): give it up to 5 public URLs. It skips questions it can't answer from those pages instead of guessing.

    Treat the output as a draft. Check every answer against Step 2's rules before it goes live.

    Checklist


    • [ ] Questions come from real customer sources
    • [ ] Each answer starts with the answer
    • [ ] Each answer makes sense on its own
    • [ ] Prices and limits carry an "as of" date
    • [ ] Questions and answers are in the served HTML
    • [ ] Any FAQPage JSON-LD matches the visible text word for word
    • [ ] A review date is set

    Google sources: Search Central blog and Search Console Help pages on FAQ rich results and structured data, read 26 Oct 2026.

    RG, Founder, Appie.run#seo #html #webdev #ai #software #coding #development #engineering #inclusive #community
    How to Write a Website FAQ That AI Answers Can Quote (Now That Google's FAQ Rich Results Are Gone)

  23. Tues. Oct. 27, 2026: Still Shambling Around Like a Zombie

    image courtesy of icholas Panek from Pixabay

    Tuesday, October 27, 2026

    Last Day of the Full Moon

    Neptune, Saturn, Chiron, Uranus, Venus, Mercury Retrograde

    Sunny and cool

    Yessiree Bob, Mercury is Retrograde again. Try to avoid signing contracts or buying anything big. Find cool stuff in thrift shops. Think A LOT MORE before you say a word – even more important when Mercury and Venus are retrograde at the same time.

    Friday was sunny and cold. I was out of the house on time and at CVS for my COVID shot. No worries, no hassle this time. Getting home was a little fraught – more delays than usual, things slower, etc., and I started feeling the effects of the shot faster.

    I usually feel it within 20 minutes, then it steadies out for 6-8 hours, then I’m miserable for however many days I’m down.

    This time, I started feeling it in 10 minutes. I made it home, but my arm was quite sore within the first half hour. I’d drunk the 16 oz. of water the hour before the shot, as instructed. I continued to be thirsty, and by noon (my shot was at 9), I had consumed a gallon of water, and wanted more. So that was new and different. But I went with it. I’m not much of/enough of a water drinker, but I craved it and trusted it.

    I started feeling weary early on, and my nerve endings were on fire. I imagine this is what a fibromyalgia flare feels like. My joints also ached, and creaked loudly every time I moved, to the point it woke up the cats. New and different. I’ve always had muscle aches (which I also had), but not the nerve/joint stuff to this extent. I had some sense of brittle joints last go-round, but it was different than this, and moved through in about 5-6 hours. All of this will go in a document to the John Hopkins study in which I’ve participated in for the last handful of years. That’s why I paid such close attention.

    I took care of some business that needed attention while I was still coherent, drank as much water as I wanted, and took up residence on the sofa in the sunshine with the cats.

    I’m usually ravenously hungry on the first day of the shot, but was not. I was mildly nauseated for a couple of hours, but it passed.

    I wrote while I still could, and had books still close at hand for when I started to wind down. The headache came in faster, too, this time around, within three hours instead of the usual 6.

    I hoped that symptoms coming in hard and fast meant they’d flow through faster, too. But that’s why I blocked out several days. So that the only thing I needed to do was heal.

    I was actually functional enough to cook dinner using some CSA ingredients. I went to bed early, so tired I could barely drag myself there.

    I woke up a little after midnight on Saturday with severe chills. I added the featherbed to the blanket cover, which helped. Charlotte even allowed Tessa to come on the bed and help warm me.

    Then the muscle aches began. Everything hurt as badly as the first vaccine with Moderna way back in the day. I couldn’t take Tylenol because it made me so nauseated. I finally fell asleep, waking up a few hours later with a fever. Got back to sleep, woke up with chills.

    At one point, I could swear Charlotte and Willa were swinging from the ceiling fan in my office, but I could have had audio hallucinations.

    I moved to the sofa around 6 and slept there all day. I woke up every 3 or 4 hours for about 15 minutes or so, and went right back to sleep. I did manage a few sentences of free-writing, so I didn’t miss a day. I couldn’t even tie my hair back, because it hurt too much.

    I tried to eat, but everything tasted like wet cardboard, and nauseated me even more. I couldn’t eat more than 2 or 3 bites of anything. I drank as much liquid as possible, although I could only stand a few sips of coffee.

    You know it’s bad when I don’t drink coffee.

    At least when I was asleep, I wasn’t aware of how bad I felt.

    I was back in my own bed by 6 PM.

    I woke up around 1:30 on Sunday morning, feeling a little better. I managed to get back to sleep, and even had a little bit of dreaming, a good sign.

    I got up at the usual time and slowly fed the cats. I wasn’t up to yoga or much meditation, but I did a bit of free-write.

    I managed to eat a little breakfast. By mid-morning, I could do the Community Tarot Reading for the Week, which you can read here.

    I spent most of the day on the couch, reading. I read a book by one of my favorite authors that was a disappointment. It focused on the pain without the whimsy or joy that her previous novels have. While I respect her trying something new, and it technically had a happy ending, I missed the small moments of beauty that I love so much in her work. I read a book by a different author whose work I’ve read for years. Some of her work I’ve loved, some didn’t do it for me. This, sadly, was the latter, and it was in present tense. I realize she’s changed her style for market reasons, but she’s also lost the complexity that drew me to her work in the first place.

    So not a satisfying reading day!

    I heated up some leftovers for dinner, and could actually taste the food again, which was an improvement.

    I was in bed again by 6:30.

    I woke up around 1:30 on Monday, feeling a little better, and plotted out a good bit of the next ghostwriting assignment.

    Fell asleep again, and dreamed I was at a conference center. There was a poetry convention in one section and a mystery convention in the other, and I kept running back and forth between them. Not the most restful of dreams, but an improvement over the weekend.

    Woke up again at the usual time, and fed the cats, and that just about did me in. I did a few yoga poses on the floor, with Tessa snuggled beside me, and then the 40-minute meditation and the 15-minute free-write.

    I played with some of my out-of-the-box ideas to protect my sites, as well as collecting some practical tools.

    There’s also this: Theft is a crime. A company putting it in its “terms of service” doesn’t make it less of a crime. So I’m filing with my state AG, and also contacting my state and federal reps about it.

    WP won’t allow me to install an AI blocker on this blog without paying a subscription fee, so I’ll be using one of the out-of-the-box solutions for the blog. I specifically don’t want this to be part of one of my websites, although I considered making a subdomain and exporting everything.

    Again, during a Mercury Retrograde? Big mistake.

    I am looking at some alternative social media platforms. Both Upscrolled and Monnett look good. Those would be sites where I wouldn’t have to keep posting about new releases cyclically for promotion. I could post once and be done. Cara, Joust, Curate, and PeakD don’t seem to be the right fit right now. I might try Curate at some point, when I have more visual work. Haven sounds promising, but isn’t even in Beta yet. Eh!, the Canadian social network, sounds like fun, but they might not want Americans at this point. I really miss Ello.

    I think when curation is too narrow, you miss a lot of cool stuff.

    I will spend more time on Bluesky, Mastodon, and Tumblr, too. I have accounts, I use all three in different ways, but I need to use them better.

    For now, I’ve switched my accounts on Meta to personal, rather than business. I removed my lkn.bio. When they decide to expand the theft to personal, I may well just delete everything.

    Maybe I just need a few months to pull back from many things, and figure out new ways of rebuilding. It means a financial hit, and it probably isn’t worth it to release a new holiday short this year.

    And I’ll do my out-of-the-box protections which are designed to have a ripple effect over time with serious consequences for assholes. No, I’m not going into detail. I will start using either Glaze or Nightshade for images.

    All of that took more time than I would have liked, but that’s the way it goes. Retrogrades slow things down.

    And, I noticed that when I was responding to comments on other posters’ IG accounts about these issues, when they replied to me, I could not reply back and continue the conversation.

    Really makes me want to delete all the Meta and just suck it up. I’ve successfully lived without the dystopian version of what used to be Twitter. I miss what it was at its best, not what it became.

    I’m going to lose touch with a bunch of people. I’m not doing monthly subscriptions to anything. Not because I don’t want to, but as a freelancer, I cannot commit to anything monthly beyond my bills when I never know when I will get paid. Bills must be covered first. Then I spend money locally and with individual artists. Even a small monthly subscription can put me behind, so I don’t do them. Not only don’t I want to live by subscription. I can’t. I literally can’t.

    I remember how devastated I was moving off Twitter. This just makes me angry. I’m not surprised, but I’m angry.

    I’ve never given up analogue everything – writing, music, etc. So it’s just time to hunker down for a bit. I’m selling books locally over the holidays at a few places. I’ll put sell sheets into the books, too, with information about the rest.

    And I need to find something for when the ghostwriting contracts are done, which will be fairly soon.

    Speaking of ghostwriting, I had a really good session on it, and I hope I can keep that momentum up. I even got ahead of where I hoped.

    I also read the scripts for tomorrow’s literary committee meeting.

    I was wiped out by then.

    I’m not one much for frozen meals, but I hate making lasagna (weird, I know).  I found a frozen lasagna by a company out on the other side of the state in Quincy, MA, so I bought one last week, figuring there would be days I wasn’t up to cooking post-booster. I slapped it into the oven last night and hoped for the best.

    It was actually pretty good. And my taste buds are working again, so I wasn’t imagining it. I would buy it again, and try their other products, and have one or two on hand for nights I can’t face the stove.

    I read a little bit in the evening. I’m caught up on all the library books, so it was time to dig into my own TBR pile.

    Went to bed a little earlier than usual but later than I have been, and couldn’t sleep. So I guess I’m getting back to “normal”?

    Finally got to sleep, only to be woken up when Willa pulled a Houdini and my mom couldn’t find her. We found her, got her back into my mom’s room, and I went back to sleep, and then overslept until 6:30 this morning to start the routine.

    The routine felt better this morning, even the yoga. I had a good free-write session, jiggling a lot loose.

    After breakfast, I will get a crockpot marinara sauce going, take out the garbage, pick up the mail, vacuum, get some writing done, and then switch over to the ghostwriting in the afternoon. I will take breaks as I need them, and not push too hard.

    My friend’s surgery went well yesterday. She has a long recovery ahead of her, but excellent care, and that’s always a relief.

    Have a good one!

    #CovidBooster #freelance #health #life #metaTheft #research #socialMedia #writing
  24. Screenshots are everywhere in software docs, and most of them have alt text like screenshot, image, or the original file name. Sometimes there's none at all. When I edit a guide, the images are often the last thing anyone has looked at closely.

    Alt text matters more in docs than people think. Screen reader users hear it instead of seeing the image. It shows up when an image fails to load, for example on a slow connection or after someone renames a folder in the repo. And it's text, so it can be searched and translated, which a picture of text can't.

    Here's how I approach it.

    Ask what the screenshot is for


    Before writing anything, I ask one question: why is this image here? In docs, the answer is almost always one of these:

    • It shows where something is (a button, a menu, a field).
    • It shows what you should see after a step, so the reader can confirm it worked.
    • It shows a specific value or setting the reader has to match.
    • It's decoration, and the surrounding text already says everything.

    The alt text should carry that purpose, not a full inventory of the screen. A settings page might have thirty controls on it, but if the step is about one checkbox, that checkbox is what the alt text is about.

    Describe the state, not the pixels


    Compare these two:

    ![Screenshot of the settings page](images/settings.png)

    ![The Notifications tab with "Email me when a build fails" turned on](images/settings.png)

    The first tells me nothing I couldn't guess. The second tells me exactly what the screen should look like after the step, which is the whole reason the screenshot exists.

    A few habits that help:

    • Skip "image of" and "screenshot of". Screen readers usually announce that it's an image already. Start with the content.
    • Use the exact UI labels, with the same capitalisation as the interface. If the button says "Save changes", the alt text says "Save changes", not "the save button".
    • Include values that matter. If the reader needs to pick "UTF-8" or set a timeout to 30, put that in the alt text.
    • Keep it to a sentence or two. If you need more, the information probably belongs in the body text.


    Don't hide instructions in the image


    This is the problem I find most often. A step says "Configure the options as shown below", and the actual settings only exist in the screenshot. Anyone who can't see the image, or whose image didn't load, is stuck.

    The fix isn't longer alt text. It's moving the information into the step itself:

    3. In **Format**, select **CSV**, and in **Encoding**, select **UTF-8**.

    ![The Export dialog with CSV and UTF-8 selected](images/export.png)

    Now the step works without the image, and the screenshot becomes a confirmation. The alt text can stay short because the text above it does the heavy lifting.

    When empty alt text is right


    Not every image needs a description. If a screenshot only repeats what the text already says, or it's a decorative banner, an empty alt is the honest choice. In Markdown that's ![](images/banner.png), which renders as alt="". Screen readers generally skip images with empty alt text instead of reading out the file name.

    The difference between "empty on purpose" and "forgot to write it" is invisible in the source, though. In repos I work on, I like a short HTML comment next to deliberate ones, so the next editor doesn't "fix" it:

    <!-- decorative, text above covers it -->
    ![](images/banner.png)

    A quick check before review


    To find the obvious problems in a docs folder, I use a single grep. It looks for three patterns: empty or generic alt text, alt text that is a file name, and alt text that starts with "image of" or "screenshot of".

    grep -rniE \
    -e '!\[(image|screenshot|picture|img)?\]\(' \
    -e '!\[[^]]*\.(png|jpe?g|gif|webp)\]' \
    -e '!\[(an? )?(image|picture|screenshot|photo) (of|showing)' \
    docs/

    -r searches the folder recursively, -n adds line numbers, -i ignores case, and -E enables extended regular expressions. Each -e adds one pattern. On a test file it prints something like:

    docs/setup.md:3:![](images/settings.png)
    docs/setup.md:5:![screenshot](images/login.png)
    docs/setup.md:7:![Screenshot 2026-03-02 at 10.14.png](images/export.png)
    docs/setup.md:11:![image of the dashboard](img/dash.png)

    It's not a verdict. The empty alt on line 3 might be deliberate, and the check can't tell whether a real description is accurate. It only catches images written in Markdown syntax, not HTML <img> tags. But it gives me a list to work through, which beats scrolling every page looking for images.

    Keep it in sync


    The last thing: alt text goes stale with the UI. When a button gets renamed and someone updates the screenshot, the alt text often keeps the old label. When I review a docs change that touches an image, I read its alt text against the new screenshot. It takes a few seconds, and it's usually the only place the old wording survives.#documentation #a11y #writing #markdown #software #coding #development #engineering #inclusive #community
    Writing alt text for screenshots in documentation

  25. You shipped the feature, fixed the bugs, and answered the "quick question" that turned into a two-hour debugging session. The invoice went out on the first of the month. Thirty days later: nothing.

    The most I have ever waited on was $4,800. The client answered every message within a day - "accounts is processing it", "the approver is on holiday", "next Friday, promise". What got it paid was not a longer or angrier email. It was the third email in a sequence I already had sitting in my drafts folder, sent on day 30, worded almost exactly like the one below. The money arrived in 48 hours.

    If you freelance or run a small dev shop, chasing payment for finished work is one of the worst parts of the job. The fix is not a better apology for asking. It is a process: the same three emails, on the same days, every time.

    Here they are, copy-paste.

    Day 7: the polite nudge


    At seven days past the due date, assume a boring explanation. The invoice was missed, routed to the wrong person, or stuck in an approval queue. Your goal is a response without friction.

    Subject: Quick follow-up on invoice #[NUMBER]

    Hi [CLIENT NAME],

    I'm following up on invoice #[NUMBER] for [PROJECT/DELIVERABLE], which was due on [DUE DATE].

    Could you confirm that it's been received and let me know when I can expect payment?

    For reference, the outstanding amount is [AMOUNT].

    Thanks,
    [YOUR NAME]


    Why this works: you identify the invoice, state the amount, and ask for one specific next step. No accusation, no essay.

    Send it in the original invoice thread so the context travels with it. If they reply with a payment date, write it down. A promise in a casual email is easy to forget - yours and theirs.

    Day 14: the firm follow-up


    Two weeks late, be more direct. This message says the balance needs attention; it does not ask whether anyone saw your last email.

    Subject: Payment overdue - invoice #[NUMBER]

    Hi [CLIENT NAME],

    Invoice #[NUMBER] for [AMOUNT] was due on [DUE DATE] and remains unpaid.

    Please confirm the scheduled payment date by [RESPONSE DEADLINE].

    If payment has already been processed, please disregard this reminder and let me know so I can update my records.

    Thank you,
    [YOUR NAME]


    Why this works: it replaces a vague request with a clear action and a deadline, and it gives the client an easy out if payment is already moving.

    Set the response deadline at two business days. If the answer is "waiting for approval," ask when approval is expected. If "accounting pays on Fridays," ask which Friday your invoice is scheduled for. Turn "we'll get to it" into something you can track.

    Check your contract before this email. If it allows late fees, interest, or pausing work, know the terms before you invoke them. Never add fees the contract does not mention.

    These templates are communication examples, not legal advice. Check your contract and applicable local law before adding late fees or taking collection action.

    Day 30: the final notice


    A month overdue changes the conversation. Stay polite, but do not send a third email that sounds like the first one.

    Subject: Final payment notice - invoice #[NUMBER]

    Hi [CLIENT NAME],

    Invoice #[NUMBER] for [AMOUNT], originally due on [DUE DATE], remains outstanding despite my previous follow-ups.

    Please arrange payment in full by [FINAL DEADLINE] or contact me by that date to confirm a concrete payment arrangement.

    If the balance remains unpaid and I have not received an agreed resolution, I will consider the next steps available under our agreement and applicable law, which may include formal collection or recovery proceedings.

    Please confirm receipt of this notice.

    Regards,
    [YOUR NAME]


    Why this works: it is factual, it documents the history, and it sets an explicit deadline without threats you cannot carry out.

    Only name actions you are genuinely prepared and legally entitled to take. Before formal recovery, review your agreement, preserve the invoices and correspondence, and check the rules in the relevant jurisdiction. And do not assume you can shut down a live service, revoke access, or withhold source code - your contract decides that, not your frustration.

    What happens between the emails matters as much


    1. Keep a payment log. Invoice number, amount, due date, reminder dates, responses, promised dates. The day you have three late invoices, this log is the only thing keeping the story straight.
    2. Separate payment from new work. A client who has not paid asking for another feature is not an automatic yes. Review the agreement and discuss a pause or revised schedule.
    3. Make paying easy. Every email includes the invoice, the amount, payment instructions, and the reference their accounting needs. Every extra step is another week.
    4. Fix the next contract. Explicit payment terms, a defined invoicing schedule, a stated late-fee rule. For larger projects, milestone payments instead of one big invoice at the end.
    5. Do not let one client be your whole business. A great relationship is still a financial risk if one unpaid invoice stops you paying your own bills.


    Build the system before you need it


    The best time to decide how you handle late payment is before an invoice goes overdue. Set three calendar reminders for days 7, 14, and 30, save the scripts as templates, and when the day comes you fill in the brackets and send. You follow a process instead of writing an email while frustrated.

    Your turn: what is worse - clients who ignore reminders, clients who keep promising "next week," or clients who dispute the invoice after the work is done? And what actually worked for you?

    Written by the Change Brief team - we build practical, no-signup toolkits for freelancers.

    AI assistance was used in drafting this article. The publisher reviewed and edited the content and takes responsibility for the final version.#freelance #career #productivity #software #coding #development #engineering #inclusive #community
    3 Late-Payment Emails for Freelance Developers

  26. Artcraft, Mindscaper, et al: Can we really just vibecode creative software?

    Over the past couple days, massive hype has built up around Artcraft, a collection of literal clones of Adobe’s CC, Microsoft Office and other apps, entirely vibecoded and open source. Artists and creative folks battered by subscriptions costing hundreds and thousands of dollars a year finally smell relief that’s not the poorly designed open source jank of yesteryear, and the project receives dozens of similarly vibecoded pull requests each hour. At the same time, I’ve been building Mindscaper, practically with the same goal, but without the hype. As such, I have some thoughts and bias on this subject. And probably typos, this is 100% human-written.

    Background

    Artcraft is developed by Learning Machines LLC, which appears to be a one-man company by Brandon Thomas. Thomas previously developed the deepfake services “vo.codes” and “fakeyou.com” under this company, and developed VTubing tech. Judging by the blurb on “the.storyteller.company”, he appears to believe in “controllable AI” trivializing (“democratizing”) art creation, but with Artcraft opted to primarily clone existing professional software, putting AI on the backburner (although an AI subscription service is available).

    By a lucky coincidence, I founded my company Koytek Wattenberg Media at a similar point in time, with similarly limited success. One of my biggest clients became Audacity, at which I worked on “democratizing” audio creation, and wouldn’t you know I’m also into VTubers. I started my foray into vibecoding about half a year after Artcraft, focusing on Audacity-shaped audio and video editors, Soundscaper and Framescaper.

    On technical matters

    I have nothing new to say here that hasn’t been already said a billion times. Modern coding robots (I used Opus 5 and GPT 5.6 Sol mostly) are perfectly capable of making something that Just Works. They just happen to be lying, lazy bastards that will happily claim something exists when it doesn’t. Test-driven development principles keep them reasonably honest, though they occasionally do manage to find a way to write tests so unspecific that a pixel-by-pixel spectrogram in the Roseus color scheme and a spectrogram with much coarser buckets using a blue-to-yellow color scheme pass the same test.

    I am under no illusion that the code they’ve produced isn’t ugly and suboptimal. But then, the Audacity codebase is 25 years old and also extremely ugly and suboptimal. The Audacity team – all extremely talented software engineers and beautiful people – have been unable to make Audacity 4 feature-equivalent to Audacity 3 in over a year, despite that “only” being a UI migration with some UX changes attached. With Soundscaper, I managed to get an app going featuring all of Audacity 3’s and 4’s features within 3 months, plus a plethora of additional DAW features and video editor on top of it. Similarly, Artcraft managed to get a Photoshop (and general Adobe CC) clone going in half a year.

    On practical matters

    While the robots are perhaps good enough to get functionality implemented, they suck at figuring out the finer details – and pretty much all of the design.

    Robots suck at progressive disclosure

    Progressive disclosure is the part of UX where, instead of showing everything at once, you show things as they’re needed. A trivial example for this would be a menu; the “Format” menu is reduced to that single word on your screen until you, the user, decide that now is the time to format something and click on it, revealing a dozen or so options.

    Robots suck at this. If you tell them to add a feature, they’ll generally attempt to place it on screen with a dedicated button. This is fine for an app with 6 controls in total, but less so for a complex creation app with 500. Forcing them to chuck everything into menus and dialogs helps, but then we’re straight back into design paradigms from the 80s.

    This is where Artcraft and Mindscaper both have an advantage over a pure vibecoded approach: Artcraft already knows where everything goes because they’re busy copying existing design. I know where my stuff goes because I am the designer, and thus have a very strong idea on what these features are, how they should work, where they should go and when they should show up.

    Robots suck at information density

    In a similar vein to the thing above, robots love to implement stuff as “Control title – control – explanation sentence”. Again, this is fine for a small dialog with 2 controls in it, but for any sufficiently complex effect it just either overwhelms people with too many words and/or requires things to be spaced so far apart to fit all this extra text that the dialog becomes massive.

    And again, cloning existing dialogs works here, as does being the original designer to make relevant decisions. Purely vibecoding this from scratch is going to be much more difficult though.

    Robots suck at asking the right questions

    The biggest difference between working with humans and working with robots is what questions I’m being asked. With the Audacity team, I’d get asked about user edge cases as they popped up, I’d get asked about clarifications on my designs, I’d get asked about things by users. With the robots, there are a lot fewer of these kinds of questions; the only time the robot asks questions at all seems to be in plan mode. However, in plan mode, the questions that are being asked almost always are implementation-centric, ie the stuff I don’t really care about. So what ends up happening is that the robot will go ahead and do something, proudly proclaim it’s finished and then it’s up to me to QA whether it actually did the right stuff. And more often than not, it misses some design edge case.

    On philosophical matters

    In this section I’d want to talk about the should and shouldn’ts of vibecoding a creative software suite.

    Copyright

    Artcraft is copying various proprietary programs wholesale using AI. On Artcraft’s side, this has all the usual copyright questions attached (who is the author? is the code copyrightable?), though on Adobe’s side this becomes more interesting: From Tetris v. Xio, we know that the look and feel of a program (in that case, Tetris) can be copyrightable. Note that this is different from copyright on the code itself (which I don’t think Artcraft can even infringe given that their thing is in Rust, which Adobe’s stuff probably isn’t), and also is different from attempting to claim copyright on the app’s structure or underlying ideas (that’s patent stuff, not copyright).

    Artcraft thus may be in for a rude awakening should Adobe feel threatened by them. Adobe may or may not win this case, but they also probably don’t need to in order to hobble Artcraft’s development for years to come. Funnily enough, the actual code being open source may be a saving grace here, as it likely can trivially be forked, copied and modified to avoid Adobe’s gaze, to a better degree than pirates ever could. Another point in favor of Artcraft is AI itself; any rulings in favor of copyright holders over AI developers is also a ruling against Adobe’s own products. It thus may be that Adobe opts to do… nothing, in order to avoid the backblast. I don’t think they’ll necessarily care about the possibility of a Streisand; lawsuits like this generally are boring enough for the wider press to not care beyond perhaps a single story in the margins.

    Mindscaper meanwhile doesn’t have that problem, as Soundscaper is building upon an open source app and crediting it, and Framescaper is original.

    Patents

    Software patents unfortunately arguably exist, some of them on UI (eg the Ribbon pattern found in MS Office). Adobe, unsurprisingly, has a tens of thousands of patents.

    Software patents are one level more devious than mere copyright: It doesn’t matter that you had the idea all on your own, or that the idea may be obvious now, all that matters is that someone else also had the idea before you. And if they have registered it, you now are in trouble. It’s because of software patents that loading screens don’t have minigames, it’s because of software patents that Audacity makes you jump through hoops to download FFmpeg, as there are still over 3000 patents in the AAC patent pool alone. And if just a singular patent survives litigation, which given the sheer number of patents involved is gonna take forever anyway, you’re on the hook for yet more damages.

    Software patents are the ideal tool for corporations to shut down people they don’t like, hence why some corporations (including Adobe and Microsoft, the companies most likely to be upset by what Artcraft is doing here) engage in non-aggression pacts with each other, like the Allied Security Trust or Open Innovation Network – this prevents these companies being at each other’s throats for patent reasons all the time.

    However, these defensive alliances generally don’t apply to people outside the alliance, and neither Artcraft nor Mindscaper are in one. Thus, whenever one of the incumbents ends up being upset or feel threatened by what’s happening, they can pull the litigation lever.

    I don’t know which patents could be relevant here, and frankly, I also don’t wanna know – in the end it doesn’t really matter. Patents are a risk factor for any software, and typically best left ignored as patent holders tend to be more busy with actual business than going after one-man companies. However, when you sufficiently piss off a company – and I’d argue that wholesale cloning of a software might constitute that – you have a lot stacked against you.

    Freeing users

    Subscription services for software create incentives for the builder of the software to put as little work as possible into the software while charging as much as possible. This allows the Autodesks and Adobes of the world to charge ridiculous amounts, while providing software so bad that it regularly attracts user petitions, begging them to fix longstanding bugs degrading the experience.

    Simply providing free software alternatives here may work (eg in the case of blender and musescore), or may not work, as free software does (or at least: used to) suffer from small development teams and quite frequently UX so weird that it wasn’t possible for some folks to figure out how to use the program in question. A famous example for this is the “make a circle in GIMP”. The solution is to make an elliptical selection, intuit that you can convert that to a path, and then use a panel to draw the path – as opposed to Photoshop, where you just use the circle tool.

    Providing free software versions of a program would indeed free people of subscription software to use something else, depending on the copyright situation more or less easy compared to pirating, and this is what Artcraft does provide.

    Freeing new users

    However, I’ve found that the entire creative software field suffers from underdeveloped design. A lot of professional-grade software is modeled after pre-digital hardware and uses design metaphors that simply don’t make sense if you haven’t experienced said hardware. I remember when Lightworks, an Oscar-winning video editor, became a free download in 2010, I couldn’t for the life of me figure it out, not even typically simple things like rendering the video. This is despite me having had some experience in Sony Movie Maker (the cheap version of Vegas) and Powerdirector.

    This is understandable somewhat: To attract professional users in the 80s and 90s, you’d need to replicate their workflows from their pre-digital tools. And once you have these users and they’ve learned how to use the program, they’d hate to have to adapt to a new design. However, this also leads to new users having to jump through enormous quantities of hoops trying to learn the program. If you want to “democratize” art creation, making things free and open source is one thing, but the barrier to entry of learning the tool remains the same.

    This is where my work on Audacity (and now Soundscaper) becomes relevant: It takes quite a bit of design work, but it in principle should be possible to design a complex creation app in such a way to make it easy to use. Notably, not everything has to be equally easy – setting up a simple recording should be a one-button operation, while setting up a more complex multi-track recording may be a bit more involved, as we can expect the user to have a more clear task in mind on which input goes to which track.

    Our vision for Audacity (and Musescore for that matter) was to completely starve the current incumbents of new users by just having a much more modern design and having an app that’s easier to get into. I still think this is the way things will shake out eventually; we’ve already seen Finale starve to death from this pressure.

    Artists

    Of course, AI bros would go further here and envision a future where skill is completely replaced by AI. And while for things that already were sloppy and primarily utilitarian to begin with (shitposts, local business signage, anything using Wordart/clipart in the past), AI certainly is going to replace more dedicated tools, I don’t see it doing so for artists. To draw a chess analogy, computers have been better than humans in chess for a long time, yet humans still play chess, for one simple reason: It’s fun. Similarly, artists don’t really care if a robot can do a hyperrealistic godzilla in mere seconds, as the fun part of making art is actually creating it, not just admiring the result (that would be mere consumption).

    As an artist, you of course get to pick your battles. You can decide that shading or coloring is too annoying, and stick to strict black and white, or that mixing and mastering is too annoying and stick to making melodies and chords. From there you can hire someone to do the shading and coloring and additional work for you, or indeed use AI instead. In either case, your initial creative vision gets diluted by the other work; the more people are involved and the heavier the AI use, the more diluted your vision gets. This can be acceptable to you, especially in a world where art is traded as a commercial good, but if we assume that art as a good is going to lose worth, this tradeoff may become less worthwhile, perhaps making it so that you only wants tools strictly designed for you to express yourself.

    For-profit open source

    Having both worked at and seen for-profit open source, I’m perhaps a bit jaded:

    • We see companies close access to their source the moment they feel like they can extract revenue out of it (various server software comes to mind)
    • We see companies increase the amount of closed components in open source software, to guarantee only they can have a revenue stream (VSCode and Android come to mind)
    • We see companies add user-hostile features to benefit only themselves (Google Chrome/Android is the poster-child here, to the point where regulators need to step in to it)

    There might be a way to make a for-profit company be a good steward of an open source project, but the incentives always point in a different direction – and even if the current leadership can resist these incentives, the next one can flip towards enshittification so fast. I haven’t seen Thomas’ Artcraft project enough yet to know whether he’ll stay true to open source, though given he already has a subscription service (for cloud AI compute, of course) and a launcher ready, I gotta say that I’m worried.

    It’s for this reason that I spun out Soundscaper from my company kw.media into Mindscaper, a non-profit association. It is now immune to me, or anyone else for that matter, deciding I would like it to make me tons of money, as long as its members (so, ideally, the users) don’t want to be milked. As an association (as opposed to a foundation), it also is way more democratic, giving users a real voice in what should happen to Soundscaper.

    Resources & Sustainability

    It’s impossible to discuss AI without touching upon the massive resource use it causes. Throughout my time developing Soundscaper, I have burnt through Codex’ and Claude’s 20x subscription quota almost every single reset cycle, including OpenAI’s ridiculous practice of vibing when a reset occurs and having a dude announce it on twitter. This has cost me hundreds of dollars, would have cost me tens of thousands of dollars in API cost, and has cost OpenAI and Anthropic likely thousands of dollars as well.

    It is clear to me that the current pricing isn’t sustainable, and that slowly but surely, costs will go up. It is for this reason that Soundscaper uses local inference whenever useful and won’t be integrating with any cloud AI services. As far as I’m concerned, the entire point of open source is to fuck around with stuff on the machines you have access to and have it not tied to some service which decides what is and isn’t allowed.

    It also is clear to me that there are real environmental impacts vibecoding this hard has; especially when comparing how long and hard my local setup has to work to achieve much simpler tasks (I let gemma and aya-expanse handle translation work locally, for example). Thus, I try to limit my vibecoding to the areas I really care about. I have a media background, so I shall vibecode media tools I’ll personally use – as opposed to token-maxxing just because I can.

    Conclusion

    So, can we vibecode creative software? On a technical level, yes. On a design level, yes, if we are a designer or follow someone else’s design. But should we? Depending on how adventurous we are with copyright and patent laws, especially if we are just re-implementing someone else’s design – maybe not.

    We absolutely should open source and reverse engineer the things we care about, but we shouldn’t take a robot’s “one-shot” in an area we know nothing about as proof that it’s good now. It’s enormously easy to slop a whole software suite into existence but it actually takes some real work to get the software suite to actually be usable by real people – and surely, the benefit to real people has to be the goal.

    If you’re interested in contributing to a non-profit making creative software, consider joining Mindscaper.

    #ai #artcraft #artificialIntelligence #audacity #mindscaper #openSource #software #soundscaper #technology #vibecoding #writing
  27. This InDesign Welcome Kit Presentation Template Doesn’t Just Look Good, It’s Also Easy to Customize

    E-Type’s Welcome Kit Presentation Template, a 16-page InDesign file built at 1080 x 1920 pixels for screen presentations, is one of the more complete attempts, I have to say.

    This review works from the template’s official preview spread; the full 16-page layout is exactly as E-Type ships it, plus the technical specifications are listed on Adobe Stock. No slides here are rebuilt or restyled. What follows is what’s actually in the file, read page by page, and what a working designer can expect once it opens in InDesign.

    Download the kit from Adobe Stock.

    Please note that this template requires Adobe InDesign to be installed on your computer. Whether you use Mac or PC, the latest version is available on the Adobe Creative Cloud website—take a look here.

    Adobe InDesign Welcome Kit Presentation Template by E-Type. Download the kit from Adobe Stock.

    What Is a Welcome Kit Presentation Template, Exactly?

    A welcome kit presentation template is a pre-built slide system that agencies and freelancers send to new clients at the start of a project. It usually covers who the studio is, what the engagement includes, and what happens next. Unlike a pitch deck, it isn’t selling the work. It’s confirming the work after the contract is already signed.

    That distinction matters for how you judge this template. A welcome kit doesn’t need to persuade anyone. It needs to look organized, feel personal, and get out of the way fast. E-Type’s version is designed specifically for that narrower job.

    Inside the 16 Pages: A Breakdown That Matches the Index

    The deck opens with a cover slide, then an index page listing six sections: About Us, Case Study, Partnerships, The Team, Manifesto, and Feedback. That index isn’t decoration. Every page after it maps directly to one of those six categories, which is rarer than it sounds in template packs this size.

    The Full Page List

    • Cover (“Welcome Kit”)
    • Index
    • What We Do
    • About Us
    • Objective (mission, vision, values)
    • Case Study
    • A full-bleed quote slide for a client testimonial
    • Partnerships (four-client grid)
    • Creators (team intro)
    • The Team (four-person photo grid)
    • Manifesto
    • Offer (a pricing tier table, four rows)
    • Brief Project
    • Feedback
    • Statistics (three metric blocks)
    • Get In Touch (contact details)

    Sixteen slides, zero filler pages. Plenty of template packs pad the count with duplicate layouts wearing a different color. This one doesn’t do that. Every slide earns its spot in the sequence.

    How the Template Is Built: What the File Structure Tells You

    Both listings confirm the color system runs on a swatch palette rather than hardcoded fills, which means updating brand colors should take minutes, not hours. Change the swatches once, and the pink, coral, and mint blocks update across all 16 pages. That’s standard practice for a well-built template, though plenty of template packs skip it and force a manual hunt through every frame instead.

    The listings also confirm photo placeholders sit on their own layer, separate from text and background elements. That layer separation is what makes InDesign’s Content Grabber tool useful here: click an image frame, and the grabber lets you swap the photo without disturbing its crop or position. None of the preview photography ships with the download. That detail trips up first-time template buyers constantly, so it’s worth repeating.

    Adding Motion With the Animation Panel

    Because this template targets screen presentations instead of print, the Animation panel (Window > Interactive > Animation) is where it earns a second look. Anyone comfortable with that panel can stagger headline text so words appear in sequence or fade a photo in gently rather than having it snap into place. Neither effect is built into the file by default. You add both yourself, per object, through motion presets and per-frame delay settings.

    If you’ve never touched the Animation panel, budget an extra hour to learn it. The template doesn’t walk you through that part.

    Where This Welcome Kit Presentation Template Wins and Where It Doesn’t

    The typography does the heavy lifting here. Bold, condensed, uppercase headlines against a warm off-white background give every page a consistent editorial weight, even before a single word of real content goes in. Pair that with free fonts linked directly in the included help file, and you avoid the usual font-licensing scramble that kills momentum on a Friday afternoon deadline.

    Where it struggles: the Offer slide assumes a four-tier pricing structure. If your agency sells one flat retainer, you’ll either delete three rows or stretch thin content across a layout built for density. The Team and Creators slides also assume four people. Solo freelancers will need to rebuild those grids from scratch rather than just deleting a box.

    The Six-Screen Trust Arc: A Framework I Use for Judging Welcome Decks

    I’ll be direct about this: the Six-Screen Trust Arc isn’t an industry term. It’s a shorthand I started using this year after comparing a dozen welcome kit presentation templates side by side, and it’s useful enough to name here.

    The idea is simple. The first six screens of any client-facing welcome deck should move through a specific order: cover, index, who-we-are, what-we-do, mission, and proof. Skip the proof slide, or bury it past screen ten, and the client starts asking questions the deck should have already answered. E-Type’s template follows this arc almost exactly, placing the case study at position six. That placement alone suggests whoever built this has sat through real client onboarding calls.

    A second shorthand worth naming: the Narrative-to-Data Ratio, which is just the proportion of storytelling slides (About Us, Manifesto, Feedback) against pure data slides (Statistics, Offer). This deck runs roughly 70/30 in favor of narrative. That’s the right ratio for a welcome kit. A sales deck should flip it.

    Who Should Buy This Welcome Kit Presentation Template

    Small design studios and solo creative directors get the most value here, specifically teams onboarding clients onto retainer work rather than one-off projects. The vertical 1080 x 1920 format also fits directly into screen-share presentations and Instagram Stories exports, which agencies increasingly use for onboarding content.

    Skip it if your pricing model doesn’t fit four tiers, or if you need a landscape deck for a projector presentation. E-Type sells a separate landscape version of the same system, worth checking if that’s your format.

    Quick Reference: Welcome Kit Presentation Template Specs

    SpecDetailDesignerE-Type (Adobe Stock contributor)FormatAdobe InDesign (.indd / .idml)Page count16 fully editable pagesDimensions1080 x 1920 px (vertical, screen-ready)FontsFree fonts, linked in the included help filePhotographyPreview only, not included in the downloadColor systemSwatch-based, editable in one clickAnimationManual, via InDesign’s Animation panelBest forAgency and freelance client onboarding decks

    Where to Find It

    The kit is available on Adobe Stock. Pricing on Adobe Stock runs through its standard template licensing, either a subscription credit or a single-template purchase, so check current terms before buying.

    Download the kit from Adobe Stock.

    Frequently Asked Questions

    Does the welcome kit presentation template include the stock photos shown in the preview?

    No. The preview photography is for display only. You add your own images to the 16 placeholder frames after purchase.

    Can I edit this welcome kit presentation template in Canva instead of InDesign?

    Some versions of E-Type’s welcome kit templates ship with a Canva file alongside the InDesign version. Check the specific listing you’re buying, since not every variant includes both formats.

    Is the 1080 x 1920 format good for Instagram Stories or LinkedIn carousels?

    Yes. That vertical ratio matches Instagram Stories natively and works well as an exported image carousel for LinkedIn, though you’ll need to export each page individually.

    Do I need InDesign experience to use this template?

    Basic experience helps, especially for the animation panel. Swapping text and photos requires almost no InDesign knowledge, since the Content Grabber handles image replacement without disturbing the layout.

    How do I add the fade and sequential text animations to the slides?

    Open Window > Interactive > Animation, select a text or image frame, then assign a motion preset like Fade In or Appear. Set the delay for each object manually to control the sequence.

    Browse WE AND THE COLOR’s Templates category for more.

    Subscribe to our newsletter!

    #AdobeInDesign #AdobeStock #brandKit #InDesignTemplate #presentation #presentationTemplate #welcomeKit
  28. In 2016, Microsoft released a chatbot called Tay on Twitter. Within 16 hours, it had been shut down for posting racist, sexist, and antisemitic content. The postmortem blamed “coordinated attacks” by trolls. That framing was technically accurate and completely wrong. Tay didn’t break. Tay did exactly what it was designed to do: learn from the conversation it was placed in. The conversation it was placed in was a cesspool. Tay was a mirror, and the mirror worked perfectly.

    Nearly a decade later, we’re still having the wrong conversation about what models reveal. The discourse treats AI as an entity with properties: is it aligned? Is it safe? Is it biased? These are questions about the mirror, not the reflection. The more interesting questions are about what the reflection shows us: about our data, our preferences, our blind spots, and the things we didn’t know we were collectively doing until a model did them back to us at scale.

    Here’s the claim I want to test: AI models are not windows into machine intelligence. They are windows into human behavior, aggregated, compressed, and served back to us with a confidence that makes us mistake the reflection for an external truth. The most important thing AI reveals is not what machines can do. It’s what we already do, at a scale we’ve never been able to see before.

    The Mirror Was Always There. AI Just Made It Legible.

    Humans have always been reflected back to themselves by their tools, but the reflection was always slow and partial. A novel reflected its author. A newspaper reflected its readership. A city reflected its inhabitants. But the reflection took years to develop, and it was filtered through gatekeepers who decided what was worth showing.

    AI compresses the reflection cycle. A model trained on a year of internet text reflects that year back to us in hours. A model fine-tuned on user feedback reflects user preferences back to us in a single deployment. The mirror is faster, wider, and less filtered, and it shows us patterns we couldn’t see before because we never had a technology that could aggregate human behavior at that scale and serve it back in a coherent form.

    What does the mirror actually show? Let me give you specific examples, because the abstract version is useless.

    1. The distribution of human patience.

    When you train a model on human conversations, you see how quickly humans give up on unclear interactions. You see the average number of turns before a user rephrases, the average number of messages before a user abandons, the average tolerance for a response that doesn’t directly answer the question. These distributions are not what most designers assume. Users are more patient than designers think in some contexts and less patient in others, and the patterns are consistent across languages and cultures in ways that surprised everyone who measured them.

    1. The shape of human curiosity.

    When you train a model on search queries, you see the actual topology of human curiosity. Not what people say they’re curious about, but what they type at 2 AM. The distribution is flatter, stranger, and more repetitive than any survey would suggest. A small number of questions account for a huge fraction of queries, and the long tail is enormous. This is the mirror showing us that curiosity is much more concentrated than our cultural narratives about it suggest.

    1. The limits of human consistency.

    When you train a model on human judgments, you discover how inconsistent humans actually are. The same person, asked the same question in a slightly different framing, gives a different answer at rates that would be alarming if we hadn’t built a whole society on the assumption that we’re consistent. The mirror shows us that human judgment is heavily context-dependent, and that most of what we call “preferences” are actually “situational responses” that we mistake for stable traits.

    1. The distribution of human writing.

    When you train a model on human text, you discover that a small fraction of the corpus accounts for a large fraction of the unique content. Most writing is derivative of a smaller set of writing. The mirror shows us that the diversity we imagine in human expression is partially an illusion, sustained by the fact that we never had to measure it before.

    These aren’t facts about models. They’re facts about us, revealed by models.

    The Sacred Cow: “AI Has Biases That We Should Remove”

    Here’s the belief I want to dismantle, and it’s the load-bearing assumption of nearly every AI safety and fairness conversation.

    The claim goes like this: AI models have biases, biases are bad, and the solution is to remove them.

    This framing is wrong, and it’s wrong in a way that produces bad engineering and worse policy.

    Here’s the problem. AI models don’t have biases. They reflect biases. The biases are in the training data, and the training data is a sample of human behavior. Removing the bias from the model doesn’t remove the bias from the data. It just hides it.

    What actually happens when you try to “remove bias” from a model:

    You filter the training data to exclude certain patterns.

    You fine-tune the model to refuse certain outputs.

    You add safety layers that override the model’s default behavior.

    Each of these moves makes the model appear less biased on the specific metrics you’re measuring, while leaving the underlying distribution intact. The model still learned the biased pattern. It just learned to hide it. And the hiding is now invisible, which makes it harder to study, not easier.

    The contrarian take: the mirror is more useful when it shows us the ugliness, not when it hides it. A model that reflects the full distribution of human behavior, including the parts we don’t like, is a tool for understanding what we’re actually doing. A model that’s been scrubbed of everything uncomfortable is a tool for pretending we’re not doing it.

    This doesn’t mean we should deploy unfiltered models. It means we should distinguish between two different goals: building a model that behaves well (which requires filtering) and building a model that tells us the truth about human behavior (which requires not filtering). These are different products for different purposes, and conflating them gives us the worst of both.

    If you want to understand human behavior, study the unfiltered mirror. If you want to build a product that behaves responsibly, filter the outputs. Just don’t pretend the filtered outputs tell you what humans are actually like.

    What the Mirror Reveals About Builders

    The mirror doesn’t just show users. It shows builders.

    Here’s the part that gets less attention and matters more over time. The models we build reflect not just the data but the choices we make about the data. Every decision about what to include, what to exclude, what to weight, and what to ignore is a decision that shapes the reflection.

    Consider what a model reflects about the team that built it:

    The choice of training data reflects the team’s assumptions about what “counts” as legitimate text. Mostly English? Mostly Western? Mostly published? Each of these is a choice that encodes a worldview.

    The choice of fine-tuning data reflects the team’s assumptions about what good behavior looks like. Helpful? Refuse? Deferential? Each of these is a choice.

    The choice of evaluation reflects the team’s assumptions about what success looks like. Accuracy? Safety? Engagement? Each of these is a choice, and most teams never state them explicitly.

    The choice of deployment reflects the team’s assumptions about who gets to use the model and how. Free? Paid? API? Consumer? Each of these shapes who is reflected in the next round of data.

    The mirror, in other words, is not just reflecting human behavior. It’s reflecting the specific humans who built the model, through the specific choices they made about what to reflect.

    If you want to know what a model will do, don’t read the model card. Read the training data provenance, the fine-tuning guidelines, the evaluation criteria, and the deployment terms. These are the mirrors of the team’s priorities, and they’re more informative than any technical spec.

    What the Mirror Reveals About Users

    The mirror also shows what users are actually doing, which is often different from what they say they’re doing, and very different from what product teams assume.

    Concrete examples:

    Users are more repetitive than they think. In many AI products, a small fraction of users ask a small fraction of questions, over and over. The “long tail” of use cases is often thinner than the design team imagines.

    Users are more forgiving than product teams assume. When a model makes a mistake, users often correct it and keep going. The assumption that mistakes will cause churn is often wrong, especially for high-value use cases where the model is genuinely useful.

    Users are less interested in features than product teams hope. The features that get talked about in product reviews are often not the features that drive usage. Usage is dominated by a small number of core workflows, and the rest is noise.

    Users are more sophisticated about the model’s limits than product teams assume. Users develop intuitions about where the model is reliable and where it isn’t, and they route their usage accordingly. The “trust” problem is often a UI problem: the model doesn’t signal uncertainty, so users don’t know when to trust it.

    The mirror is useful for product teams because it shows them what users are actually doing, not what the team imagines users are doing. The gap between those two is where most product mistakes live.

    What To Actually Do

    Three moves, concrete enough to start on Monday.

    1. Study the failures, not just the successes.

    When you evaluate a model, look at the cases where it failed, and ask what the failure reveals about the data. A model that hallucinates on certain topics is telling you that the training data on those topics is thin. A model that refuses certain requests is telling you that the safety tuning has a specific shape. The failures are the mirror at its most useful.

    A simple starting point:

    def failure_analysis(model, eval_set):
    failures =
    [] for example in eval_set:
    output = model.generate(example.prompt)
    if not evaluate(output, example.expected):
    failures.append({
    “prompt”: example.prompt,
    “output”: output,
    “expected”: example.expected,
    “failure_type”: classify_failure(output, example.expected),
    })
    return summarize_by_type(failures)

    The summary is more informative than the pass rate. The pass rate tells you how good the model is. The failure summary tells you what the model has learned and what it hasn’t, which is what you need to know to improve it.

    1. Audit the training data, not the output.

    If you want to understand a model’s behavior, read a random sample of 500 training examples. Not the cleaned, curated examples that appear in the data card, but the raw examples. You’ll learn more about the model’s behavior in an afternoon than you’ll learn from a month of prompt engineering.

    1. Distinguish between the model you want and the mirror you need.

    If you’re building an AI product, decide explicitly whether you’re building a product that behaves well or a product that tells the truth about human behavior. These are different goals. A product that tells the truth might be more useful for research and less useful for consumers. A product that behaves well might be more useful for consumers and less useful for research. Pick one, and be honest about which one you’re building.

    The Mental Model

    Here’s the lens I want you to keep.

    AI models are mirrors, not minds. They reflect what we put into them, which is a sample of human behavior, shaped by the choices of the people who selected the sample. The reflection is more accurate than any survey and less accurate than any single conversation, and it reveals patterns we couldn’t see without it.

    The interesting question is not whether the mirror is biased. It is. The question is what we want to do with the reflection. We can hide the uncomfortable parts, which makes us feel better and teaches us nothing. Or we can study them, which makes us uncomfortable and teaches us a lot. The choice is ours, and it’s available every time we build a model, curate a dataset, or evaluate an output.

    The mirror is not a threat. It’s a discovery. The question is whether we’re brave enough to look at what it shows us.

    What’s your read? If you’ve studied model behavior, what’s the most surprising thing the mirror has shown you? And if you’ve built models, what’s the choice you’ve made about what to hide and what to reflect? Drop it in the comments. I’m genuinely curious what patterns others are seeing.#ai #promptengineering #chatgpt #software #coding #development #engineering #inclusive #community
    The AI Mirror: What Models Reveal About Us, Not About Themselves

  29. For two weeks, Claude planned and reviewed my code changes and Xiaomi's MiMo-V2.6-Pro wrote them. That was 95 work orders across 14 of my repos, and 62 of them merged. At list prices, MiMo's side of those 62 changes cost $14.22. The same tokens at Claude Opus 5.5 prices come to $355.

    The catch is time. A merged change took 52 minutes from order to merge (median). MiMo was working for less than half of that.

    The setup


    A dispatcher I wrote (about 10,000 lines of stdlib Python) runs each order in its own git worktree and branch, inside a macOS seatbelt sandbox that can only write to that worktree. Claude writes the order, MiMo implements it and runs the project's checks, Claude reviews the diff and either sends it back with feedback or merges it locally. Nothing gets pushed without me.

    Every order leaves a state file and the worker's full event log, with timestamps and token counts for each model call. All the numbers below come from those files, for orders created 11 to 23 October 2026.

    Where the time went


    I could rebuild the full timeline for 33 merged orders (four more sat overnight and I left them out).

    StageShare of wall-clockMedianWaiting in the queue5%0.1 minMiMo working49%30.7 minBetween rounds (review, feedback, waiting)27%6.4 minLast round finished → merged20%11.2 min


    The orders that passed on the first round make it plain. MiMo worked for 16 minutes (median) and the order took 42 minutes end to end.

    Most of the extra 26 minutes is the orchestrator not looking. Its instructions said to check the queue with sleep 595, then review, then merge. The long interval was there to save Claude tokens. It also left up to ten minutes of dead time every time a worker finished. The merge step adds more: it rebases onto whatever landed in the meantime and reruns the full test suite.

    None of this is the model's fault. It's plumbing.

    Is the model itself slower?


    Less than I expected. I compared MiMo's turns with Claude Opus 5.5 turns from my own Claude Code transcripts. They're different tasks, so read this as a rough comparison, not a benchmark.

    Per model callMiMo-V2.6-ProClaude Opus 5.5Calls measured6,6404,537Seconds per call, median6.77.9Seconds per call, mean21.813.2Output speed47 tok/s81 tok/sContext per call, median153K467K


    The typical call is as fast. The slow ones are slower, which pulls the mean up. A MiMo attempt ran 37 calls and 15 minutes (median).

    The context column matters later. MiMo starts every order from a fresh worktree, so it carries about a third of the context my long Claude sessions do.

    The real gap: rework


    Only 24 of the 62 merged orders (39%) went through on the first round. The rest needed one to six more. Each round means another attempt, another review and another wait, and the token bill climbs fast:

    Rounds to mergeOrdersMedian tokens1243.6M2208.9M3814.8M4 or more1031.0M


    I read the review feedback that sent orders back. Nearly all of it falls into five groups:

    1. Failing silently: a missing column, a join that matched zero rows or a button that wasn't found, all treated as success.
    2. Data edge cases: duplicate rows, a date that's object on one side and str on the other, and tickers like NA and NULL that pandas quietly reads as NaN.
    3. Tests that can't fail. One asserted that a static header string was present in the output. Another wrote into the repo's real output folder. One took 113 seconds against a 60-second limit.
    4. New behaviour with no test, or a runbook left describing the old behaviour.
    5. Matching too loosely: a substring check for selected that also hits unselected, or "click the first OK button on the page".

    None of these are hard to get right. They weren't in the order, and the worker didn't go looking for them. A stronger model goes looking more often. That's most of what you pay Claude for.

    The cost math


    Here's the token mix across the 62 merged orders: 97.8% cache reads, 0.56% output. An agent re-reads its whole context on every call, so the token count is roughly calls × context size. It has little to do with how much code gets written.

    That makes the cache-read price the one to compare, and the headline price misleads:

    Per 1M tokensMiMo-V2.6-ProClaude Opus 5.5RatioInput$0.435$4.009×Cache read$0.0036$0.2056×Output$0.87$20.0023×


    On my mix the blended ratio is 25×. A merged change cost MiMo $0.17 at list price (median) against $3.83 for the same tokens at Opus prices. Even the orders that took four or more rounds stayed far cheaper than handing the job to Claude. And Claude doing the work inside my planning session would carry three times the context per call, so its real bill would be higher still.

    I pay for both through subscriptions, not per token, so list prices are a yardstick here, not my invoice. Xiaomi's Token Plan page doesn't say how cache hits count against the monthly quota. Check that before you rely on a ratio.

    The money that actually leaks is on the orchestrator side. Every time Claude wakes up to poll, it re-reads its own large context. Ten polls on a 300K-token session is 3M Claude tokens spent on checking whether anything happened.

    What I'm changing


    Three changes, all dispatched to MiMo this morning (yes, through the same queue):

    • A wait command that blocks until an order changes state and returns at once. It's read-only, so the orchestrator can run it over a mounted path from a VM. That replaces sleep 595.
    • An automatic review as soon as an order's checks pass, run by Claude Sonnet in headless restricted mode. That means no shell, file reads confined to the review worktree and no MCP servers. The verdict is waiting by the time the orchestrator looks.
    • A self-review section in every implementation prompt built from the five groups above, plus an order template with a mandatory "Failure modes" section. Cheap tokens make a self-check worth running.

    Two of the three merged after two review rounds. The reviewer change took nine. It runs outside the sandbox, and for four rounds in a row a reviewer found another way a file planted in the repo could get executed through PATH. In the end I dropped the PATH lookup instead of patching it again. That one order used 127M tokens, about $1.02 at MiMo list prices. At Opus prices the same tokens would have cost more than all 62 orders above did on MiMo.

    The aim is to get first-round merges from 39% to about 60% and take 20 to 25 minutes off a typical order. I'll post the before and after once there are enough orders to compare.

    Limits


    • One person, 14 repos, two weeks, mostly Python. Your mix of work will differ.
    • The Claude timing comes from different tasks than MiMo's, so it says something about speed and nothing about quality.
    • Rounds are counted from the worker's event logs. The wall-clock breakdown covers the 33 orders with complete timestamps.
    • Prices are list prices checked on 25 October 2026: Xiaomi's rates as listed on OpenRouter, Anthropic's from its pricing page.

    If you're splitting work between a planner model and a cheaper worker, measure the gaps between steps before you shop for a faster model. I do this kind of measurement as a routing audit ([email protected]). If you've measured your own split, I'd like to compare numbers.#ai #llm #agents #productivity #software #coding #development #engineering #inclusive #community
    I routed two weeks of coding to a model 25x cheaper than Opus. The model wasn't the slow part.

  30. Meta's personal AI agent, Muse, launched in Japan on October 23, 2026 — its first market outside North America.

    That one sentence matters more than it looks. A month ago, the proactive-agent race was an American story. Now it has a second country, a second language market, and a clear signal about where this contest is actually fought: not just on model quality, but on distribution geography and connectors.

    What launched in Japan


    Muse debuted in the US and Canada in September. Japan is the first expansion beyond North America, and it arrives on all three surfaces that matter: iOS, Android, and the web. Basic functions are free, with subscriptions unlocking more.

    That is the shape of the whole category right now. Free to try, paid to go further, and rolling out country by country rather than everywhere at once. If you are building anything that plugs into these agents, the rollout map is your roadmap — your users in Tokyo just joined your users in Toronto.

    The field, in one sweep


    Muse did not land in an empty market. Within the last few weeks, every major lab has put its own proactive agent on the board:

    Anthropic's Claude Duet opened as a research preview on October 21, 2026. It is waitlisted, limited to US Pro and Max subscribers for now, built on Claude Opus 5.5, and it leans hard on connections: more than 6,000 connectors, a morning brief, and — the detail developers should steal — it asks before it sends, pays, or deletes anything.

    OpenAI's Dots launched in late September for ChatGPT Pro and Business Premium users, bringing proactive, multi-step work to the largest existing chatbot audience.

    xAI's Grok Bot has been out since August 11, built around multi-agent teams rather than a single assistant doing everything.

    Four labs, four agents, four different bets. And one shared pattern: none of them is simply open to everyone yet.

    Why this is about geography and connectors now


    Here is the honest read, based on the announcements and coverage rather than hands-on testing: the models are no longer the differentiator. Every lab has a strong model. What differs is who can reach users, where, and what the agent can actually touch once it gets there.

    Japan is Meta's answer to the reach question. Duet's 6,000-plus connectors are Anthropic's answer to the touch question. Dots' bet is that the ChatGPT audience itself is the distribution. Grok Bot's bet is that teams of agents beat one generalist.

    For developers, that reframes the work. The winning integration is probably not "support the smartest agent." It is "support the agent your users already have, in the country they live in, with the tools they already use" — and design your permission model like Duet does, where the agent checks before it does anything irreversible.

    That last point deserves emphasis, because it is where this whole category will win or lose trust. An agent that sends, pays, or deletes without asking is a liability with a nice voice. An agent that asks first is a colleague. Duet's rule — ask before send, pay, or delete — should be the default every developer demands from every agent they build on, regardless of which lab wins.

    The honest catch


    Every one of these agents is still gated. Muse is in three countries. Duet is waitlisted and limited to US Pro and Max subscribers. Dots sits behind Pro and Business Premium plans. Grok Bot aside, "proactive AI for everyone" is a headline, not a reality — yet.

    So do not rebuild your product around any single agent this week. Build the connector layer once, keep the permission checkpoints yours rather than the agent's, and watch the rollout maps. The lab that reaches your users' country with the connectors your product needs will pick your winner for you.

    What to watch next


    Three things, in order. First, which country Muse enters next — the pace of that map tells you how fast Meta thinks it can scale this. Second, whether Duet's waitlist opens wider, and whether its connector count becomes the number every rival has to match. Third, whether any lab drops the gating entirely and goes for raw reach. The first one to do that changes the race overnight.

    The agent war went global this week. It just has not gone universal yet — and that gap is where developers still have time to get ready.

    Based on the announcements and coverage: MacRumors (October 21, 2026) on Claude Duet, GenZ NewZ (October 24, 2026) on Muse in Japan, and AI Stack Crunch (October 23, 2026) on the wider agent roundup. No hands-on testing is claimed in this article.

    FAQ


    When did Meta's Muse launch in Japan?
    October 23, 2026 — its first market outside North America after the September debut in the US and Canada.

    What platforms is Muse available on?
    iOS, Android, and the web, with basic functions free and subscriptions for more.

    What is Anthropic's Claude Duet?
    A research preview opened October 21, 2026, waitlisted and limited to US Pro and Max subscribers, built on Claude Opus 5.5, with 6,000-plus connectors, a morning brief, and a rule of asking before it sends, pays, or deletes.

    What are OpenAI's Dots and xAI's Grok Bot?
    Dots launched in late September for ChatGPT Pro and Business Premium users. Grok Bot launched August 11, built around multi-agent teams.

    Why does the Japan launch matter for developers?
    Because the contest is now about distribution geography and connectors, not just model quality — and every agent in the race is still gated by region, waitlist, or plan.#ai #agents #meta #automation #software #coding #development #engineering #inclusive #community
    Meta's Muse Just Landed in Japan — and the Proactive Agent War Just Went Global

Share on Mastodon

Enter the server where you have an account.