home.social

Search

56 results for “cheukting_ho”

  1. During a pre-install check on a GBase Database(GBase 8a MPP Cluster) environment running Kylin V10, I found a familiar configuration issue: Transparent Huge Pages (THP) was still set to always.

    The services could start, but bulk-load performance was inconsistent. With three machines configured differently, the slowest node became the first place to investigate.

    THP was one potential factor worth checking before spending hours troubleshooting database performance.

    What Is Transparent Huge Pages?


    Linux Transparent Huge Pages allows the kernel to use larger memory pages, commonly 2 MB instead of 4 KB, without requiring applications to manage huge pages explicitly.

    The potential benefit is fewer Translation Lookaside Buffer (TLB) misses. However, THP can also introduce memory compaction, allocation latency, and background activity that affect latency-sensitive workloads.

    For analytical databases such as GBase Database(GBase 8a), large memory allocations may occur during operations such as hash aggregation, sorting, and bulk loading. Depending on the kernel and workload, THP-related activity can contribute to performance variability.

    This does not mean THP always slows down a database. It means the setting should be validated against the database's deployment requirements and workload.

    1. Check the Current THP Configuration


    Inspect the active settings:

    cat /sys/kernel/mm/transparent_hugepage/enabled
    cat /sys/kernel/mm/transparent_hugepage/defrag

    Example output:

    always madvise

    [never]The value inside square brackets is the active setting. In this example, THP is set to never.

    If you see:

    [always] madvise never

    THP is configured to always.

    Check whether huge pages are being used during a workload:

    grep -E 'AnonHugePages|ShmemHugePages|FileHugePages' /proc/meminfo

    Compare the values before and during bulk loading. AnonHugePages can help indicate anonymous memory backed by huge pages, but it does not independently prove that THP caused a performance issue.

    2. Disable THP Temporarily for Validation


    If the GBase Database installation guide for your release recommends disabling THP, you can apply the change at runtime:

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag

    These commands require root privileges. The settings generally do not survive a reboot.

    After applying the change, verify the active values again:

    cat /sys/kernel/mm/transparent_hugepage/enabled
    cat /sys/kernel/mm/transparent_hugepage/defrag

    Then compare the database's behavior under the same workload and conditions. Check load duration, latency variation, memory utilization, and relevant system logs rather than assuming that a configuration change guarantees a performance improvement.

    3. Make the Configuration Persistent


    For a persistent configuration, use the method supported by your Linux distribution and kernel.

    Some environments support systemd services, boot scripts, kernel command-line parameters, or tuned profiles. Their behavior and syntax vary.

    For example, on a system where /etc/rc.d/rc.local is supported and executed during boot, the following commands may be used:

    # Add to /etc/rc.d/rc.local
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag

    If necessary, make the script executable:

    chmod +x /etc/rc.d/rc.local

    Do not assume this method works on every distribution. Validate the boot mechanism and check whether another service or tuned profile overrides the setting.

    After rebooting, confirm the active configuration again. Repeat the check after changing system profiles or applying OS updates.

    4. Validate Every Node in the GBase Database Cluster


    A configuration that is correct on one machine may be wrong on another.

    For a multi-node GBase Database deployment, include THP validation in the pre-install checklist and provisioning automation.

    At minimum, check:

    • Active THP settings on every node.
    • Consistency of kernel and OS versions.
    • Whether system profiles override the setting.
    • Memory behavior during representative workloads.
    • Database-specific recommendations for the installed release.

    Explicit Huge Pages are a separate configuration choice. They require appropriate memory reservation and database configuration, so do not enable them without checking the product documentation and operating system requirements.

    Final Takeaway


    Transparent Huge Pages is a small OS setting with potentially significant implications for database performance consistency.

    For GBase Database(GBase 8a MPP Cluster), the practical lesson is to validate THP before installation, keep cluster nodes consistent, and measure the impact under a representative workload.

    A repeatable pre-install check is more reliable than discovering configuration differences during production troubleshooting.

    TIL question: Do you disable THP by default for database servers, or do you benchmark it separately for each workload?

    Keywords: GBase Database, GBase 8a, Transparent Huge Pages, THP Linux, database performance tuning, Kylin V10, Linux pre-install checks#gbase #database #数据库 #todayilearned #software #coding #development #engineering #inclusive #community
    TIL: Why GBase Database Deployment Often Requires Disabling Transparent Huge Pages


  2. October 23rd

    Ketchup

    How do you make sure you deliver on your writerly promises?

    Checking the draft, checking it twice, and checking it a third time. Then again.
    My feelings change over time, so I need to keep track of what, and how I've written before. It's absolutely necessary to keep the same tone throughout the whole work, otherwise the readers may get upset.

  3. You know what is odd when I blabbed about um how to do bot bypasses on LinkedIn anthropomorphic made changes. We block your browsers now thanks for ideas lol. You solved how people are cheating us out of promos driving up cost for free

  4. Recruiting recounts of experiences:

    1) The one where they knew how to test, confidently, until made to test and showed up clueless

    2) The one where they lied about state of their studies and got caught in checking the papers

    3) The one where they could test, as long as someone else tells exactly what to test

    4) The one where they did not want to answer my technical question, and told me the reason was they assumed I was not technical.

    5) The one where they sent me an email after interview, comparing me to their wife to explain why they did not do well in an exercise

  5. Any experts in the totality checker (or totality checking in general?) have any hints on a simple way to convince the computer that append for finger trees is total?

    codeberg.org/bss/idris-sized-s

    The above code simply asserts it, which is also what I had to do last time in my type-aligned library.

    It's "obviously" true to me, because the sizes for both the left and right arguments are decreasing: the left argument is at least missing the head and the right argument is at least missing the tail. But, I can't figure out the assert_smaller invocations to use to show that to the computer.

    I'm not even sure how to begin to approach this using Accessible or WellFormed, since the recursive call is non-uniform: it's on sequences of 2-3 nodes instead of sequences of individual elements.

  6. Join us for an Oct. 28 roundtable in which editors from publications across Canada will speak of the changing landscape of news and how newsroom practices such as fact-checking, generating headlines and more are being affected. Sign up now: webinars.editors.ca/upcoming_w

    This roundtable is available at a discounted rate as part of the Editors Canada Training Day package, but you can also register for it as an individual session (member price: $60 / non-member price: $100).

  7. 100% Remote | Domain Expert- Politics

    Pay discussed during screening, 8-week contract with 4 hours PST overlap daily
    ✅ Prompting on elections, governance and public policy
    ✅ Judging model answers for accuracy and nuance
    ✅ Building benchmarks and adversarial test cases
    What source do you trust most when a political claim needs checking?

    👉 Apply here: nearskill.in/jobs/domain-exper

    #GenAI #PoliticalScience #Hiring #RemoteJobs

  8. CW: Only 18+ NSFW Nudes
  9. TO MY SPONSORS

    if you have ever donated me money, you can have your nick/name on the last page of printed version of thiss, just sent me an email (er2 <at> kamiokan <dot> de) with nick you want to be printed and info how did you donate (i won’t be checking that, just don’t lie ok.)

    i will start releasing issue 2 at ~midnight, one page a day.

    https://kamiokan.de/entropysrotoscope

    #kamiokande #entropysrotoscope #comic #fediart #art #unix_surrealism

  10. If you have ever voted the way your family always did, that's a fine place to start. Plenty of us learned it at the table.

    It's also worth checking once whether those picks still match what you care about today. Maybe they do. Maybe one surprises you. The choice stays yours.

    No time to check those picks? See how your members of Congress voted and who paid for their campaigns, in about 10 minutes: voterchoice.vote

    #Congress #Midterms2026 #CivicEngagement #VoterChoice

  11. Now, this calculator uses general-purpose chips (shift registers, etc), but the architecture is still pretty bespoke and everything is done in hardware, including some diode logic, etc. So, it has a number of idiosyncrasies:

    1) No leading- or trailing-zero suppression, as you can see.

    2) No negative numbers. 0 - 1 = 999999999999. You can, however, flip sign by pressing =- and get the positive equivalent of the displayed negative result.

    3) No floating-point input. It has floating point output, but displays floats < 1.0 incorrectly because there's no circuitry to detect the need for a leading zero. 1 / 3 = 333333333333 instead of 0.33333333333.

    4) Absolutely no error-checking. It enters unpredictable states on division by zero, multiplication overflow, etc.

    On the upside, it has reset-on-power-on circuitry, which wasn't standard on many calculators of the era.

    Computing used to be pretty hard!

  12. Windows Server 2016 reaches end of extended support on January 12, 2027. If you still run it on EC2, the clock is ticking.

    I recently upgraded 10+ EC2 instances in place to Windows Server 2022. An agent did the pre and post validation, and a human approved every step. It saved us at least a few hours of checking. Also, every server got the same checks.

    Testing taught me a few things.

    First, pin the edition. A plain setup command stalled on the edition page, and SSM can't click a button. Now the agent detects the edition and a human confirms it.

    Disk space was next. One test run failed because C: was too full. We grew the root volume from 30 GB to 50 GB. Today, 20 GB free is a hard gate. And never copy the media onto C:.

    Know your rollback. Restoring an AMI gives you a new instance ID and IP. Replace Root Volume keeps both. So take a direct root snapshot before you start.

    Go canary first. Upgrade one server, check it, then do the rest. Also, test the app and not only the OS. Seeing the new build number tells you very little.

    One more thing. After the upgrade, our patch tool still showed the old OS version, so patching stalled until it refreshed. Check that early.

    SSM has to be online before anything else. It is the only way in. When it wasn't, the agent helped troubleshoot it first.

    Still on 2016? What's your plan?#aws #ec2 #microsoft #awscommunitybuilders #software #coding #development #engineering #inclusive #community
    Windows Server 2016 is going end of life: how I did in-place upgrades on EC2 with an agent

  13. When I started out, I thought being a good developer meant knowing everything. Every framework, every algorithm, every command. I pictured the senior engineers as walking encyclopedias.

    Then I watched one of them Google “how to undo a git commit” in front of the whole team. Nobody blinked.

    That moment changed how I saw this job. Here’s what I’ve learned since.

    1. Nobody remembers everything


    Googling isn’t cheating. It’s the job. The skill isn’t memorizing syntax, it’s knowing what to search for and recognizing a good answer when you see one.

    I used to feel guilty every time I opened Stack Overflow. Now I keep a notes file of the things I look up more than twice. Future me says thanks.

    2. Your first solution doesn’t have to be elegant


    I once spent three days designing the “perfect” architecture for a feature that, it turned out, five people used. A messy version that worked would have shipped in an afternoon.

    Make it work first, then make it clean, and only if it matters. Shipped and imperfect beats perfect and imaginary every time.

    3. Reading code is a bigger skill than writing it


    Most of your day won’t be spent writing brand-new code. It’ll be spent understanding code someone else wrote, sometimes years ago, sometimes you.

    Get comfortable being lost in a codebase. Follow one request from start to finish. Add a few console.log or print statements. Break things on purpose to see what happens. It feels slow, but it’s the fastest way to level up.

    4. Ask questions, but do it well


    I was terrified of looking dumb, so I stayed stuck for hours rather than ask. That was a mistake.

    What works better is a quick message with three parts: what I’m trying to do, what I’ve already tried, and where I’m stuck. Teammates respond faster, and half the time writing it out helps you spot the answer yourself.

    5. Burnout doesn’t announce itself


    It sneaks in. You skip lunch to fix one more bug, you code late “just to catch up,” and one day the thing you loved feels like a chore.

    Log off. Take the weekend. The bug will still be there on Monday, and you’ll fix it in ten minutes with a rested brain.

    6. Soft skills move your career more than you’d expect


    Clear writing, honest updates, and saying “I don’t know, but I’ll find out” make people want to work with you. I’ve seen average coders with great communication get trusted with big projects over brilliant ones nobody could talk to.

    7. Build small things, often


    Tutorials make you feel productive, but building teaches you. Make a tiny tool that fixes an annoyance in your own life. Break it, fix it, put it on GitHub.

    Small projects add up, and they give you real stories to tell in interviews.

    In Conclusion

    You don’t need to know everything. You need to be curious, stay kind to yourself, keep shipping, and keep learning in public. The people you look up to are still figuring it out too. They’ve just gotten comfortable not having all the answers.

    If you’re early in your journey, you’re doing better than you think.

    What’s one thing you wish you’d known when you started? Drop it in the comments. I read every one.#webdev #programming #beginners #career #software #coding #development #engineering #inclusive #community
    What I Wish Someone Had Told Me Before My First Dev Job

  14. I run the WooCommerce store behind a small online clothing shop. Most of the orders are made to order and ship from print partners in several countries, so the delivery promise differs by destination. Google's merchant listings can show that promise, and the return window, right in search results, but only if the product markup says so. WooCommerce's built-in Product schema does not.

    This post walks through adding hasMerchantReturnPolicy and shippingDetails to the offer that WooCommerce already prints, without a plugin.

    What WooCommerce outputs by default


    WooCommerce prints JSON-LD for each product through the WC_Structured_Data class. The offer part comes from generate_product_data(), and before it is added to the markup it passes through a filter:

    apply_filters( 'woocommerce_structured_data_product_offer', $markup_offer, $product );

    That filter is the cleanest place to hook in. It receives one offer array and the WC_Product, and whatever you return becomes the offer in the final JSON-LD.

    The return policy


    Schema.org models returns as a MerchantReturnPolicy. For a fixed return window, Google wants the country it applies to, the category of the policy and the number of days. The shop in this example accepts returns for 30 days.

    function shop_return_policy() {
    return array(
    '@type' => 'MerchantReturnPolicy',
    'applicableCountry' => 'US',
    'returnPolicyCategory' => 'https://schema.org/MerchantReturnFiniteReturnWindow',
    'merchantReturnDays' => 30,
    'returnMethod' => 'https://schema.org/ReturnByMail',
    );
    }

    Add returnFees only if you can state it truthfully for every product. Leaving out a property is better than guessing.

    Shipping details per destination


    Delivery time is split into handling time (the days before the parcel leaves) and transit time. Here processing takes 1 to 5 business days, and transit depends on the region, so the code builds one OfferShippingDetails entry per country:

    function shop_shipping_details() {
    $transit = array(
    'US' => array( 8, 15 ),
    'CA' => array( 8, 15 ),
    'GB' => array( 8, 15 ),
    'AU' => array( 10, 20 ),
    );

    $details = array();
    foreach ( $transit as $country => $days ) {
    $details[] = array(
    '@type' => 'OfferShippingDetails',
    'shippingDestination' => array(
    '@type' => 'DefinedRegion',
    'addressCountry' => $country,
    ),
    'shippingRate' => array(
    '@type' => 'MonetaryAmount',
    'value' => SHOP_SHIPPING_RATE, // your real rate for this destination
    'currency' => 'USD',
    ),
    'deliveryTime' => array(
    '@type' => 'ShippingDeliveryTime',
    'handlingTime' => array(
    '@type' => 'QuantitativeValue',
    'minValue' => 1,
    'maxValue' => 5,
    'unitCode' => 'DAY',
    ),
    'transitTime' => array(
    '@type' => 'QuantitativeValue',
    'minValue' => $days[0],
    'maxValue' => $days[1],
    'unitCode' => 'DAY',
    ),
    ),
    );
    }
    return $details;
    }

    The rate is a constant here on purpose. If the rate differs by country or by cart total, read it from your shipping zones instead of hard-coding one number for everything.

    Hooking it in


    add_filter( 'woocommerce_structured_data_product_offer', function ( $offer, $product ) {
    if ( ! $product instanceof WC_Product || ! $product->is_purchasable() ) {
    return $offer;
    }
    $offer['hasMerchantReturnPolicy'] = shop_return_policy();
    $offer['shippingDetails'] = shop_shipping_details();
    return $offer;
    }, 10, 2 );

    Put this in a small site plugin or in the child theme's functions.php. A site plugin survives a theme switch, which is why I prefer it.

    Checking the result


    View the page source of a product and search for application/ld+json. WooCommerce prints the block near the end of the page. Then paste the product URL into Google's Rich Results Test and into the Schema Markup Validator at validator.schema.org. The first tells you whether the page is eligible for merchant listing features, and the second catches typos in types and property names.

    After a few days, the Merchant listings report in Search Console shows whether Google has picked the fields up across the catalog, along with any products that are missing a required property.#woocommerce #wordpress #php #seo #software #coding #development #engineering #inclusive #community
    Adding return and shipping details to WooCommerce product schema

  15. Artemis Plan Analysis?

    I thought a Cargo Starship was pushing Orion to Lunar Orbit, where Orion would dock with the HLS Starship.
    ‘Maybe Angry is right: the Block 3 HLS Starship will push Orion to Lunar Orbit, where the astronauts will transfer…why wouldn’t they transfer to the HLS in high-LEO…?’

    https://youtu.be/fZ8HF5hY4Sw

    I shared my concerns about risking human astronauts onboard unprepared spacecraft in the previous comment. Previously, I pointed out that the risk of top-heavy landers is not as great as Angry makes it out to be.
    ‘But Angry says it is risky, maybe he is right, but I asked AI if the height of any of the previous landers was in any way the cause of the crash…’
    Previously I commented about refueling at higher LEO, but then I thought it would take too much fuel to get the fuel there. Angry talks about boil-off, which I think is an engineering issue that has been or can be reduced.??
    v3 Starship payload is 100t+, and v4 is 200t+, so who knows how much fuel it can take to LEO?

    Bonsai 27B Prompt:
    Pasted transcript: Write a review of the video as an AI Scientist for a futurist.
    @Web Fact-Checking via Google Search: Share insights about the use of billionaire contractors.

    Bonsai Said:
    🚀 AI SCIENTIST REVIEW: Artemis Acceleration Plan Analysis

    ⚠️ CRITICAL FINDING: ARCHITECTURAL PHYSICS VIOLATIONS

    The video presents a detailed technical critique of NASA’s proposed 2028 lunar landing timeline. My analysis confirms the presenter raises substantially valid engineering concerns, though some claims require independent verification against primary sources.

    ✅ Verified Technical Claims:

    1. Delta-V Budget Crisis: The video correctly identifies that Starship cannot execute the original Apollo-style mission profile (launch to NRH, wait for crew, descend to lunar surface, return to NRO) due to insufficient propellant efficiency in deep gravity wells.
    2. Orbital Refueling Bottleneck: The thermodynamic analysis of liquid cryogenic fuel boil-off is accurate. Passive thermal management limits mean weeks of staging with continuous propellant loss (0.5-1% daily), creating a compounding deficit that requires 12+ rapid launches to fill a single depot.
    3. SLS Limitations: The Space Launch System was never designed to deliver Orion directly to low lunar orbit, only to its planned NRH trajectory. Forcing this creates structural inefficiency.
    4. Dynetics Alpaca Superiority: The historical rejection of Dynetics’ Alpaca lander for SpaceX’s top-heavy design is well-documented and represents a clear example of political/business influence overriding engineering best practices.

    ⚠️ Unverified/Overstated Claims Requiring Independent Verification:

    1. Kathy Leers Conflict of Interest: The claim that the HLS contract awarding official left NASA shortly after making the decision is compelling but requires primary source verification (internal memos, congressional testimony).
    2. Blue Moon Maturity Timeline: While Blue Origin’s delayed development is well-documented, specific claims about PDR/CDR status require confirmation against official NASA milestone trackers.
    3. “Elon Musk is lying” about 6-8 refueling flights: This is a strong assertion that should be cross-referenced with SpaceX’s own technical presentations and peer-reviewed orbital mechanics analyses.

    📊 FUTURE PROJECTIONS (2028-2040)

    Near-Term (2028-2031): The 2028 Target

    The video’s skepticism is well-founded from a physics standpoint. However, historical precedent shows NASA can accelerate programs when political will is extreme:

    • Apollo was originally planned for 1963; actual landing was 1969 (6-year delay)
    • Artemis I flew in 2022 despite planning delays of ~4 years

    Verdict: A 2028 target is optimistically aggressive but not impossible if SpaceX achieves its rapid cadence and Blue Origin’s backup plan matures simultaneously. However, the physics gaps are real and require either:

    • Breakthrough in cryogenic storage/refueling technology
    • Additional SLS launch capability
    • Acceptance of a more complex, multi-year staging architecture

    Medium-Term (2031-2040): Moon Base Viability

    The video correctly identifies that corporate-driven timelines create structural instability. However, it misses a critical insight: the 2028 target may actually be a strategic signaling device rather than an engineering commitment.

    Projected trajectory:

    • 2028-2030: LEO-only Artemis 3 mission (as proposed) — achievable with current capabilities
    • 2031-2033: First crewed lunar landing — likely possible but high-risk
    • 2034+: Permanent lunar presence — requires massive infrastructure investment

    🧠 FUTUREURIST ANALYSIS FRAMEWORK

    DimensionCurrent State (2026)Projected Trajectory (2040)Key Risk FactorsHuman PresenceLEO-only missionsLunar surface operationsFunding volatility, political cyclesPropulsion TechnologyMethalox rockets dominantPotential for nuclear thermal/electric hybridsRegulatory hurdles, safety certificationInfrastructureEarth-orbit prototypesPermanent lunar habitatsRadiation, life support, resource extractionGovernanceNASA-led with private partnersLikely multi-stakeholder or internationalJurisdictional conflicts, liability frameworks

    💡 ACTIONABLE RECOMMENDATIONS FOR FUTUREPLANNERS

    1. Monitor 2028 Mission Architecture: The LEO-only Artemis 3 design is a testbed for docking and life support integration. Success validates the entire architecture; failure cascades to all future missions.
    2. Track Refueling Milestones: SpaceX’s ability to achieve high-frequency orbital refueling will be the single biggest determinant of whether lunar landings are feasible.
    3. Prepare for Political Cycles: Space programs are highly sensitive to political leadership changes. Build contingency plans for 4-8 year funding cycles.
    4. Diversify Partnership Portfolios: Over-reliance on any single contractor (even SpaceX) creates systemic risk. Maintain qualified backup options.

    📝 CONCLUSION

    The presenter’s critique is primarily valid from an engineering and physics perspective, though some claims require independent verification. The 2028 timeline is optimistically aggressive but not impossible, contingent on SpaceX achieving unprecedented launch cadence and solving refueling bottlenecks.

    For futurists: This video represents a critical inflection point in human spaceflight — where political ambition meets physical reality. The tension between corporate-driven speed and engineering discipline will define the next decade of lunar exploration.

    🏗️ INSIGHTS ON THE USE OF BILLIONAIRE CONTRACTORS

    🔍 Structural Overview

    Billionaire-owned companies and individuals increasingly function as alternative contractors, bypassing traditional procurement systems and creating a parallel contracting ecosystem with distinct characteristics.

    Key Characteristics:

    • Capital-Rich: Access to deep pockets of capital enables rapid prototyping and high-risk experimentation
    • Speed-Oriented: Bypasses traditional procurement cycles (months/years → weeks/months)
    • Vertical Integration: End-to-end control from vision to execution
    • Political Influence: Often maintain significant government relationships

    ⚖️ Evidence-Based Analysis

    Case StudyKey InsightRisk ProfileSpaceX & Unpaid Bills (Fast Company, 2024)$2.5M+ in liens filed by contractors; delayed paymentsHigh financial risk to smaller contractorsAnduril’s Autonomous Development (Forbes, 2022)Builds weapons tech independently without waiting for Pentagon requirementsInverted contracting model — high reward, high riskMercor’s Wage Reductions (Forbes, Nov 2025)Young billionaire co-founders slashed contractor wages by ~33% after project cancellationLabor relations crisis; experience gap concernsLegalist’s Government Contracts (Business Insider, Aug 2025)Received $100M+ in government contracts via Peter Thiel’s fellows networkPolitical dependency creates vulnerability to policy shifts

    📈 Comparative Analysis: Traditional vs. Billionaire Contractors

    FactorTraditional ContractorBillionaire-Owned ContractorFunding SourcePublic/private sector bidsFounder equity/VC backingTimeline PressureProject-driven, risk-mitigatedFounder-driven urgencyRisk AllocationShared with clientsHeavily on founder/companyRegulatory OversightStandard contracting lawsMinimal, novel legal structuresScale ConstraintsLimited by company size/infrastructureLimited only by capitalGovernanceBoard oversight, fiduciary dutiesFounder-centric decision making

    🔮 Future Trajectory (2030-2045)

    1. AI-Augmented Contracting: Machine learning will optimize contractor allocation, predict payment risks, and automate compliance tracking — reducing the “unpaid bills” problem seen in SpaceX cases.
    2. Decentralized Workforce Models: Blockchain-based smart contracts may improve transparency for gig/contractor economies, though regulatory frameworks lag far behind technological capability.
    3. Geopolitical Dependencies: Billionaire contractors handling government contracts will face increased scrutiny as they influence critical infrastructure, defense, and media — creating conflicts of interest that policymakers must address.
    4. Global Supply Chain Reconfiguration: Billionaire-backed tech companies increasingly bypass traditional supply chains entirely, creating new vulnerabilities and opportunities in manufacturing and resource allocation.

    ⚠️ Critical Risks to Monitor

    1. Contractor Exploitation: Unpaid bills, wage reductions, and poor payment practices are emerging patterns that could normalize across industries
    2. Experience Gaps: Young billionaire founders may lack the institutional knowledge required for large-scale project management, leading to catastrophic failures when political cycles shift
    3. Single-Point Dependency: Over-reliance on any single contractor (even SpaceX) creates systemic risk — a lesson learned from the Apollo program and modern government contracting

    📚 Further Reading & Verification Sources

    • Fast Company: “‘We never got paid’: SpaceX contractors call out unpaid bills” (May 2024)
    • Forbes: “Facebook Made This 29-Year-Old Rich; War Made Him A Billionaire” (June 2022) — Anduril analysis
    • Forbes: “The World’s Youngest Self-Made Billionaires Just Slashed These Workers’ Wages by a Third” (Nov 2025)
    • Business Insider: “How DOGE Boosted Legalist’s Government Contracts Business” (Aug 2025)

    🔚 FINAL ASSESSMENT

    YouTube Video: Represents a critical analysis of NASA’s lunar program timeline. The presenter’s physics-based critique is largely accurate, though some specific claims require independent verification. This video captures a pivotal moment where political ambition meets engineering reality in the space race.

    Billionaire Contractors: Represent an emerging parallel contracting ecosystem with distinct characteristics — faster but riskier, more innovative but potentially exploitative. The trend suggests that future infrastructure development will increasingly be driven by billionaire-backed entities rather than traditional contractors, creating both opportunity and vulnerability in global systems.

    #Artemis #Contractors #Spacex #Starship #ANGRYASTRONUAT #AstroAngry #TheAngryAstronaut #moon #NASA #news #science #space #spacex #technology
  16. TL;DR — Benchmark leaderboards evaluate a model in isolation, but production systems run a model wrapped in prompts, tools, retrieval, and guardrails. The benchmark number measures a construct that stops existing the moment you deploy. Treating a static accuracy figure as a property of the model rather than of the whole pipeline is the real source of eval-to-production drift.


    Every leaderboard tells you the same lie: that a score is a property of the model. It isn't. It's a property of a very specific, narrow configuration — one prompt template, one decoding temperature, one static test set, one evaluation harness — that gets collapsed into a single number and then generalized far beyond what it ever measured. The gap between benchmark and production isn't a metrics problem. It's a unit-of-analysis problem.

    The construct you're actually measuring


    A benchmark score is an operationalization of a construct — "reasoning," "factuality," "helpfulness" — squeezed through a specific test format. MMLU-style multiple choice measures the ability to pick a correct option out of four, under a fixed prompt, with no tool access and no conversation history. That is a real, measurable thing. It is not the same thing as "this model will reason correctly inside your agent loop."

    The construct validity gap shows up the moment you change anything about the surrounding scaffolding. Swap the few-shot examples, and scores swing by several points. Change the answer-extraction regex, and a model that "failed" suddenly passes. None of this is cheating — it's evidence that the number was never measuring the model alone. It was measuring the model plus a harness, and the harness is doing more work than anyone credits it for.

    Static test sets evaluate yesterday's distribution


    Benchmarks are frozen snapshots. The moment a dataset ships, it begins to diverge from whatever distribution your users actually generate. Production traffic drifts — new slang, new document formats, new failure modes introduced by your own product changes — while the benchmark stays exactly as static as the day it was built.

    This is a distribution-shift problem wearing a benchmarking costume. A model can hold a constant score on a fixed eval set for months while its real-world accuracy degrades, because the eval set simply doesn't contain the inputs that are now breaking in production. The benchmark isn't wrong, it's just answering a question nobody is asking anymore. Teams that treat a quarterly benchmark re-run as sufficient monitoring are measuring the wrong clock.

    The model is not the unit that ships


    Here's the part that gets skipped in most eval writeups: nobody deploys a bare model. What ships is a system — a model wrapped in a system prompt, a retrieval step, a tool-calling loop, output parsers, safety filters, and often a second model acting as a judge or router. Each of those layers can silently absorb or amplify the base model's weaknesses.

    A model that scores poorly on raw arithmetic might be fine in production because your system routes math to a calculator tool. A model that scores brilliantly on a reasoning benchmark might fail constantly in your agent because your retrieval step feeds it malformed context that the benchmark never included. The benchmark evaluated the engine. Production runs the car. Nobody benchmarks the car.

    This is why swapping a "better" model into an existing pipeline so often produces a worse system. The new model has different sensitivities to prompt phrasing, different tool-calling conventions, different failure modes under malformed input — none of which show up in a benchmark that evaluates the model in isolation, stripped of the scaffolding it will actually run inside.

    Point estimates hide the variance that matters


    Leaderboards report a single accuracy number, as if it were a physical constant. It isn't. Run the same model against the same benchmark with a different sampling seed, a slightly different prompt wording, or a different subset ordering, and the score moves. Most published comparisons never report that variance, which means a half-point "win" over a competing model is frequently indistinguishable from noise.

    This matters more as benchmarks get harder and the field clusters near the top. When every frontier model scores within a few points of each other, the ranking order becomes a function of which run you happened to report, not a stable property of capability. An eval process that doesn't report confidence intervals, run-to-run variance, or sensitivity to prompt perturbation isn't giving you a measurement — it's giving you a single draw from a distribution and calling it the truth.

    What evaluation should actually target


    None of this means benchmarks are useless. It means they're answering a narrower question than the one practitioners act on. Three shifts fix most of the gap:

    • Evaluate the system, not the model. Run your eval harness against the full production pipeline — prompt template, retrieval, tool calls, guardrails included — not against the bare model API. A model swap should be judged by how the whole system performs, because that's the unit your users experience.
    • Treat scores as distributions, not points. Rerun evals across seeds and prompt perturbations and report variance alongside the mean. A model that's 2 points "ahead" with 4 points of run-to-run variance isn't ahead at all.
    • Replace static test sets with live sampling. Pull a rolling sample of real production inputs, label a slice continuously, and track accuracy against current traffic, not last quarter's traffic. The benchmark's job isn't to crown a winner once — it's to catch drift as it happens.

    The deeper discipline here is the same one that governs any measurement system: know exactly what your instrument is measuring before you trust the number it produces. A thermometer calibrated in a lab tells you something true about that lab. It doesn't tell you the temperature outside unless you account for everything that changed between the two environments. Benchmarks are lab measurements. Production is outside. The engineering work isn't picking the model with the highest lab score — it's building the harness that tells you whether that score survives the walk out the door.#ai #architecture #devops #programming #software #coding #development #engineering #inclusive #community
    LLM Benchmarks Score a Model in a Vacuum, Not a System

  17. CW: satire of terfism, defacation
    Gyns tell me I'm not crazy here. No one I've told about this so far has sympathized with me, but I know radblr is more reasonable than the outside world.
    I'm really afraid of moids going into the sewer and eating my shit and drinking my urine. Everyone makes fun of me for this and tells me why I should care when it's bodily waste anyways, but it's my bodily waste and I don't want moids putting it in their mouth.
    We can all agree that's perfectly reasonable right? Right? We all know how moids can be about women and we all know that they actually do this. So what is the problem if I do it first? 
    I've been reading articles about it and unless you have parasites it's actually not that bad for you and can actually help you absorb nutrients you may have missed before. The only problem is if you ONLY eat and drink your own piss and shit and you get nutrient defeciencies.
    Everyone I've told about this seems completely disgusted by it and I'm at my wits end. I just want my FEMALE piss and shit to stay pure of moid saliva. Why are women treated like this for protecting ourselves?
    Why is it so wrong when I do it but not when MEN do it?
    
    
    Sisters, I need your counsel.
    I haven't flushed in four days and I need advice.
    I know this sounds extreme but I have my reasons. There's been documentation—studies, personal accounts, patterns—that moids and TRA activists have established colonies in the sewer systems. They subsist on what we discard. Every time you flush, you're feeding them. You're giving them sustenance, allowing them to maintain their presence in the infrastructure that connects us all.
    My toilet is reaching a critical point. I can smell it. I know I need to do something but I can't bring myself to push that lever. It feels like... surrender. Like contamination.
    _____________________________________________________________________________________________
    can i be a political lesbian if im super straight? i have never experienced any attraction to women and i find the thought of the female body disgusting. in fact i hate my own body and wish i could be a man. but then id be gay. i have dated men for like 15+ years and after spending so long dating men and being mistreated i feel like i want to claim political lesbianism. maybe i could be a man and force myself to be straight and claim political lesbianism. could this maybe work for me? what kinds of activism should i get involved in to become a political lesbian?
    
    heres a thing that happened to some friends of mine. was walking down the street talking about the bears game and a bus pulled up and a bunch of white women with short hair and bad plastic surgery came out with baseball bats. they all had shirts that sayed 'down with trans'. i(22 afab wombynly wombyn) was able to hold them off while my friend(19 amab mynly myn) ran away. bareley escaped
    
    aita for accidentally harrassing an afab?
    was at the grocery store and had to used the restroom. damn urinary leash amirite? i was
    so terrified of seeing an transexual but had no choice becuz i(35 wombynly afab) had to pee.as i was washing
    mine hands a person came in. i could tell by their jawline and cheekbones that they were
    obviously an amab. so i stood in the door and made them pull down their pandts. and they
    said no so they started walking away but i kept following them demanding to see what was
    in his pants. by the time we reached the checkout it was really statring to cause quite a
    scene which was very triggering to my sex based oppression. i followed him out to his car
    and he turned and looked at me and said "dude im a butch stop being wierd" in a perfect
    femininely wombynly afab voice. aita?
    
    hi yall. i was amab and transitioned 5 years ago. just a normal straight girl, right? couple of months ago i figured i would try reclaiming my masculinity. puicked up some boxers and cargo shorts. instand raging boaner. now i cant ger off without thinking of hot bear for bear frotting. am i still trurrans?
    
    How do you feel about male exclusive radical misandrists? yeah i was born a man and i hate it this cock tortures me evry minute of my existence if i even think about being a man i break down. And due to my unfortunate attraction to men, i experience sex based oppression due to being a bottom. i sometimes wish i could transision and be a political lesbian but then i would just be a male invading women's spaces. so i coined a term to describe me: male exclusive radical misandrist. because if i am going to be oppressed for being a male i want to be the one opressing me. its basic bodily autonomy. only we can oppress ourselves. #moids dni #foids dni #kill all men #kill all women #oppress yourself responsibly #liberate the noone #righttooppress
    
    harrassing random trans women will not brign the downfall of gender. indiviual action will never bring any revolution. what we need is collective action. so stop trying to do anything about gender until the vanguard party has established a positon for the overthrow of gender. if you disagree your just a lifestylist reactionary.
    __________________________________________________________________________________________
    and to my immune system: if you want to drown yourself in snot and mucuous that's your right but would you kindly do me a favor and LEAVE ME THE FUCK OUT OF IT. 
    
    and to my subconscious mind: need i remind you that your job responsibilities cover automated systems like breathing and circulation, not fucking keeping me awake all fucking night? kindly focus on attending to your job description instead of insane extracuriculars? I need you to remember that we are a team here and your actions affect everyone.
    
    dear James in engineering,
    I cant believe you still haven't solved the problems with the power couplings. I know this may be hard to understand but you need to turn the set screws to the OFF position to turn OFF the flow restrictors and you need to turn the set screws to the ON position to ENABLE the flow restrictors. Kindly, learn to do your damn job.
    
    dear administration,
    I appreciate all of your hard work in finding staff in these difficult times but I need clarification on one thing: where do you find all of these morons? You have sent us five new employees in the last two weeks and only one of them knew what a philips head was. We cannot be spending what little time we are given to train new employees in basic skills. Might i recommend hiring people who demonstrate technical proficiency instead of your fuckup nephew?
    
    heres something i actually sent my local news station:
    Hello Andrea,
       I apologize if this is not your department but I cannot find a contact for the meteorology department. My complaint is quite simple: I ask that weather forecasters please refrain from inserting their personal judgements and opinions into the broadcasting. I get that some people might appreciate warmer weather but this opinion is not universal and many of us find it quite shocking to see 80 degree highs in late october described as "nice", "mild", or "fair". If you would like to hear my opinion on the matter, personally I find this heat oppressive as I am someone who spends a good deal of time outside engaged in hard physical activity. In fact, I would go so far as to say that if you enjoy this weather you might consider relocating to an environment with a more suitable climate, such as the fucking sahara desert. And frankly, the Sahara might be an improvement: at least I could manage the heat in a dry climate.
    Thank you for listening to my rant and have a blessed day,
    Foob
    P.S. Anything you could do to keep the temperatures in the mid 50s would be greatly appreciated on my end.
    
    dear Administration,
       While I appreciate that finding competent staff is difficult sometimes and that you have been able to find teaching staff with high levels of technical proficiency, several of your staff have been lacking in professionalism and pedagogy. I have actually had teachers cancel class with 5 minutes notice, on multiple occassions, so much so that it in fact became a recurring pattern with them. As if that wasnt bad enough, these are often the same teachers who's prefered teaching style seems to be blindly reading off their powerpoint without so much as looking at the class, much less checking for understanding. I ask that in the future you please hire teachers who actually show up to class and actually know how to teach.
    Best regards,
    A concerned student
    ps. and dont even get me started with your online offerings. in a live classroom setting, a student can at least raise their hand and steer an incompetent teacher. but your online classes are just underpaid staff reading off thier lecture notes with no furter explanation beyond basic concepts. I might as well watch a youtube video, that would be a better value. For $1000 dollars a class, this is a total ripoff and perhaps even a full on scam. fuck you.
    
    Whoever is in charge of hiring at this place is a real piece of work. I get that there are others who may have better qualifications but to interview a candidate and not even send a rejection email, much less useful feedback, demostrates a level of profesionalism that would embarrass a tavern wench. These institutions, and society as a whole, would benefit greatly from giving people a fighting fucking chance.
    
    Dear hiring manager,
       I have an important formal inquiry(injury): on your website you have multiple listings for so called entry level positions with a minimum qualification of 5 years of experience. This leaves me wondering how one is supposed to get 5 years of experience if all of the so called entry level positions require 5 years of experience. This is so prevasive accross your job listings that I suspect I might have a decent case with the Equal Opportunity Employment Commission, considering that these requirements absolutely have a discriminatory impact against people who are new to the job market. So I guess my question is this: do you actually hire human beings or only bots?
    Also, what the fuck are you smoking? This is a job which entails mostly filing sales reports, which is not exactly a rare or difficult skill. Stop acting like corporate bureaucracy is a skilled trade: it isn't.
    
    Dear hr,
       It has come to my attention that the tone of my recent emails is "problematic and unprofessional". While I can appreciate that others may have trouble with the self awareness necessary to address issues raised in good faith, I must suggest that my coworkers stop being such a bunch of little bitches.
    Thank you for your attention to this matter.
    
    hello hr representative,
       I am writing to inform you of several concerns i have with this companies hr department. While I do appreciate the structure whereby advancement depends on undying loyalty to the establishment and whereby power is exercised both for its own sake and to keep underlings in check, I must say that you lack the ability to be gangsta unless you have the full backing of the entire institution. Kindly, if you have a beef with me, settle it like grown men instead of hiding behind your lackeys. Also, you claim to have meaningful power over me but we both know that you would be nothing without the backing of your institution. Once again, lets drop the bullshit and settle this.
    Best regards,
    Mr. Dick Head
    __________________________________________________________________________________________
    
    
    ____________________________________________________________________________________________
     Have
    
    you owned a month-end close and an annual audit relationship for a fund
    
    or investment vehicle, without a supervisor above you?
    
    I ride a bicycle everywhere and if i cant get there on a bike i simply ride there anyway. i ride in the middle of the road, often dodging traffic in the oncoming lane. Its like dancing its all about your footwork, timing and spacing. I know this sounds dangerous but you need to know something about me: dick does not fuck up. If there is a collision it is your fucking fault for being in my fucking way. Dont you know pedestrians have the right of way?
    
    
    Do
    
    you have five or more years of accounting experience, including fund or
    
    investment-vehicle accounting (private credit, debt fund, or real
    
    estate fund)?
    
    Yeah ive been riding my bike for like 8 years now at this point and let me tell you i have put a lot of work into it. every goddamned time i go out to ride it something needs adjusting, be it the brake cables, shifter cable, tire pressure, or seat position. and thats just the tip of the iceberg. i have replaced the drivetrain 5 seperate times including completely reengineering it at least twice. and if theres even a bit of rain in the forecast i have to be prepared to replace everything cuz nothing is designed to handle a bit of moisture much less the kind of loamy mud i subject it to.
    
    
    This is an independent contractor (1099) engagement on a fixed monthly retainer, roughly 30 hours in a typical month. Does that structure work for you?
    
    the only structure that works for me is completely egalitarian horizontal structures. anything else concentrates power that will eventually be abused. and the structure of most corporations, including yours, more closely resembles monarchal fuedalism than any form of democracy, much less free association. and to be frank monarchal fuedalism would be a fucking improvement., at least under monarchal feudalism i have the dignity of providing for my own and my community's survival by contributing to the grain store instead of relying on opaque and inhuman institutions for the "privilege" of keeping a roof over my head. fuck you.
    
    
    What monthly retainer would you propose for the scope described in the posting?
    
    i aint paying you no goddamn monthly fee for the "privilege" of selling you my labor. fuck you. 
    

    #copypasta #satire #moids #foids #kill #kill #oppress #liberate #righttooppress #moids #foids #kill #kill #oppress #liberate #righttooppress
  18. The tech industry has a strange contradiction right now.
    Companies are investing billions in artificial intelligence, building new platforms, shipping increasingly sophisticated products, and talking about unprecedented productivity gains.

    At the same time, thousands of developers, engineers, designers, QA specialists, and other technology professionals are facing an uncertain future.

    According to TechRepublic's October 2026 tech layoffs report, nearly 200,000 people had been affected by reported technology-sector layoffs as of October 23.

    That number is difficult to ignore.

    But behind every headline is a more personal question:

    How do you build a sustainable career in an industry that keeps changing the definition of valuable work?

    Let's look beyond the headlines and explore what these layoffs mean for developers, why AI isn't the whole story, and how we can prepare for an increasingly unpredictable technology landscape.

    1. The Layoffs Aren't Just Numbers on a Dashboard

    When a company announces a workforce reduction, the news is usually presented through percentages, headcounts, and stock-market reactions.

    For the people affected, the experience is very different.

    It's the developer who spent five years maintaining a critical service.

    It's the QA engineer who prevented production incidents nobody outside the team ever noticed.

    It's the infrastructure specialist who kept systems running during the most difficult outages.

    It's the junior engineer who finally landed their first job after months of interviews.

    These professionals don't suddenly lose their knowledge, experience, or ability to solve problems when their employment ends.

    Yet a layoff can make even experienced engineers question their value.

    One important distinction is worth remembering:

    A company eliminating a position does not automatically mean the person occupying it lacked value.

    Organizations restructure for many reasons, including financial pressure, acquisitions, overlapping responsibilities, strategic changes, and shifting investment priorities.

    Some reductions are connected to AI. Others aren't.

    For developers, understanding that distinction matters. Otherwise, it's easy to interpret every layoff as evidence that a particular skill or career path has become obsolete.

    The reality is more complicated.

    2. Is AI Replacing Developers, or Changing What Developers Do?

    This is probably the biggest question in software engineering right now.

    AI coding assistants can generate boilerplate, suggest implementations, explain unfamiliar code, create test cases, and help developers explore possible solutions.

    These capabilities are useful. Ignoring them entirely isn't a particularly strong career strategy.

    But the conversation becomes less useful when we reduce everything to a simplistic prediction: AI will either replace all developers or never replace any of them.

    Neither assumption helps us make better decisions.

    Consider a typical feature request.

    An AI tool might help generate an API endpoint in minutes. However, delivering that feature safely may still require someone to:

    Understand the business requirements and identify missing assumptions.

    Design the API contract and choose appropriate data models.

    Evaluate authentication, authorization, and data privacy risks.

    Test edge cases, failure modes, and unexpected inputs.

    Review database performance and concurrency behavior.

    Integrate the feature with existing services and deployment pipelines.

    Monitor production behavior and investigate incidents.

    Generating code is only one part of delivering reliable software.

    The challenge is that AI can make some tasks faster while also changing how much work a team needs to complete them.

    That can create real workforce pressure, particularly when organizations expect smaller teams to deliver more.

    And there's an important caveat: AI adoption and layoffs happening at the same time do not prove that AI directly replaced every affected employee.

    TechRepublic's reporting highlights this distinction. Some companies have explicitly connected restructuring to AI-focused strategies, while others have cited different organizational or business reasons.

    For developers, the practical takeaway isn't to panic or dismiss AI.

    It's to learn where these tools are useful, understand their limitations, and become better at the engineering decisions surrounding their output.

    3. The Real Competitive Advantage Is Engineering Judgment

    If AI can generate a plausible implementation, what makes an experienced developer valuable?

    Increasingly, the answer is the ability to determine whether that implementation is actually correct, maintainable, secure, and appropriate for the problem.

    Imagine an AI assistant generates a database query that works perfectly against a small development dataset.

    Will it still perform well when the production table contains 200 million records?

    What happens when two requests update the same resource simultaneously?

    Could the query expose information that the requesting user isn't authorized to see?

    Does the implementation introduce a subtle regression in another service?

    These aren't merely code-generation problems. They require engineering judgment.

    The same principle applies to testing.

    A test suite can report 95% code coverage while missing the business-critical scenario that causes a production outage.

    A generated test can confirm that a function returns the expected result without checking whether the result itself makes sense.

    A passing build doesn't guarantee a reliable system.

    This is where developers can differentiate themselves.

    Focus on capabilities that help you reason about the entire system:

    System design: Understand service boundaries, data flows, failure modes, and trade-offs.

    Debugging: Trace problems across application layers rather than guessing at isolated symptoms.

    Testing: Design meaningful assertions, boundary tests, integration tests, and failure scenarios.

    Security: Recognize vulnerabilities that aren't obvious from a successful demo.

    Performance: Understand latency, throughput, resource consumption, and scaling constraints.

    Communication: Explain technical decisions and their consequences to people with different backgrounds.

    These skills aren't immune to automation. AI can assist with many of them.

    Their value comes from knowing how to apply them, verify results, and take responsibility for the outcome.

    4. Stop Measuring Your Career by the Number of Technologies You Know

    When layoffs dominate the news, it's tempting to respond by learning everything.

    A new framework appears, so you learn it.

    A new AI tool launches, so you try it.

    A new programming language becomes popular, so you add it to your list.

    Soon, your learning backlog becomes larger than any project you could realistically finish.

    The problem isn't curiosity. It's confusing exposure with capability.

    Knowing that a tool exists is different from being able to use it to solve a meaningful problem.

    Instead of collecting technologies, build evidence of your engineering ability.

    For example, rather than creating five small repositories that demonstrate basic syntax, consider building one application that includes:

    A documented API with authentication and input validation.

    Automated unit and integration tests.

    Database migrations and realistic test data.

    Logging, metrics, and useful error handling.

    A CI pipeline that runs checks before deployment.

    A deployment strategy with a documented rollback procedure.

    A README explaining architecture decisions and known limitations.

    This project gives you more than a list of technologies.

    It demonstrates how you approach the complete software development lifecycle.

    If you use AI to build parts of it, document where you used it, how you reviewed its suggestions, and what you changed after testing.

    The goal isn't to pretend you wrote every line manually.

    The goal is to demonstrate that you can deliver software responsibly.

    5. Build a Career That Doesn't Depend on One Employer

    A layoff can be especially disruptive when nearly all your professional identity, network, and sense of security are tied to a single company.

    You can't eliminate that risk entirely, but you can reduce your dependence on any one organization.

    Start by keeping your professional portfolio current.

    You don't need to publish confidential company code or turn every weekend into a side-project marathon. You can document open-source contributions, personal projects, technical articles, or lessons learned from problems you've solved.

    Next, maintain professional relationships before you need them.

    Talk with former colleagues. Participate in technical communities. Share useful findings. Review other people's code. Contribute to discussions where you can genuinely help.

    Networking works better when it isn't treated as an emergency activity that begins the day after a layoff.

    Also, periodically review your accomplishments.

    Don't just record that you worked on a service. Record what changed because of your work.

    Examples include:

    Reduced API latency by identifying an inefficient database query.

    Improved release confidence by introducing integration tests.

    Reduced incident investigation time by improving observability.

    Simplified a deployment pipeline and removed manual steps.

    Identified and resolved a security weakness before release.

    Use real measurements when available. Never invent metrics to make a résumé look impressive.

    These examples help communicate the value of your work beyond a job title or list of responsibilities.

    Finally, if circumstances allow, build some financial breathing room. Even a modest emergency fund can create options when a job search takes longer than expected.

    Career resilience isn't only about technical skills. It's also about having choices.

    6. Don't Assume Every Company Is Hiring for the Same Kind of Developer

    A headline about thousands of job cuts at a major technology company can make the entire industry look closed.

    But company-wide reductions don't tell the whole story about individual teams, occupations, or hiring needs.

    A company can reduce its overall headcount while continuing to recruit for selected roles. Another company may be expanding its engineering organization while a competitor contracts.

    That doesn't mean finding a job is easy. It means the available evidence needs to be interpreted carefully.

    When researching opportunities, look beyond the employer's brand name.

    Investigate the specific role, team responsibilities, required experience, and business context.

    Ask questions such as:

    Is the role associated with a core product or a short-term initiative?

    What problems will the team be expected to solve?

    How does the company measure engineering quality?

    Is the position new, a replacement, or part of an expanding team?

    What expectations does the employer have around AI-assisted development?

    How does the team handle on-call responsibilities, technical debt, and production incidents?

    During interviews, pay attention to how people describe the work.

    An organization that expects developers to use AI responsibly, review code carefully, and understand production systems may offer a different engineering environment from one that measures productivity primarily by the number of tickets closed.

    No interview can guarantee job security.

    However, understanding the role helps you make a more informed decision than relying on a company's reputation alone.

    7. Junior Developers Need a Different Strategy, Not a Reason to Give Up

    For people entering software development, the current environment can feel particularly discouraging.

    Entry-level positions often require practical experience, but gaining that experience can be difficult without an initial opportunity.

    AI adds another layer of uncertainty because some of the tasks traditionally assigned to junior engineers can now be automated or completed more quickly.

    Still, the conclusion shouldn't be that learning to code is pointless.

    Instead, aspiring developers should focus on demonstrating that they understand the fundamentals rather than simply knowing how to prompt a coding assistant.

    Learn how data structures work. Understand HTTP, databases, version control, testing, and debugging. Practice reading unfamiliar code and explaining why a solution works.

    Then use AI as a learning partner.

    Ask it to explain an unfamiliar implementation. Request alternative approaches. Generate test cases and investigate whether they are correct. Compare its output with official documentation.

    Most importantly, practice solving problems without blindly accepting generated answers.

    Build projects that solve real problems, however small. Contribute documentation or bug fixes to open-source projects. Collaborate with other developers. Learn to discuss trade-offs and explain decisions clearly.

    Your first opportunity may take longer to find than you expected.

    That delay doesn't make the effort meaningless, and a difficult job market doesn't determine your long-term potential.

    8. What Engineering Teams Should Learn From These Layoffs

    This discussion shouldn't be limited to individual career advice.

    Engineering leaders also have responsibilities.

    If an organization reduces its workforce and expects the remaining team to maintain the same systems, deliver more features, and adopt unfamiliar AI tools immediately, the result can be increased pressure rather than improved productivity.

    Fewer engineers don't automatically mean less work.

    Someone still needs to maintain legacy systems, investigate incidents, review generated code, manage dependencies, and understand architectural decisions made years earlier.

    If that knowledge leaves with departing employees, the organization may lose capabilities that are difficult to rebuild quickly.

    Teams should therefore pay attention to:

    Knowledge preservation. Document critical systems, operational procedures, and architectural decisions before organizational changes create gaps.

    Quality controls. Establish clear expectations for testing, code review, security checks, and AI-generated contributions.

    Realistic capacity planning. Measure delivery outcomes and system reliability, not just the number of tasks completed.

    Sustainable ownership. Make sure critical services have adequate support and aren't dependent on one remaining engineer.

    Responsible AI adoption. Evaluate tools against real engineering workflows, including their costs, limitations, security implications, and effect on review effort.

    The goal should be to improve the way teams build and maintain software, not simply to make smaller teams absorb more responsibilities.

    9. A Practical 30-Day Plan for Developers

    You don't need to reinvent your entire career because of a difficult news cycle.

    A focused month can help you identify gaps and make tangible progress.

    Week 1: Audit your current skills

    Choose a technical area relevant to your goals. Review your recent work and identify what you can demonstrate confidently versus what you only know in theory.

    Update your résumé with specific, truthful accomplishments.

    Week 2: Strengthen one practical skill

    Choose a skill that supports your existing experience, such as API testing, database performance, cloud deployment, observability, or secure coding.

    Build a small exercise that forces you to apply it rather than just watch tutorials.

    Week 3: Complete and document a project

    Finish a useful improvement or small end-to-end application. Add automated tests, clear documentation, and a short explanation of your design choices.

    If you use AI, verify its output and document meaningful limitations you discovered.

    Week 4: Improve your professional visibility

    Publish a technical article, contribute to an open-source project, share a useful debugging lesson, or reconnect with former colleagues.

    Review relevant job descriptions to identify recurring requirements, then compare them with your current experience.

    At the end of the month, evaluate what you accomplished.

    You may not have a new job, a perfect résumé, or mastery of a new technology. That's fine.

    The objective is to build momentum and make your next step more deliberate.

    Final Thoughts: Your Career Is Bigger Than This Year's Headlines

    The 2026 layoffs are a serious reminder that working in technology doesn't guarantee employment security.

    They also highlight the need to think carefully about AI, organizational change, and the skills that help engineers deliver reliable software.

    But there's a difference between recognizing that the industry is changing and assuming that your future has already been decided.

    You don't control every restructuring decision. You can't predict which company will announce cuts next. You can't guarantee that mastering a particular framework will protect you from a difficult job market.

    What you can control is how you learn, how you demonstrate your abilities, how you adapt to new tools, and how you build relationships with other people in the industry.

    Don't compete with AI at generating code faster. Learn to build better systems, ask better questions, verify results, and solve problems that matter.

    And remember that your worth as a developer isn't measured by a company's headcount spreadsheet.

    The industry will continue to evolve. Our task is to keep learning without losing sight of the human judgment, collaboration, and responsibility that good engineering requires.

    Let's discuss

    I'm curious how other developers are navigating this period of change.

    AI and engineering: Has AI meaningfully changed the way you write, test, or review code?

    Career resilience: Which skills do you believe are becoming more valuable as teams adopt AI tools?

    Hiring: Are you seeing different expectations for junior, mid-level, and senior developers?

    Team culture: What can engineering leaders do to help teams adapt without sacrificing software quality or employee well-being?

    Share your experiences in the comments. Practical insights from people doing the work are often more useful than another prediction about the future of tech.

    Editorial note: This article is an independent, developer-focused perspective inspired by TechRepublic's reporting on 2026 technology layoffs. Layoff totals reflect reported announcements, not necessarily completed job losses. Figures and company circumstances can change as new information becomes available.#discuss #career #ai #programming #software #coding #development #engineering #inclusive #community
    Tech Layoffs in 2026: What Developers Should Do When the Industry Changes the Rules

  19. DATE: October 24, 2026 at 02:00PM
    SOURCE: PSYPOST.ORG

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

    TITLE: Breast reduction surgery is linked to improved sexual function

    URL: psypost.org/breast-reduction-s

    Women who undergo breast reduction surgery often experience improvements in their sexual function, including enhanced desire, arousal, and satisfaction. A recent systematic review and meta-analysis published in The Journal of Sexual Medicine evaluated previous research to better understand how altering breast size influences sexual well-being. The combined data suggest that both physical relief and psychological shifts contribute to a better sexual experience after the procedure.

    Breast reduction, medically known as reduction mammoplasty, is one of the most common aesthetic and therapeutic surgeries performed globally. The procedure involves removing excess skin, fat, and glandular tissue to create smaller, more proportionate breasts. Women often seek the surgery to alleviate the physical burdens of having very large breasts, a condition called macromastia. These physical burdens can include chronic back and shoulder pain, skin irritation, and difficulty exercising.

    Beyond physical discomfort, excessively large breasts can impact a person’s mental health and body image. Breasts are closely associated with femininity and sexual identity in many cultures. Deviation from societal standards regarding breast size can sometimes lead to psychological distress, low self-esteem, and sexual health challenges. Women may feel self-conscious during intimacy, an internal distraction that can hinder sexual arousal and satisfaction.

    While many patients pursue breast reduction hoping to improve their sexual life, previous research on the topic has produced conflicting results. Some studies have reported positive impacts on sexual desire and body image. Other studies found no measurable changes in sexual satisfaction compared to women who did not undergo the surgery.

    To clarify these mixed results, a team of researchers based in Iran led the current investigation. The team included Mahdiye Taheri, Zahra Ghorbani, Fatemeh Alavi-Arjas, Maryam Firouzabadi, and Hamid Alavi Majd. They set out to systematically evaluate and synthesize the existing data on how breast reduction affects postoperative sexual function.

    The researchers conducted a comprehensive search of medical databases to identify studies published up to April 2025. They specifically looked for original, English-language articles that quantitatively assessed sexual function in women after breast reduction surgery. They excluded studies focusing on breast surgeries performed for cancer treatment or gender affirmation. This exclusion kept the focus strictly on healthy women with symptomatic macromastia, avoiding the overlapping psychological effects of cancer or gender dysphoria.

    Their search yielded 13 eligible studies containing data from 676 participants. The studies took place across several countries, including Brazil, Turkey, the United Kingdom, the United States, Italy, Iran, Poland, and Spain.

    The review revealed that nine of the 13 studies documented an improvement in sexual function after surgery. Four of the studies reported no notable changes. Many of the included studies used the Female Sexual Function Index, a standardized questionnaire designed to measure domains such as sexual desire, physiological arousal, lubrication, orgasm, satisfaction, and pain. Across the research, women frequently reported enhancements in almost all of these categories following their operations.

    For example, one study included in the review found that the percentage of women experiencing clinical sexual dysfunction dropped from 62.5 percent before the surgery to 21.4 percent afterward. Another prospective study conducted in the United States demonstrated an improvement in sexual function in over 68 percent of the women tracked.

    Because eight of the studies used similar standardized instruments, the researchers were able to perform a meta-analysis. A meta-analysis combines the statistical data from multiple independent studies to identify overall trends. This combined analysis demonstrated that breast reduction was associated with a 13.27 percent increase in the mean score of sexual function among patients.

    The researchers identified several physiological pathways that might explain these outcomes. On a physical level, reducing the volume of the breast can alleviate chronic pain and physical restrictions. This relief removes persistent physical discomfort that can act as a sensory distraction during sexual arousal.

    Some evidence also suggests that removing excess tissue can normalize the distribution of sensory nerves in the breast. The nipple-areola complex is heavily innervated and plays a role in triggering the release of oxytocin, a hormone involved in arousal and emotional bonding. Modern surgical techniques aim to preserve these neural pathways, maintaining the physical triggers required for a full sexual response.

    Psychologically, the surgery often leads to a reevaluation of body image. Women with large breasts frequently experience “spectatoring,” a cognitive process where attention is diverted from erotic sensation toward continuous self-monitoring of their appearance. This self-surveillance can induce performance anxiety and diminish sensory engagement.

    By alleviating appearance-related anxiety, breast reduction allows individuals to engage more fully in sexual experiences. This psychological shift creates a positive feedback loop. Enhanced body image facilitates sexual satisfaction, and positive sexual experiences then reinforce a more cohesive self-concept and better global self-esteem.

    The researchers noted that mental health benefits extend beyond the bedroom. One large database study cited by the researchers in their discussion reported that prescriptions for certain antidepressant and anti-anxiety medications dropped from 46.3 percent to 29.5 percent among patients following breast reduction. This alleviation of psychological distress likely establishes a stronger mental foundation for sexual desire.

    Partner reactions also play a role in postoperative sexual well-being. Positive reactions from a partner regarding the physical changes can enhance the sexuality-promoting effects of the surgery. Conversely, criticism or neutral reactions can undermine the potential benefits. One study demonstrated that improvements in female sexual function after the operation were accompanied by an increase in their partners’ own sexual function scores.

    While the combined data indicate a positive association between breast reduction and sexual function, the results rely primarily on observational studies. Observational research can identify links between variables but cannot definitively prove that the surgery directly caused the improvements in sexual function.

    The individual studies included in the review often featured small sample sizes, typically involving fewer than 50 participants. Most of the research also relied on brief follow-up periods, usually checking in with patients just three to six months after their operations. This short timeframe limits the ability to determine if the sexual and psychological benefits persist over the long term or if delayed complications arise later.

    The studies varied widely in their design and the surgical techniques used. The available data did not allow the researchers to measure how specific factors, such as the exact volume of tissue removed or the specific surgical methods employed, influenced the final sexual outcomes. Future research will need to record these surgical parameters to help doctors provide personalized advice to patients regarding nerve preservation and physical sensation.

    Future studies would also benefit from evaluating more diverse populations. The current body of literature focuses almost entirely on cisgender, heterosexual women. Expanding this research to include LGBTQ+ individuals and women from a wider variety of cultural and socioeconomic contexts would provide a more comprehensive understanding of how breast reduction affects sexual well-being across different demographics.

    The study, “Sexual function following reduction mammoplasty: a systematic review and meta-analysis,” was authored by Mahdiye Taheri, Zahra Ghorbani, Fatemeh Alavi-Arjas, Maryam Firouzabadi, and Hamid Alavi Majd.

    URL: psypost.org/breast-reduction-s

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

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

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

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

    #psychology #counseling #socialwork #psychotherapy @psychotherapist @psychotherapists @psychology @socialpsych @socialwork @psychiatry #mentalhealth #psychiatry #healthcare #depression #psychotherapist #BreastReduction #ReductionMammoplasty #SexualHealth #WomensHealth #PlasticSurgery #BodyImage #MentalHealth #PatientWellness #MedicalResearch #HealthResearch

  20. 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
  21. Introduction


    Deploying an application to Kubernetes is relatively straightforward when everything works as expected. The real challenge begins when Kubernetes reports that the deployment is running, but the application behaves differently from what the operations team expects.

    In enterprise environments, a successful deployment involves more than updating a container image. Applications often depend on external databases, configuration services, network connectivity, persistent storage, and other components that must work together.

    During my work with enterprise applications deployed on AWS Elastic Kubernetes Service (EKS), I have encountered situations where a pod was running but the application had not initialized, database migrations failed without affecting the reported health status, and new workloads could not be scheduled despite otherwise valid deployment configurations.

    These experiences reinforced an important engineering principle:

    Infrastructure health, application readiness, and business functionality are three different things.

    In this article, I will discuss several practical deployment scenarios, the investigation approaches used, and the architectural lessons they offer.

    The examples are based on real deployment troubleshooting experiences, with infrastructure identifiers and implementation details generalized for confidentiality.

    1. When a Running Pod Is Not a Ready Application


    One particularly interesting deployment incident involved a Java application that started successfully at the container level but failed to complete its internal initialization.

    The new application pod reached the Running state, yet remained 0/1 Ready.

    There was no continuous restart loop. The Java process was still active, and several internal health checks were passing.

    However, the application never became ready to receive traffic.

    Investigation


    The investigation started with basic Kubernetes commands:

    # Check pod status
    kubectl get pods -n <namespace>

    # Inspect pod details and events
    kubectl describe pod <pod-name> -n <namespace>

    # Inspect application logs
    kubectl logs <pod-name> -n <namespace>

    # Inspect deployment rollout status
    kubectl rollout status deployment/<deployment-name> -n <namespace>

    The application logs contained an initialization error similar to:

    java.lang.IllegalStateException: Channel not active

    The error occurred during an internal communication lifecycle callback.

    Further investigation showed that the application's database connectivity, memory, and other basic checks were reporting healthy results.

    However, the application-server readiness check remained unsuccessful.

    The important observation was that the Java process had not terminated.

    This ruled out a conventional application crash and shifted the investigation toward the startup lifecycle.

    Understanding the failure


    The evidence suggested a startup-ordering problem.

    An internal lifecycle operation attempted to use a communication channel before it became active.

    This was consistent with a race condition during application startup, although the available logs did not establish every aspect of the underlying concurrency behavior.

    Because the JVM remained alive, Kubernetes did not report a CrashLoopBackOff.

    The container was running, but the application had not completed initialization.

    This distinction matters because a container's running state only indicates that its process is executing. It does not automatically prove that all required application components are operational.

    Recovery


    A controlled rollout restart initiated a fresh startup attempt:

    kubectl rollout restart deployment/<deployment-name> \
    -n <namespace>

    On the next attempt, the communication component initialized successfully and the pod reached 1/1 Ready.

    The previous application instance remained healthy during the unsuccessful rollout, so the active service was not interrupted.

    However, an important distinction remained.

    Restarting the application resolved the immediate operational problem, but it did not establish that the suspected startup race had been permanently fixed.

    Architectural lesson


    Application readiness must represent the service's ability to perform its intended function, not merely the presence of a running Java process.

    For enterprise applications with multiple initialization stages, startup dependencies should be explicit.

    When one component depends on another, the application should wait for a reliable initialization signal rather than assuming that the dependent service is ready.

    Where appropriate, Kubernetes startup probes can protect applications that require longer initialization periods, while readiness probes determine whether they should receive traffic.

    A restart may recover from a transient initialization problem, but repeated restarts should not become a substitute for correcting the underlying startup sequence.

    2. When Health Checks Pass but Database Migration Fails


    Another incident revealed a less obvious limitation of application health checks.

    During deployment, database changes were managed through Liquibase. These changes included configuration schema updates and business data migrations.

    In some deployments, the application instances started successfully and reported a healthy status even though one of the database migration operations had failed.

    The problem


    The migration process encountered errors such as:

    Validation Failed:
    Checksum mismatch

    In other cases, the error was related to existing database records:

    ERROR: duplicate key value violates unique constraint

    For example, a migration attempted to insert a configuration record that already existed in the target environment.

    Liquibase stopped processing at the failing changeset, leaving subsequent database updates unapplied.

    However, the application could still establish a database connection and start.

    From Kubernetes' perspective, the application appeared healthy.

    From a release-management perspective, the deployment was incomplete.

    Why this matters


    A database connectivity health check generally answers one question:

    Can the application establish a connection to the database?

    It does not necessarily establish whether:

    • All required migrations have completed.
    • The database schema matches the deployed application version.
    • Required configuration records exist.
    • Data transformations completed successfully.
    • Business-level operations can execute correctly.

    In one deployment scenario, the application image was updated while the business schema remained at the previous version because a migration failed.

    The application was technically running, but the application version and database migration state were no longer aligned.

    This discrepancy was not visible from the application's ordinary health response.

    Investigation


    A reliable investigation should examine both Kubernetes and the database migration process.

    # Inspect available migration jobs
    kubectl get jobs -n <namespace>

    # Inspect the migration job
    kubectl describe job <migration-job-name> \
    -n <namespace>

    # Review migration job logs
    kubectl logs job/<migration-job-name> \
    -n <namespace>

    # Review a specific init container
    kubectl logs <pod-name> \
    -c <init-container-name> \
    -n <namespace>

    Where Liquibase is used, the database changelog tables can provide additional evidence about which changesets were executed.

    A read-only query against a suitably qualified changelog table can help inspect migration history:

    SELECT
    id,
    author,
    filename,
    dateexecuted,
    orderexecuted,
    exectype
    FROM databasechangelog
    ORDER BY orderexecuted DESC;

    The exact table location depends on how Liquibase schemas are configured.

    These checks should be compared against the migration version and changesets expected for the deployed application release.

    Simply finding a database connection or a running pod is insufficient.

    Architectural lesson


    Database migration success should be a separate release validation requirement.

    A reliable deployment process should establish that:

    1. The correct migration scripts were included in the release.
    2. The required changesets completed successfully.
    3. The resulting database state matches the application's expectations.
    4. No required business configuration was omitted.
    5. Representative functional operations succeed after deployment.

    Where possible, migration workflows should be explicitly coordinated with application startup and release promotion.

    Database changes must also be designed with repeatability and idempotency in mind, particularly when different environments may already contain configuration records introduced through earlier operational activities.

    A successful readiness response is not proof that database migration completed successfully.

    3. Resource Constraints During Kubernetes Rollouts


    Another deployment issue occurred when new application pods could not be scheduled because the Kubernetes cluster lacked sufficient resources.

    The affected pod remained in the Pending state.

    Unlike the previous startup failure, the application process had never started.

    Investigation


    The investigation began by checking the pod's scheduling events:

    kubectl get pods -n <namespace>

    kubectl describe pod <pod-name> \
    -n <namespace>

    The events showed messages similar to:

    FailedScheduling:
    Insufficient cpu
    Insufficient memory

    The environment used a small cluster where existing workloads were already consuming most of the available node capacity.

    During the rollout, Kubernetes needed to accommodate both existing and replacement workloads.

    The additional resource demand exceeded the cluster's scheduling capacity.

    Why rolling deployments require spare capacity


    Rolling deployments are intended to introduce new application instances while existing instances continue serving traffic.

    However, that behavior depends on the available resources and the deployment strategy.

    Consider a simplified environment with two existing application workloads.

    During an upgrade, Kubernetes may need capacity for one or more additional pods before terminating older instances.

    If the nodes are already close to their allocatable resource limits, new pods may remain unscheduled.

    The problem can become more visible when blue and green application versions are deployed simultaneously.

    Even if each deployment works individually, the combined resource requirements may exceed the available cluster capacity.

    Additional diagnostics


    Resource investigations may include:

    # Review available nodes
    kubectl get nodes

    # Inspect node capacity and allocated resources
    kubectl describe node <node-name>

    # Inspect resource requests and limits
    kubectl describe pod <pod-name> \
    -n <namespace>

    # View node resource usage if Metrics Server is available
    kubectl top nodes

    # View pod resource usage
    kubectl top pods -n <namespace>

    An important distinction is that the Kubernetes scheduler evaluates resource requests and scheduling constraints, not simply the current CPU or memory utilization shown by monitoring tools.

    Therefore, an apparently idle node may still be unable to schedule a pod if its allocatable resources are already reserved by existing workload requests.

    Recovery considerations


    In non-production environments, temporarily reducing unused application replicas may free enough capacity for a new deployment.

    However, this is an operational workaround rather than a long-term architectural solution.

    More sustainable approaches include reviewing resource requests, planning node capacity, configuring suitable autoscaling, and defining an appropriate rollout strategy.

    Architectural lesson


    Cluster sizing should account for deployment-time resource requirements, not only steady-state application consumption.

    Before implementing a rolling or blue-green deployment strategy, architects should understand:

    • How many old and new pods may coexist.
    • How resource requests affect scheduling.
    • Whether cluster capacity supports temporary workload overlap.
    • Whether autoscaling can provide additional resources.
    • How deployment behavior changes when scheduling is delayed.

    A deployment strategy that works under normal conditions may fail during an upgrade if spare capacity has not been planned.

    4. The Hidden Risk of Configuration Changes


    Containerized applications are often described as immutable deployments.

    While the container image may be immutable, the configuration surrounding the application is not.

    Configuration may originate from Kubernetes ConfigMaps, Secrets, external secret-management systems, application databases, or custom configuration platforms.

    In one deployment scenario, rebuilding application configuration data removed values that the application required.

    The application image itself was not necessarily faulty.

    The problem originated from missing environment-specific configuration.

    Understanding the configuration problem


    Some enterprise applications store configuration records in database schemas rather than exclusively using Kubernetes ConfigMaps or Secrets.

    When deployment procedures rebuild those schemas, configuration that was created or modified manually may be lost unless it is explicitly preserved or recreated.

    This creates an important distinction between deploying new application binaries and rebuilding application configuration.

    A database schema operation can have consequences beyond the code version being deployed.

    Practical example


    Consider an application that depends on:

    • Database connection configuration.
    • External API endpoints.
    • Authentication credentials.
    • Encryption or key-management references.
    • Environment-specific application settings.

    If a configuration rebuild removes one of these values, the application may fail during startup or encounter functional failures after becoming ready.

    The resulting problem can appear to be an application defect even when the real cause is missing configuration.

    Architectural lesson


    Configuration ownership and persistence should be clearly defined.

    A deployment process should identify:

    1. Which configuration is maintained through source-controlled definitions.
    2. Which values are retrieved from external secret-management systems.
    3. Which configuration must survive application upgrades.
    4. Which values are environment-specific.
    5. How required settings are validated before the application becomes available.

    Sensitive values should not depend on manual re-entry after normal deployments.

    Where possible, configuration should be reproducible, securely managed, and validated through automated release processes.

    An immutable container image does not guarantee an immutable or reproducible application environment.

    5. Why Cancelling a Deployment Does Not Guarantee Rollback


    A more complex deployment incident involved an interrupted Helm upgrade.

    The upgrade had already submitted operations to the Kubernetes API server when the client-side process was interrupted.

    Although the operator stopped the command, some server-side operations continued.

    A database operation completed, while the remainder of the deployment did not finish as expected.

    This created a difference between the intended deployment state and the actual state of the environment.

    Understanding the problem


    Helm manages Kubernetes resources through the Kubernetes API.

    When an upgrade starts, resources such as Deployments and Jobs may already have been created or updated.

    Interrupting the Helm command does not automatically reverse every operation already accepted by the Kubernetes API server.

    For example, a migration Job may continue executing after the command that initiated the deployment has been interrupted.

    If that Job modifies an external database, those changes may persist independently of the Helm release state.

    Investigation


    Before attempting another deployment, the actual cluster state must be understood.

    Useful checks include:

    # Check Helm release history
    helm history <release-name> \
    -n <namespace>

    # Inspect the current Helm release
    helm status <release-name> \
    -n <namespace>

    # Check Kubernetes Jobs
    kubectl get jobs -n <namespace>

    # Check pods created by the deployment
    kubectl get pods -n <namespace>

    # Inspect a particular Job
    kubectl describe job <job-name> \
    -n <namespace>

    # Inspect Job execution logs
    kubectl logs job/<job-name> \
    -n <namespace>

    These checks help determine whether deployment-related operations are still active, completed, or failed.

    However, Kubernetes resource status alone may not reveal the full database state.

    Migration logs and database changelog records should also be examined before retrying the release.

    Rollback considerations


    A Helm rollback primarily restores the release's Kubernetes resource configuration to a previous revision.

    It does not automatically reverse all database modifications or external side effects caused by the deployment.

    For this reason, destructive database operations require particular care.

    A cancelled deployment followed by an immediate retry can be dangerous if the first attempt has already partially modified the database.

    Architectural lesson


    Deployment recovery should begin with understanding the actual state, not simply repeating the previous command.

    For complex enterprise applications, recovery procedures should distinguish between:

    • Kubernetes resource changes.
    • Application configuration updates.
    • Database schema modifications.
    • Data migration operations.
    • External integrations or side effects.

    A deployment rollback is not necessarily a business-system rollback.

    6. A Practical Deployment Validation Checklist


    These experiences changed how I think about deployment verification.

    Rather than relying exclusively on a successful Helm command or the readiness status of Kubernetes pods, I prefer to evaluate deployments through several independent validation layers.

    Infrastructure validation


    Verify that the expected pods are scheduled, storage resources are available, networking dependencies are accessible, and workloads have sufficient resources.

    kubectl get pods -n <namespace>

    kubectl get deployments -n <namespace>

    kubectl get pvc -n <namespace>

    kubectl get events -n <namespace> \
    --sort-by=.lastTimestamp

    Application validation


    Confirm that the application has completed initialization and that critical readiness components are operational.

    A running container does not automatically indicate that the application is ready to handle business requests.

    Database validation


    Check that the required migration operations completed successfully.

    Verify the database migration state independently from the application's database connectivity health check.

    Where appropriate, inspect Liquibase changelog history and confirm that the expected release changesets were applied.

    Release validation


    Confirm that the running container image corresponds to the intended release.

    Review the Helm release status and ensure that no unexpected migration or coordination Jobs remain active.

    helm status <release-name> -n <namespace>

    kubectl rollout status deployment/<deployment-name> \
    -n <namespace>

    kubectl get jobs -n <namespace>

    Functional validation


    Exercise representative application operations after deployment.

    For example, enterprise application validation may include authentication, transaction inquiries, API communication, or other critical workflows appropriate to the system.

    Infrastructure health checks should complement functional testing rather than replace it.

    Recovery validation


    Confirm that there is a documented and tested recovery approach if the new release fails.

    This may include preserving the previous application version, restoring configuration, or executing a controlled rollback.

    Database operations that cannot be automatically reversed should be explicitly documented.

    The objective is to ensure that deployment failures can be understood and recovered from without unnecessary additional changes.

    7. Key Lessons from Real-World Kubernetes Deployments


    Across these incidents, several engineering lessons consistently emerge.

    1. Running does not mean ready.

    A container can remain active even when important application initialization steps have failed.

    2. Readiness does not guarantee business correctness.

    A service may pass health checks while database migrations or required configuration updates remain incomplete.

    3. Rolling deployments require additional capacity.

    Resource planning must consider temporary overlap between existing and replacement workloads.

    4. Configuration requires the same discipline as application code.

    Environment-specific settings, credentials, and configuration records should be reproducible and safely managed.

    5. Deployment interruption does not guarantee rollback.

    Kubernetes Jobs, database migrations, and external side effects may continue after the client-side deployment process stops.

    6. Immediate recovery and permanent resolution are different activities.

    Restarting a pod or retrying a deployment may restore service, but unresolved architectural defects can recur.

    7. Deployment success should be validated at multiple levels.

    Infrastructure, application readiness, database state, release consistency, and functional correctness require separate checks.

    Conclusion


    Kubernetes provides powerful capabilities for orchestrating and managing applications, but it cannot automatically determine whether every aspect of an enterprise system is correct.

    The incidents discussed here demonstrate how application startup ordering, database migration state, resource constraints, configuration management, and interrupted deployment operations can affect an otherwise routine release.

    One of the most useful lessons I have learned from working with enterprise applications on Kubernetes is that a green health indicator is evidence of a particular check passing, not proof that the entire system is functioning correctly.

    Reliable deployments require carefully designed readiness signals, explicit migration verification, adequate rollout capacity, controlled configuration management, and meaningful functional validation.

    The objective is not merely to make deployments succeed.

    It is to make their outcomes predictable, observable, and recoverable.

    About the Author

    Naveed Akram is a Solutions Architect at Diebold Nixdorf with nearly 16 years of professional experience in software engineering, enterprise architecture, digital banking, and cloud technologies. His technical interests include distributed systems, Kubernetes, AWS, enterprise integration, and AI-assisted software engineering.#kubernetes #aws #architecture #devops #software #coding #development #engineering #inclusive #community
    Lessons from Deploying Mission-Critical Applications on Kubernetes: Reliability, Configuration, and Troubleshooting

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

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

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

    The headline number

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


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

    What it refuses: one thread per interpreter, not shared


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

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

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

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

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


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

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


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

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


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

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

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

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

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


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

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

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

    What's actually shareable between interpreters


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

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

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

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

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

    NotShareableError: object does not support cross-interpreter data

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

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

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

    What I got wrong on the way


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

    Run it yourself


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

    docker pull python:3.14-slim

    The core benchmark:

    # bench.py
    import time, threading, sys

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

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

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

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

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

    And the refusal, which needs no setup at all:

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

    What to do with this


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

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

Share on Mastodon

Enter the server where you have an account.