home.social

Search

58 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. Entropy’s Rotoscope Issue II [page 2/24]

    next page tomorrow

    full comic: https://kamiokan.de/entropysrotoscope/issue2

    all issues: https://kamiokan.de/entropysrotoscope

    RSS: https://kamiokan.de/entropysrotoscope/rss.xml

    draw me something if you like this.

    CC0 / Public Domain

    if you have ever donated me money, you can have your nick/name on the last page of printed version of thiss, just send 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.)

    #unix_surrealism #comic #fediart #art #inktober #entropysrotoscope #kamiokande #computer

  12. 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!

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

  14. I wanted to create a 60-second cinematic FPV travel film across the United States, moving from New York to San Francisco and Los Angeles.

    The goal wasn't simply to generate impressive AI footage. I wanted the entire film to feel like one continuous drone journey rather than a collection of unrelated clips stitched together in post-production.

    That introduced three practical challenges:

    • Maintaining visual continuity across independently generated clips.
    • Controlling camera movement, lighting, and transitions through prompts.
    • Fixing individual shots without regenerating the entire video.

    I built the film using GMI Cloud's video generation models, frame chaining, and FFmpeg.

    The final output was exactly 60 seconds long, rendered at 1080p, with a targeted replacement for a shot that generated incorrectly.

    Here's how the pipeline worked, including the API issues, failed generations, and techniques that made the workflow more reliable.

    1. Understanding the Duration Constraint


    The first step was checking the available models and their actual generation limits.

    Rather than relying on model names or assumptions, I used GMI Cloud's get_model tool to inspect the supported parameters, duration limits, and pricing.

    get_model({ model_id: "seedance-2-5-260628" })
    get_model({ model_id: "wan3.0-video" })
    get_model({ model_id: "veo-3.1-generate-001" })

    The following figures reflect the catalog and pricing I observed during development in October 2026. Verify them against the current catalog before using them in production.

    ModelMaximum durationObserved 1080p price/secRelevant capabilitiesseedance-2-5-26062830 seconds$0.569First-frame and last-frame conditioning, reference images, audio generationwan3.0-video30 seconds$0.20Frame conditioning, reference images, separate negative promptveo-3.1-generate-0018 seconds$0.40High photorealism, two-frame conditioningkling-3.0-turbo-t2v15 seconds$0.14Text-to-video generationseedance-2-0-260128-upscale15 seconds$0.056Budget-oriented optionveo-3.1-lite-generate-0018 seconds$0.05Lower-cost generation at supported resolutions


    These capabilities and prices are model- and configuration-dependent. Check the current API schema before building around a particular parameter.

    The key constraint was straightforward: no model in this selection could generate the entire 60-second film in one request.

    I therefore split the project into two 30-second generations.

    Fewer, longer clips reduce the number of boundaries that need to be managed. A six-clip pipeline introduces five joins, while a two-clip pipeline introduces just one.

    However, clip length shouldn't be the only consideration. The structure of the film matters, too. If a story naturally contains three distinct locations or sequences, three shorter clips may be easier to control than two longer generations.

    The objective is to minimize unnecessary joins without forcing unrelated scenes into one generation.

    2. Prompt Engineering: Control the Camera Before the Scene


    One of the biggest lessons from this project was that a video prompt needs to describe motion, not just visual content.

    My initial prompts combined several events into short sequences:

    • Dive between skyscrapers.
    • Sweep toward the Hudson River.
    • Transition from sunrise to blue hour.
    • Race through city streets.
    • Introduce light trails.

    The results were inconsistent. Architecture distorted, transitions became muddy, and the camera sometimes appeared to blend incompatible locations.

    The problem was trying to control too many independent events in a single prompt.

    My revised approach was to define a continuous camera movement with explicit scene timing.

    The single-movement principle


    Describe one continuous camera journey per generation, and use FFmpeg for editorial cuts.

    This doesn't mean a longer generation must contain only one location. It means the transitions between locations should follow a physically understandable camera movement rather than asking the model to perform several unrelated edits.

    For example, an aircraft wing can pass across the lens and temporarily obscure the entire frame. The next location can emerge as the wing clears.

    That provides a visual transition the model can attempt to render as part of the camera movement.

    Here's an excerpt from the prompt used for the film:

    Ultra-realistic cinematic FPV drone travel film, 30 seconds, 16:9.

    One continuous high-speed journey across the United States.
    Maintain forward camera momentum throughout.

    Photorealistic imagery, consistent teal-and-orange commercial
    color grading, high dynamic range, natural film grain,
    subtle horizontal anamorphic lens flare, and a wide 14mm lens.

    Use smooth motion blur only during the fastest movements.

    No text, captions, subtitles, logos, watermarks, or readable
    signage.

    SHOT 1 (0-7s):
    Above New York City at sunrise. Low mist surrounds the
    skyscrapers as the drone tips forward and dives between
    glass towers. Golden light reflects across the facades.

    SHOT 2 (7-15s):
    The camera descends to street level and races down a wide
    Manhattan avenue. Moving cars pass beneath the camera,
    their headlights and taillights creating flowing light trails.

    SHOT 3 (15-22s):
    The drone rises over New York Harbor. A ferry crosses the
    water below, leaving a white wake. The camera sweeps around
    to reveal the Statue of Liberty in the morning haze.

    SHOT 4 (22-30s):
    An aircraft wing passes directly across the lens, filling
    the frame. As it clears, the camera emerges above turquoise
    Pacific water near San Francisco, moving toward the Golden
    Gate Bridge as its red towers appear through coastal fog.

    The timing provides structure, but it doesn't guarantee that the model will follow every boundary precisely. Treat shot durations as guidance and inspect the generated footage before editing.

    Keep the visual identity consistent


    Consistency doesn't require identical lighting throughout the film.

    The sequence moves between sunrise, daylight, golden hour, and night. Those changes are part of the story.

    What should remain relatively stable is the visual treatment:

    • Color grading.
    • Lens characteristics.
    • Motion style.
    • Contrast and highlight handling.
    • Overall level of realism.

    I repeated the same visual descriptors across prompts while allowing the lighting and environment to change.

    This gave the film a more consistent look without making every location feel artificially identical.

    Negative prompts are model-specific


    Different models expose different controls.

    For example, wan3.0-video supports a dedicated negative_prompt parameter, while the Seedance 2.5 configuration I used did not expose that parameter.

    For Seedance, I placed unwanted elements directly in the prompt:

    No text, captions, subtitles, logos, watermarks, or readable
    signage anywhere in the frame.

    The general lesson is to inspect the actual model schema rather than assume that every video model supports the same parameters.

    3. Frame Chaining: Maintaining Continuity Between Clips


    Frame chaining was the central technique in this project.

    Instead of generating two unrelated clips and trying to hide their differences afterward, I used the final frame of the first clip to condition the beginning of the second.

    The pipeline is simple:

    1. Generate clip A.
    2. Extract a frame near the end of clip A.
    3. Upload the frame to GMI Cloud.
    4. Pass its URL as the first_frame parameter when generating clip B.
    5. Inspect the boundary and adjust the edit if necessary.

    The second generation now has a visual reference for where the first generation ended.

    Extracting the frame with FFmpeg


    I extracted a frame near the end of the first clip:

    ffmpeg -y -ss 29.9 -i clipA.mp4 \
    -frames:v 1 chain_last.png

    I then normalized the image to the intended output dimensions and converted it to JPEG:

    ffmpeg -y -i chain_last.png \
    -vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080" \
    -q:v 3 chain_first.jpg

    The output dimensions should match the intended video aspect ratio. If the source frame already has the correct dimensions, unnecessary scaling and cropping can be avoided.

    The extracted image becomes the conditioning frame for the next generation.

    Uploading the frame to GMI Cloud


    The upload_media operation returns a signed upload_url and a public_url.

    These serve different purposes:

    • upload_url is the destination for uploading the file.
    • public_url is the image URL supplied to the video generation request.

    The signed URL doesn't upload the file automatically. You must send the image bytes to it.

    Here's a minimal Python example:

    import urllib.request

    upload_url = "<upload_url from upload_media>"

    with open("chain_first.jpg", "rb") as image_file:
    image_data = image_file.read()

    request = urllib.request.Request(
    upload_url,
    data=image_data,
    method="PUT",
    headers={"Content-Type": "image/jpeg"},
    )

    with urllib.request.urlopen(request) as response:
    print(response.status)

    Use the URL and HTTP method specified by the upload operation. If the signed URL expires or the upload returns a signature error, request a fresh URL and retry.

    I encountered a 403 SignatureDoesNotMatch error with an earlier upload URL. Requesting a new URL resolved the problem in my case.

    Generating the next clip


    With the frame uploaded, I passed its public URL to Seedance 2.5.

    The following is a representative request structure; use the exact field names and request envelope documented by the current API.

    {
    "model_id": "seedance-2-5-260628",
    "prompt": "<your scene and camera-movement prompt>",
    "parameters": {
    "duration": 30,
    "resolution": "1080p",
    "ratio": "adaptive",
    "first_frame": "<public_url of chain_first.jpg>",
    "generate_audio": true,
    "watermark": false
    }
    }

    The critical setting was ratio.

    The ratio configuration issue


    I encountered failed generations when using an explicit ratio: "16:9" and when omitting the ratio entirely.

    The API returned an error explaining that, when first-frame or first-and-last-frame conditioning is used, the output aspect ratio follows the input frame.

    The configuration that worked was:

    "ratio": "adaptive"

    For this particular model configuration, using ratio: "adaptive" resolved the issue.

    Don't assume that a parameter's default value is valid for every generation mode. Frame-conditioned generation can have different validation rules from text-to-video generation.

    Verify this behavior against the current API documentation before relying on it in another model version.

    What frame chaining actually guarantees


    Frame chaining is useful, but it is important to distinguish three different forms of continuity.

    Frame continuity: The next generation receives a reference image matching the preceding clip's endpoint.

    Temporal continuity: Camera motion, object movement, lighting, and perspective evolve naturally across the boundary.

    Subject continuity: People, vehicles, and other objects maintain their identity and appearance across shots.

    Frame chaining primarily addresses the first problem. It can help with the second, but it doesn't guarantee a perfect motion transition. It also doesn't guarantee subject consistency across independently generated scenes.

    A matching boundary frame is not proof that the surrounding motion will be seamless.

    For recurring subjects, combine frame conditioning with reference images where the model supports them.

    ModelReference parameterObserved catalog limitwan3.0-videoreference_image, reference_videoUp to 10 images and 5 videosseedance-2-5-260628reference_images, reference_videosUp to 9 images and 3 videoshappyhorse-1.1-r2vreference_imageUp to 5 images


    These limits are model-specific and should be verified before use.

    I also found that frame chaining works best when the next clip continues a compatible scene.

    A coastline transitioning into a bridge approach provides a natural continuation. A sudden jump from San Francisco to a Los Angeles street is a different editorial event and is often better handled as a deliberate cut.

    Chain compatible camera movements. Use editing to handle genuine changes in scene or location.

    4. Stitching the Film with FFmpeg


    Once the clips were generated, I assembled them into the final video.

    For a simple join, FFmpeg's concat demuxer is convenient when the input files have compatible stream properties.

    Create a file named list.txt:

    file 'clipA.mp4'
    file 'clipB.mp4'

    Then concatenate the clips:

    ffmpeg -y -f concat -safe 0 -i list.txt \
    -t 60.0 \
    -vf "fps=24,scale=1920:1080:flags=lanczos,format=yuv420p" \
    -c:v libx264 -preset slow -crf 17 \
    -c:a aac -movflags +faststart \
    out/master.mp4

    This example assumes that the input streams are compatible with the chosen filter and encoding pipeline. Incompatible codecs, time bases, resolutions, or audio streams may require normalization before concatenation.

    The command also re-encodes the video, so it is not a lossless join.

    When the clips need different processing


    For the final replacement, I needed to combine a 50-second section of the existing master with a newly generated 10-second clip.

    I used a filter graph to concatenate the video and audio streams while normalizing the video output:

    ffmpeg -y -i head.mp4 -i clipFix.mp4 \
    -filter_complex \
    "[0:v][1:v]concat=n=2:v=1:a=0,fps=24,scale=1920:1080:flags=lanczos,format=yuv420p[v]; \
    [0:a][1:a]concat=n=2:v=0:a=1[a]" \
    -map "[v]" -map "[a]" \
    -t 60.0 \
    -c:v libx264 -preset slow -crf 17 \
    -profile:v high -level 4.2 \
    -c:a aac -b:a 192k \
    -movflags +faststart \
    out/america_60s_16x9_v2.mp4

    This version assumes both inputs contain compatible audio streams. If one clip lacks audio, the filter graph needs to be adjusted to create or omit the missing stream.

    Also, -t 60.0 limits the output duration; it doesn't independently guarantee that the final file contains exactly 60 seconds of usable footage.

    To verify the result, inspect the actual duration and frame count.

    ffprobe -v error \
    -show_entries format=duration \
    -of default=noprint_wrappers=1:nokey=1 \
    out/america_60s_16x9_v2.mp4

    For a 24 fps output, 60 seconds corresponds to 1,440 frames. Checking both duration and frame count is useful when exact delivery specifications matter.

    Creating a cinematic 2.39:1 presentation


    The source video was generated at 16:9, but I also wanted to test a wider cinematic presentation.

    One option is to scale the image to 1920 × 804 and add black bars to restore a 1920 × 1080 canvas:

    ffmpeg -y -i master.mp4 \
    -vf "scale=1920:804:flags=lanczos,pad=1920:1080:0:138:black" \
    -c:v libx264 -preset slow -crf 17 \
    -profile:v high \
    -c:a copy \
    -movflags +faststart \
    out/master_239.mp4

    This produces an approximately 2.39:1 image area within a 16:9 video frame.

    Letterboxing preserves the entire scaled image, unlike a direct vertical crop that discards parts of the original frame.

    However, scaling the full 16:9 image to 1920 × 804 changes its proportions unless the image is cropped first. For a geometrically correct widescreen presentation, use a crop-and-scale pipeline when necessary.

    5. Re-Rendering One Bad Shot Instead of the Entire Film


    One of the most useful aspects of this workflow was the ability to replace a specific segment without rebuilding the whole video.

    During generation, the Hollywood sign appeared as "HOLFWOOD" instead of "HOLLYWOOD".

    This is a familiar limitation of generative video models: text can look convincing at a glance while individual characters remain incorrect or unstable.

    Regenerating the entire 60-second film would have wasted both time and credits.

    Instead, I extracted the frame at the replacement boundary, used it as the new clip's first_frame, and generated a replacement segment.

    ffmpeg -y -ss 50.0 -i out/master.mp4 \
    -frames:v 1 splice_first.jpg

    After uploading the frame and generating the replacement clip, I rebuilt the master from the unchanged opening section and the new footage.

    The replacement was approximately 10 seconds long.

    Prompting for accurate text


    For the replacement, I made the lettering requirement explicit:

    CRITICAL: The hillside sign must read exactly HOLLYWOOD.

    The spelling is H-O-L-L-Y-W-O-O-D: nine letters.

    The fourth letter must be L, not F.

    The letters are large, white, individually formed capital
    letters arranged in a straight horizontal line on a dry,
    brown hillside.

    Keep the lettering stable, correctly formed, and clearly
    visible from the front. Do not distort, rearrange, or replace
    any characters.

    The revised generation produced the intended spelling.

    This doesn't mean literal prompts can reliably solve text rendering in every model. It means a specific description of the expected output and known failure can improve the next attempt.

    For shots containing signs, product labels, or other critical text, I recommend treating one or two targeted re-renders as part of the production budget.

    When exact typography is essential, a more reliable approach is to add the text during post-production rather than depend on the video model to render it correctly.

    6. Practical Issues I Encountered


    The creative workflow was only part of the implementation. Several API and environment issues also affected the process.

    Keep generation parameters in the expected structure


    My generation-estimation requests required model-specific parameters to be nested under parameters.

    For example:

    {
    "model_id": "seedance-2-5-260628",
    "prompt": "<prompt>",
    "parameters": {
    "duration": 30,
    "resolution": "1080p",
    "ratio": "adaptive"
    }
    }

    Use the structure expected by the relevant operation. An estimation endpoint and a generation endpoint may not accept identical request bodies.

    An MCP timeout doesn't necessarily mean generation failed


    One submit_generation request timed out on the client side while the server-side generation continued running.

    Submitting the same request again could have created unnecessary work or additional charges.

    Instead, I used list_generations to inspect the existing jobs and recover their status.

    For production systems, keep track of generation IDs, request parameters, and job status. When supported, use idempotency controls to distinguish intentional re-renders from accidental duplicate submissions.

    Check which credits apply to each model


    My account displayed a zero-dollar balance alongside promotional credits. One model returned an insufficient_balance error, while another accepted the request.

    This was an account-specific result, not proof that all promotional credits are restricted in the same way.

    Before running a large batch, verify that the available credits apply to the selected model and generation configuration.

    Verify your FFmpeg version


    My system FFmpeg installation was too old to handle the HEVC Main10 output produced by the video model.

    The resulting codec errors initially looked like a problem with the downloaded file.

    I installed a newer FFmpeg binary through imageio-ffmpeg:

    pip install imageio-ffmpeg

    Then I checked the binary path:

    python -c "import imageio_ffmpeg; print(imageio_ffmpeg.get_ffmpeg_exe())"

    Use a sufficiently recent FFmpeg build with the codecs required by your source footage.

    For reproducible workflows, check the installed version and codec support before beginning a batch of generations.

    Verify audio instead of trusting the response


    Although I requested audio generation, both clips returned valid AAC audio streams that were effectively silent.

    I checked the audio levels with:

    ffmpeg -i clip.mp4 \
    -af volumedetect \
    -f null - 2>&1 | grep -E "mean_volume|max_volume"

    A valid audio stream doesn't necessarily contain audible sound. Inspect the output and listen to the actual result before delivery.

    Separate language-model usage from media-generation costs


    The account-summary information I inspected reported language-model usage separately from image and video generation.

    Don't treat an LLM token-cost report as a complete accounting of a media-generation project.

    Track the actual generation requests and their associated charges, and reconcile them against the relevant billing information.

    7. Cost Breakdown


    The final film used two 30-second clips and one 10-second replacement.

    GenerationDurationObserved costClip A — Seedance 2.5, 1080p30 seconds$17.07Clip B — Seedance 2.5, 1080p, frame-conditioned30 seconds$17.07Replacement clip — Seedance 2.5, 1080p10 seconds$5.69Total70 generated seconds$39.83


    The total cost was $39.83 for a final 60-second film.

    Notice that the generation duration adds up to 70 seconds, not 60. The extra 10 seconds came from replacing the incorrect segment.

    The effective cost was approximately $0.66 per second of finished video.

    These figures reflect the pricing and usage observed during this project. They exclude any additional costs not reflected in the recorded generation charges.

    A lower-cost model may make experimentation more affordable, but cheaper generation can also require additional attempts to reach the desired visual quality.

    The right choice depends on the importance of photorealism, continuity, generation speed, and budget.

    Budget for re-renders from the beginning. A pipeline that assumes every generated shot will be usable is likely to underestimate its actual cost.

    8. Scaling the Pipeline Beyond 60 Seconds


    The same approach can be extended to longer films.

    At a maximum of 30 seconds per clip:

    Final durationNumber of clipsNumber of joins60 seconds213 minutes655 minutes10910 minutes2019


    These counts assume full-length 30-second clips. Shorter clips may be more appropriate when the story contains distinct scenes or requires tighter control.

    Each additional join creates another opportunity for mismatched motion, lighting, composition, or subject appearance.

    Several practices make a longer pipeline easier to manage.

    Choose boundary frames deliberately


    Don't extract the final frame automatically without checking it.

    Look for a frame where the camera is passing behind an object, approaching a new landmark, or entering a natural visual transition.

    These moments can make an editorial boundary less noticeable.

    However, the extracted frame should also provide a useful starting composition for the next generation. A visually interesting boundary is not necessarily a good conditioning frame if the next scene cannot continue naturally from it.

    Preserve intermediate frames and generation metadata


    Archive the conditioning frame used for every clip, along with:

    • The original prompt.
    • Model ID and generation parameters.
    • Generation job ID.
    • Source and output file paths.
    • Cost and duration.
    • Notes about failed attempts.

    If clip 4 needs to be regenerated, the saved endpoint from clip 3 allows you to reproduce its starting condition without rebuilding the earlier footage.

    This makes the workflow easier to debug and maintain.

    Parallelize independent generations


    Once the necessary reference frames are available, independent segments can be generated concurrently.

    A fully sequential chain cannot be generated entirely in parallel because each clip may depend on the preceding clip's output.

    A practical compromise is to divide the film into sequences that can be generated independently, then chain clips within each sequence.

    Use idempotency controls where supported, and check the job list before retrying a timed-out request.

    Make every segment independently replaceable


    Treat each generated clip as a separate production asset.

    The master video should be a reproducible output of the individual segments and the editing pipeline, not the only copy of the project.

    That allows a single failed shot to be replaced without rebuilding the entire film.

    9. Visual Verification Before Delivery


    A successful API response doesn't mean the video is ready to publish.

    I used FFmpeg to extract representative frames from across the timeline and assemble them into a contact sheet.

    This made it easier to identify changes in visual style, unexpected objects, and problems with transitions.

    For example, to inspect eight points in the film:

    mkdir -p keys

    for t in 1 9 17 25 33 41 49 58; do
    ffmpeg -y -ss "$t" -i out/master.mp4 \
    -frames:v 1 \
    -vf "scale=470:-1" \
    "keys/m_${t}.jpg"
    done

    The individual frames can then be assembled into a contact sheet.

    A contact sheet is useful for reviewing the overall visual progression, but it won't reveal every temporal artifact.

    For that, inspect the actual footage around each join, preferably frame by frame or at reduced playback speed.

    For the Hollywood sign, I also extracted frames at half-second intervals to check whether the lettering remained stable throughout the replacement segment.

    This helped distinguish incorrect lettering from frames where the sign was partially visible or viewed at an angle.

    My final verification checklist included:

    • [ ] Confirm the final duration and frame rate.
    • [ ] Inspect every join for jumps in camera position or motion.
    • [ ] Check lighting, color grading, and scene continuity.
    • [ ] Review text, faces, architecture, and other high-risk details.
    • [ ] Verify audio levels and playback.
    • [ ] Confirm the output resolution and encoding.
    • [ ] Play the final exported file from beginning to end.

    The model generates the footage. The editing and verification pipeline determines whether it is ready to ship.

    Conclusion


    Building a continuous AI-generated film is not just a prompting problem. It is a pipeline problem involving generation limits, frame conditioning, asset management, editing, and quality control.

    For this project, frame chaining provided a practical way to connect separately generated clips while keeping each segment independently replaceable.

    The most important lessons were:

    1. Check model capabilities before designing the pipeline. Generation limits and parameter support determine how the film should be structured.
    2. Describe camera movement explicitly. A coherent camera path is easier to manage than a prompt containing unrelated transitions.
    3. Use frame chaining for continuity. The previous clip's endpoint provides a visual starting condition for the next generation.
    4. Keep the pipeline modular. Replace failed segments rather than regenerating the entire film.
    5. Verify the actual output. Inspect the joins, text, audio, duration, and final encoding.
    6. Budget for failed generations. Re-renders are part of the workflow, not an unexpected exception.

    The final film cost $39.83 in recorded generation charges and required 70 seconds of generated footage to produce 60 seconds of finished video.

    The broader takeaway is that AI video generation becomes more manageable when treated as a reproducible media pipeline rather than a sequence of isolated prompts.

    Frame chaining won't eliminate every continuity problem, but it gives you a useful degree of control over how separately generated footage fits together.

    Model capabilities, parameter support, and pricing are subject to change. The figures in this article reflect observations from October 2026. Check the current GMI Cloud model catalog and API documentation before implementing the workflow.#ai #tutorial #beginners #showdev #software #coding #development #engineering #inclusive #community
    Frame-Chaining AI Video: Building a 60-Second Film with GMI Cloud

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

  16. 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
  17. 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

  18. 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
  19. 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

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

  21. 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
  22. 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

  23. AI can generate a financial model that looks coherent, contains valid formulas, and produces a plausible result while still being wrong in ways that matter.

    A formula can reference the wrong cell. A cost assumption can be expressed in the wrong unit. A revenue schedule can omit a phase. A model can calculate correctly from an unsupported market assumption.

    These are different failure modes, and they need different controls. For real estate feasibility models, the objective should not be to ask whether an AI-generated workbook looks correct. It should be to establish which properties can be tested automatically, which assumptions require evidence, and which decisions must remain with a qualified human reviewer.

    A useful validation architecture has five layers:

    1. Structural validation
    2. Deterministic calculation checks
    3. Domain and consistency checks
    4. Evidence and provenance checks
    5. Human review and approval

    No single layer is sufficient.

    1. Separate the output from the evidence


    Consider a hypothetical development model with the following inputs:

    • Site area and developable area
    • Permitted gross floor area
    • Unit mix or lettable area
    • Revenue assumptions
    • Construction and other development costs
    • Financing assumptions
    • Development programme
    • Exit assumptions

    The model calculates development costs, revenue, cash flows, residual land value (RLV), and potentially internal rate of return (IRR).

    For example, a model might calculate an RLV of £4 million. That output can be mathematically consistent with the workbook and still be commercially misleading if the revenue assumptions are unsupported or the construction cost basis is outdated. Validation therefore needs to test both the calculation and the justification for its inputs.

    2. Layer one: validate the structure before the numbers


    Before reviewing financial logic, validate the shape of the generated output. If an AI system is expected to return structured data before creating a workbook, define an explicit contract. JSON Schema is one established option for specifying required fields, data types, and constraints.

    See the JSON Schema getting-started guide.
    A simplified model input contract might look like this:
    {
    "project_id": "DEMO-001",
    "currency": "GBP",
    "site_area_sqm": 5000,
    "gross_floor_area_sqm": 12000,
    "construction_cost_per_sqm": 1800
    }
    This is illustrative data, not a market benchmark or a recommendation for a production schema.

    A structural validator could check that:

    • Required fields are present.
    • Numeric values are actually numeric.
    • Areas and costs use declared units.
    • Currency is explicitly identified.
    • Values fall within defined technical bounds.
    • Unexpected fields are rejected or handled deliberately.
    • Missing values are not silently replaced with zero.

    The last point is important. Zero and unknown are not equivalent. If a finance rate is missing, substituting zero can make a model appear more profitable. A missing value should normally trigger a validation error or an explicit unresolved status.

    Structural validation establishes that the model can be interpreted. It does not establish that the model is economically sensible.

    3. Layer two: use deterministic checks for deterministic rules


    Rules that can be expressed precisely should not depend on an LLM's judgment. For example, if a model defines construction cost as gross floor area multiplied by construction cost per square metre, the expected calculation is:

    \text{GFA}
    \times
    \text{Cost per sqm}
    ]
    For the hypothetical inputs above:
    [
    12{,}000 \times £1{,}800 = £21{,}600{,}000
    ]
    A deterministic test can independently calculate the expected result and compare it with the workbook output.
    from decimal import Decimal

    gfa_sqm = Decimal("12000")
    cost_per_sqm = Decimal("1800")
    reported_cost = Decimal("21600000")

    expected_cost = gfa_sqm * cost_per_sqm

    assert expected_cost == reported_cost

    This test checks arithmetic for the stated formula. It does not establish that the GFA is permitted, that the cost rate is appropriate, or that the formula captures every relevant cost.

    A production implementation should also define tolerances where appropriate, particularly when comparing rounded spreadsheet values or calculations involving floating-point numbers.

    Other deterministic checks might include:
    Revenue equals the sum of its components.

    • Total costs reconcile to their component schedules.
    • Cash flow totals reconcile across periods.
    • Unit counts and areas reconcile between schedules.
    • The reported output matches an independently calculated result.
    • A sensitivity case actually changes the intended input.
    • Required formula cells are not unexpectedly blank or replaced by constants.

    Where possible, use independent calculations rather than simply checking that a formula cell contains a formula. A formula can exist and still be wrong.

    4. Layer three: validate model relationships


    Many serious errors are not syntax errors or arithmetic errors. They are inconsistencies between parts of the model.

    Suppose a development model contains:

    • 120 residential units in the unit schedule
    • 116 units in the sales schedule
    • Revenue calculated using the sales schedule
    • Construction costs calculated using the unit schedule

    Every formula may evaluate successfully, but the workbook contains a discrepancy that needs resolution.

    Domain-level checks can flag conditions such as:

    • Unit counts that differ across schedules.
    • Areas that exceed a declared model constraint.
    • Revenue periods that do not align with the programme.
    • Cost totals that exclude a populated cost category.
    • An exit value that uses an inconsistent timing assumption.
    • A sensitivity scenario that changes revenue but leaves dependent calculations unchanged.
    • An IRR calculation using a cash-flow range that omits a period.

    These checks should be encoded as explicit rules wherever the intended relationship is known.

    Some rules require context. For example, whether a particular cost should be included in a development budget depends on the model's scope and conventions. A validator should not impose a universal rule where none exists.

    Instead, it should identify the relevant condition, record the rule being applied, and send ambiguous cases for review.

    5. Layer four: validate the provenance of assumptions


    A financial model can pass every arithmetic test and still fail as an analytical tool.

    The reason is straightforward: calculations cannot establish the truth of their inputs.

    For every material assumption, a validation system should try to preserve:

    • The value and unit.
    • The source or origin of the value.
    • The source's date and relevant data period.
    • The geography and asset type, where applicable.
    • The transformation from source evidence to model assumption.
    • Any manual adjustment made by the analyst.
    • The model locations that depend on the assumption.

    Consider a construction cost assumption of £1,800 per square metre. A validator might confirm that the figure is numeric, the unit is recorded, and the workbook uses it consistently. Those checks do not establish whether the figure is suitable for the location, asset type, specification, and cost period. That question requires appropriate evidence and professional interpretation.

    An LLM may help extract candidate assumptions from documents or explain how a value is used in a workbook. The extracted result should still be checked against its source, and the resulting assumption should remain distinguishable from the underlying evidence.
    A useful principle is:
    Traceability makes an assumption inspectable. It does not make the assumption correct.

    6. Layer five: make human review a defined state transition


    Human review should not be an informal final glance after an automated process has already treated the model as complete.

    A practical workflow can represent validation explicitly:

    GENERATED
    |
    v
    STRUCTURE_CHECKED
    |
    v
    CALCULATIONS_CHECKED
    |
    v
    DOMAIN_CHECKED
    |
    v
    EVIDENCE_REVIEWED
    |
    v
    HUMAN_APPROVAL_REQUIRED
    |
    +----> APPROVED FOR THE DEFINED PURPOSE
    |
    +----> RETURNED FOR CORRECTION
    |
    +----> BLOCKED: UNRESOLVED ISSUE

    The states are illustrative, but the distinction matters. A successful automated test should not automatically mean that a model is approved. Approval should be scoped to a defined version of the workbook, its assumptions, its evidence, and its intended use.
    A reviewer should be able to see:

    1. What was generated.
    2. Which automated checks passed.
    3. Which checks failed or were skipped.
    4. Which assumptions lack adequate evidence.
    5. What changed after a correction.
    6. Who approved the model and for what purpose.

    If a material input or formula changes after approval, the system should identify which checks need to run again and whether the earlier approval remains valid. This is where versioning and change tracking become part of model governance rather than administrative overhead.

    7. Design the exception path before the success path


    Validation is often designed around a clean example: the model is generated, every check passes, and the user receives the output. Production systems need to handle less convenient outcomes.

    A failed check should produce actionable information. “Validation failed” is less useful than “The unit count in the sales schedule differs from the unit schedule; review the linked inputs before approving revenue.”

    Similarly, a warning should not disappear simply because a later stage of the workflow succeeds. For auditability, preserve the check identifier, the model version, the result, the relevant evidence, and the resolution.

    8. Measure validation quality without inventing an accuracy score


    A single “model accuracy” percentage can hide important distinctions. A workbook might pass every arithmetic test while containing several unsupported assumptions. Another may contain a harmless formatting issue but have fully reconciled calculations and well-documented inputs.

    A more useful validation report separates categories:

    • Structural checks passed or failed.
    • Deterministic calculation checks passed or failed.
    • Domain checks passed, failed, or were not applicable.
    • Assumptions with verified, missing, or conflicting evidence.
    • Open exceptions and their severity.
    • Human review status.
    • The scope and version of the approved output.

    If the system is evaluated over time, track false negatives and false positives for individual validation rules against a reviewed test set. Record the test cases, expected outcomes, rule versions, and known limitations.

    Do not interpret a high pass rate as proof that the model is correct. It may simply mean that the checks cover only a narrow set of failure modes.

    The purpose of validation is to make known risks visible and testable, not to manufacture certainty.

    9. A practical implementation sequence


    A team introducing validation around AI-generated financial models does not need to automate every review step at once.

    A sensible sequence is:

    1. Define the contract. Specify the required inputs, output fields, units, and missing-value behaviour.
    2. Write deterministic tests. Start with totals, reconciliations, formula ranges, and independent calculations.
    3. Add domain checks. Encode known cross-schedule relationships and clearly defined constraints.
    4. Track provenance. Associate material assumptions with sources, dates, units, and transformations.
    5. Introduce exception handling. Make failures explicit and prevent unresolved material issues from being silently treated as passed.
    6. Define human approval. Record the reviewer, workbook version, purpose, and outstanding qualifications.
    7. Build a regression suite. Retain representative valid and invalid examples and rerun the checks when the generation logic or validation rules change.

    The test suite should include deliberate failures, not only successful examples. Examples might include missing finance assumptions, inconsistent unit counts, a formula referencing the wrong period, and a source whose geography does not match the project.

    This helps test whether the validation process detects the intended problem rather than merely accepting a plausible-looking output.

    Conclusion


    Human-in-the-loop validation is not a person checking an AI result after the important work is finished. It is a system design in which deterministic rules handle deterministic questions, domain checks expose inconsistencies, evidence is kept separate from assumptions, and a human reviewer remains accountable for unresolved judgments.

    For financial modelling, that distinction is material. A workbook can be well-formed without being economically sound, mathematically consistent without being supported by market evidence, and ready for review without being ready for a decision.

    The objective is not to make every AI-generated model look trustworthy. It is to make the model's logic, assumptions, limitations, and unresolved issues sufficiently visible that a professional can challenge it before relying on the result.#feasibility #realestate #ai #financial #software #coding #development #engineering #inclusive #community
    Human-in-the-Loop Validation for AI-Generated Financial Models

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

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