openSUSE Board Election 2026 Begins The openSUSE Election Committee has announced the start of the 2026 openSUSE Board Election. Three Board seats are up for election, and all eligible openSUSE members are encouraged to take part. The openSUSE Board asked for the election to be completed by Dec. 1, 2026, as outlined in Board ticket... https://news.opensuse.org/2026/10/24/board-election-2026-announcement/
Search
1000 results for “three_star_dave”
-
Mariko Mori Retrospective at Tokyo Museum Presents 30 Years of Futuristic Vision
Mariko Mori, “Wave UFO,” 1999–2002. More than three decades after first emerging on the contemporary art scene, Japanese…
#EuropeSays #Japan #JP #Tokyo #art #exhibition #museum
https://www.europesays.com/japan/111719/ -
Raccoon, fallow deer, wild boar - trailcam.
This week in the dense thicket behind the pond yielded only three usable shots, but the first one really pleased me.
It shows a bushy raccoon “rolling” through the leaves. Plus Fallow deer and Wild boar.
The location is the Třeboň region in South Bohemia, Czech Republic, and so far, every camera trap by the water has captured a raccoon.
https://3speak.tv/watch?v=birdwatcher/trailcam-11--23102026-443
#trailcam #wildlife #racoon #fallowdeer #wildboar -
Fox Sports writer Ralph Vacchiano named Patrick Queen as the ‘most likely’ player the Steelers would trade: “Queen’s only 27 and still a tackling machine, but he’s never quite had the impact the Steelers expected when they signed him to a three-year, $41 million deal. Now in the last year of that contract, he makes perfect sense as a rental for a team that needs defensive help down the stretch. It could be tough to sell anyone for a team trying to make one last playoff run for retiring QB Aaron Rodgers. But the Steelers also just brought back veteran ILB Elandon Roberts, who is 32 and could be a short-term fill-in if Queen is dealt.” #Steelers #NFL
-
"it is believed that tighter budgets have made it harder for the publisher to maintain such [exclusivity] arrangements with photographers." Sort of an AI effect without the AI, so, capitalism. https://petapixel.com/2026/10/26/vogue-elle-and-wsj-hire-same-photographer-for-three-identical-covers-in-one-week/
-
Aside from needing new peripherals, maybe this is fine. I’m down to two devices* there anyway. Having a KVM to switch almost seamlessly from one to the other is a moral hazard I should have dealt with years ago, if I’m brutally honest with myself. Assuming that I’m not switching between two live devices, this is sort of better because now the desktop is hooked up to the secondary (another thing that I could have done years ago).
* one device is a USB-C dock and an upright stand that can hold three laptops, coincidentally there are three fully USB-C capable laptops that reside or layover in the house.
-
NixOS Is Cool as Hell. Literally. ❄️🐧
Declarative Linux configuration, cooler laptop temperatures, and why I'm falling in love with NixOS.Some Linux distributions make you productive.
Some make you curious.
And some make you spend three hours debugging a configuration file, question your life choices, finally fix it, and then proudly tell everyone that the experience was worth it.
Welcome to NixOS.
I'm running NixOS on my Acer Aspire 7, and I've discovered two reasons to love it. One is philosophical. The other is considerably more literal.
NixOS is cool as hell, and my laptop feels cool, too.
1. Philosophically cool: an operating system you can describe
Most operating systems encourage you to configure things as you go.Install packages. Change settings. Enable services. Tweak the desktop. Repeat until everything works.
NixOS approaches system configuration differently.
Instead of treating your operating system as a collection of changes scattered across your machine, you can describe much of the desired system in configuration files.
Want a particular kernel? Declare it.
Need NVIDIA drivers? Configure them.
Want specific applications, system services, and development tools? Define them.
Then rebuild your system.
sudo nixos-rebuild switch
There is something beautiful about that approach.
Your operating system becomes something you can inspect, version-control, and reproduce. With a well-maintained configuration, rebuilding your environment becomes much more predictable.
You can experiment, track changes with Git, and roll back to an earlier system generation when an update goes wrong.
It's not magic, and it doesn't capture every application setting or personal file automatically. But as a model for managing an operating system, it's genuinely elegant.
Instead of merely using your computer, you're describing how you want it to exist.
That is philosophically cool.
2. Literally cool: my Acer Aspire 7
Now for the other meaning of cool.My machine isn't exactly a low-powered office laptop.
Here's the hardware:
- CPU: AMD Ryzen 5 5500U
- GPU: NVIDIA GeForce GTX 1650 Mobile
- RAM: 16 GB
- Storage: 512 GB NVMe SSD
- Operating system: NixOS 26.05, codenamed Yarara
- Display stack: Wayland
This machine has enough power for development, Linux experimentation, and GPU workloads. It also has dedicated graphics hardware, which introduces another variable into the thermal equation.
In my experience, my current NixOS setup has been pleasantly cool during everyday use.
Less of that uncomfortable laptop warmth, a more pleasant working experience, and the satisfaction of having a system that feels right for my hardware.
There is an important technical distinction here: NixOS doesn't automatically lower temperatures simply by being installed. CPU power management, GPU activity, background workloads, drivers, fan curves, and room temperature all matter.
Still, a cool-running Linux machine is something worth appreciating, especially when you're using it for hours every day.
And yes, I intend to measure temperatures rather than rely entirely on the highly scientific instrument known as my hands on the laptop chassis.
3. The funny part: configuration hell is part of the attraction
NixOS isn't always easy.You might want to install one package and end up learning about module options, package attributes, flakes, and configuration evaluation.
A seemingly straightforward change can lead you down a documentation rabbit hole.
Then something breaks.
You investigate, adjust the configuration, rebuild, and try again.
Eventually, it works.
And somehow, instead of swearing off Linux forever, you find yourself wanting to configure even more of the system.
That's the strange appeal of NixOS. It rewards curiosity, patience, and a willingness to understand what's happening underneath the desktop.
The configuration files can be frustrating, but they also make the system feel like a project you genuinely own.
4. Cool hardware and cool software belong together
For me, the appeal isn't just about temperatures or declarative configuration in isolation.It's about having control.
I can experiment with my Linux environment, learn how system components interact, customize my workflow, and build a setup that suits my hardware.
When the laptop runs comfortably and the system behaves as expected, the experience gets even better.
And when something breaks, at least I have a configuration I can inspect instead of trying to remember every change I've made over the last six months.
That combination of control, reproducibility, and practical comfort is what makes NixOS so compelling to me.
Final thoughts: cool in every sense that matters
NixOS is philosophically cool because it challenges how you think about operating systems.It's technically cool because declarative configuration and reproducible system generations offer a powerful way to manage Linux.
And in my experience, it's literally cool because my Acer Aspire 7 has been running pleasantly during everyday use.
I'll still need consistent temperature measurements to establish whether my setup is actually cooler than my previous one. But the experience so far has given me another reason to keep exploring.
NixOS isn't the easiest way to run Linux. It doesn't need to be.
Sometimes the interesting part is learning to do things differently.
Cool ideas. Cool configurations. Cool temperatures.
What more could a Linux enthusiast want?
Well, perhaps a configuration that builds successfully on the first try.
We can dream. 🐧❄️
NixOS #Linux #OpenSource #SysAdmin #AcerAspire7
#automation #devops #linux #opensource #software #coding #development #engineering #inclusive #community
How NixOS won me over with declarative configuration, reproducibility, and a pleasantly cool-running laptop. -
PyTorch Low-Level Primitives vs. Agent Framework Abstractions
Framework abstractions are useful until your inference latency spikes by 400 milliseconds, memory leaks across recursive runs, and you have zero visibility into the execution stack.In the rush to build autonomous AI applications, many engineering teams wrap their entire business logic in heavy multi-layer orchestrators before understanding the underlying computation. When an unhandled recursion occurs or memory leaks in long-running processes, debugging third-party wrapper classes becomes substantially more expensive than writing native code.
Here is an architectural breakdown of why engineers must understand low-level PyTorch primitives before relying on high-level framework wrappers.
1. The Cost of Framework Indirection
When you call an LLM through three nested framework wrappers:# Multi-layer wrapper abstraction
agent = AgentExecutor(
chain=LLMChain(llm=ChatOpenAI(), prompt=PromptTemplate(...)),
tools=[SearchTool(), SQLTool()],
memory=ConversationBufferMemory()
)You inherit:
- Hidden Call Stacks: 30+ frames of traceback obfuscating basic HTTP request errors or malformed payload dictionaries.
- Context Bloat: Default framework memories serialize entire objects, rapidly exhausting model context windows and inflating token costs.
- Execution Lag: Unnecessary serialization and deserialization cycles between proprietary wrapper classes.
2. Core PyTorch Primitives Every AI Engineer Must Understand
Understanding core PyTorch primitives—such as tensor layouts, attention masks, KV-caching mechanics, and CUDA stream concurrency—gives engineers the diagnostic capability to build reliable systems:A. Tensor Memory Layouts & Stride Arithmetic
Tensors are not generic Python lists. They are continuous blocks of memory defined by shapes and strides. When batching prompts of variable lengths:- Improper padding degrades throughput.
- Non-contiguous memory layouts force expensive hidden copy operations.
- Understanding contiguous memory and views (
tensor.view()vstensor.reshape()) is critical for optimizing custom inference runtimes.
B. KV-Cache Allocation & VRAM Arithmetic
In autoregressive generation, computing self-attention across previous tokens at every step is $O(N^2)$. Modern inference engines cache the Key and Value matrices (KV-cache).- For a 70B parameter model at 16-bit precision, KV-cache consumption scales directly with batch size and context window length.
- Engineers who understand KV-cache memory mathematics can calculate exact concurrency thresholds before an out-of-memory (OOM) event crashes a GPU container.
C. Attention Masks & Scaled Dot-Product Computation
Attention(Q, K, V) = softmax( (Q * K^T) / sqrt(d_k) ) * VUnderstanding FlashAttention and kernel fusion allows you to diagnose why a local model is bottlenecked by memory bandwidth rather than compute power.
3. The Recommended Architecture Hierarchy
+-------------------------------------------------------------+
| Layer 3: Lightweight State Orchestration (LangGraph / Native)|
| - Explicit state transitions & cyclic routers |
| - Strict Pydantic / Zod argument schemas |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| Layer 2: High-Performance Serving (vLLM / TensorRT-LLM) |
| - PagedAttention (Memory fragmentation elimination)|
| - Continuous batching & asynchronous token streams |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| Layer 1: Native PyTorch & CUDA Execution Primitives |
| - Half-precision tensor arithmetic (FP16 / BF16) |
| - Kernel fusion & direct memory management |
+-------------------------------------------------------------+4. Final Verdict
Frameworks should be adopted to accelerate standard integration pipelines—not as a substitute for understanding execution mechanics.When you master low-level primitives:
- You optimize batch inference latency by 3x to 5x.
- You eliminate mysterious GPU out-of-memory errors in production.
- You build lean, deterministic systems that your clients can rely on 24/7.
Are you running direct model runtimes (vLLM, TensorRT-LLM, Ollama) or relying on multi-layer orchestration libraries?
Authored by Soham Sharma, Founder & Director at Botmartz AI Solutions.#ai #python #machinelearning #architecture #software #coding #development #engineering #inclusive #community
PyTorch Low-Level Primitives vs. Agent Framework Abstractions -
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_modeltool 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-videosupports a dedicatednegative_promptparameter, 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:
- Generate clip A.
- Extract a frame near the end of clip A.
- Upload the frame to GMI Cloud.
- Pass its URL as the
first_frameparameter when generating clip B. - 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.pngI 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.jpgThe 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
Theupload_mediaoperation returns a signedupload_urland apublic_url.These serve different purposes:
upload_urlis the destination for uploading the file.public_urlis 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 SignatureDoesNotMatcherror 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
ratioconfiguration issue
I encountered failed generations when using an explicitratio: "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.mp4This 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.mp4This 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.0limits 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.mp4For 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.mp4This 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.jpgAfter 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 underparameters.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
Onesubmit_generationrequest 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_generationsto 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 aninsufficient_balanceerror, 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
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 final film used two 30-second clips and one 10-second replacement.
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"
doneThe 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:
- Check model capabilities before designing the pipeline. Generation limits and parameter support determine how the film should be structured.
- Describe camera movement explicitly. A coherent camera path is easier to manage than a prompt containing unrelated transitions.
- Use frame chaining for continuity. The previous clip's endpoint provides a visual starting condition for the next generation.
- Keep the pipeline modular. Replace failed segments rather than regenerating the entire film.
- Verify the actual output. Inspect the joins, text, audio, duration, and final encoding.
- 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 -
One pass, every stall The last post ended with a problem: outside money was arriving...#x402 #aiagents #web3 #payments #software #coding #development #engineering #inclusive #community
One pass, every stall: a fleet pass, a webhook watch, and three framework shelves -
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine.
I am a B.A. History student at Burdwan University. For this challenge, I wanted to build something that connects my interest in History with my interest in AI.
My project is called Itihaser Bhoot (ইতিহাসের ভূত). It is an offline AI assistant that acts like a ghost of a historical figure. It answers History questions using only my own notes.
The idea is simple: an AI that knows what I have studied, shows where its answers come from, and admits when it does not know something.
What I Built
Itihaser Bhoot is a local History question-answering system.
It has three main goals:
- Answer questions using only my personal History notes.
- Quote the source passage so I can check the answer.
- Stay silent or refuse to answer when the notes do not contain enough information.
I wanted to avoid answers that sound convincing but are not supported by my study material.
Demo
The project runs locally on my laptop.
Example workflow:
- I ask a History question.
- The system searches my notes for relevant passages.
- Gemma generates an answer based on the retrieved material.
- The answer includes the source passage.
- If the notes do not cover the question, the system refuses to answer.
The goal is not to make the AI sound knowledgeable about everything. It is to make it reliable within the limits of my notes.
Code
GitHub repository: [Add your repository link here]
The repository contains the code and instructions for running the project locally.
How I Built It
I used Gemma 3 1B through Ollama for local language generation.
For retrieving relevant passages from my notes, I used BM25. It helps find text that matches the question before the model generates an answer.
The system follows a retrieval-based approach:
- My notes are the knowledge source.
- BM25 retrieves relevant passages.
- Gemma 3 1B generates an answer from the retrieved context.
- The source passage is included for verification.
- Questions without sufficient supporting material should be refused.
I built this on a laptop with 3.6 GB of RAM.
I wanted to see whether a small local model could be useful for a focused academic task without relying on a cloud API.
Why Open Innovation Matters
For me, open innovation means making useful technology accessible to people who do not have powerful computers or paid AI subscriptions.
Itihaser Bhoot has a few practical advantages:
- Offline: It runs without an internet connection once the required model is available locally.
- Free per question: There is no cloud API charge for asking questions.
- Runs on my laptop: I do not need expensive hardware for this focused task.
- Private notes: My study notes stay on my own device.
As a student, these things matter to me. I want to experiment with AI while keeping control over my own study material.
What Went Wrong
The project is still experimental, and I faced several problems.
The biggest challenge was answer quality. A small model can sometimes misunderstand a retrieved passage or produce an answer that goes beyond the available evidence.
Bengali also introduced additional difficulties. Bengali questions and notes do not always produce reliable retrieval results. The model can struggle with Bengali phrasing, historical terminology, and generating natural Bengali answers.
Another challenge is refusal behavior. Even when the notes do not contain an answer, the model may try to generate one. I need to improve the system's ability to recognize when the retrieved evidence is insufficient.
I am still testing these limitations rather than claiming they are solved.
Prize Category: Best Use of Gemma
I am submitting Itihaser Bhoot for Best Use of Gemma.
I used Gemma 3 1B as a local language model for a specific academic purpose. The project is not intended to replace textbooks, teachers, or historical research.
It is an experiment in building a small, private, and evidence-based History assistant using open tools.
I hope to improve its retrieval quality, Bengali support, and refusal behavior as I continue working on it.
Hacktoberfest #devchallenge #hf26challenge #opensource #ai
#devchallenge #hf26challenge #software #coding #development #engineering #inclusive #community
Itihaser Bhoot: An Offline Ghost of History -
Doughty has 3 points, Kings continue strong road trip with win against Rangers https://www.nhl.com/news/los-angeles-kings-new-york-rangers-game-recap-october-26-2026 Panarin has goal, assist for Los Angeles, which has won three of four since 0-4-2 start
[email protected] #NHL -
#Eleicoes2026 : "No candidate who failed to win the first round had ever prevailed in the second.…Yet there was one key figure in #Lula’s orbit who remained confident in the possibility of a turnaround: Congressman André #Janones. With Lula’s blessing, he immediately set about bringing the campaign into the digital spaces it had so far struggled to penetrate. The Brazilian far right, seemingly convinced they were unbeatable, downplayed Lula’s steady rise in the polls over the last three weeks — until finally, on Sunday, he defied the odds and stormed to victory, winning an astounding 64 million votes.
The outcome was the result of two immediate factors: Lula’s singular leadership, and Janones’s intuitive understanding of today’s online ecosystem. Together, they managed to beat the #Bolsonaro machine."
-
Gizmodo: Password, Please: Border Searches of Laptops, Phones Up 32% This Year. “a new report… shows searches of the laptops and smartphones of visitors entering the United States have gone up 32 percent this year, according to data CBC News obtained from U.S. Customs and Border Protection. And this is with only the first three quarters of the 2026 fiscal year accounted for, which runs from […]
https://rbfirehose.com/2026/10/26/password-please-border-searches-of-laptops-phones-up-32-this-year-gizmodo/ -
Ohio pastor reveals he’s had 2 wives for 3 years: Having only 1 wife is 'unbiblical'
Even though polygyny, the practice of having more than one wife, is illegal in America, Pastor Israel Ford, who co-founded LifeWorks Church in Cleveland, Ohio, with his wife, Lydia Ford, in 2009, told his congregation on Sunday that he has been living with two wives for the past three years and that God endorses it.
Source: https://www.christianpost.com/news/ohio-pastor-reveals-hes-had-2-wives-for-3-years.html
-
How Trump Gave the Worst #Polluters a Free Pass
In total, since taking office again, Mr. Trump exempted 202 facilities in 39 states and Puerto Rico from clean-air regulations that were going into effect. Some were among the country’s worst industrial polluters, including chemical manufacturers, copper smelters and coal-burning power plants. About 3.3 million people live within three miles of at least one affected facility.
https://www.nytimes.com/2026/10/24/climate/trump-epa-chemical-air-pollution.html
https://archive.is/20261024112739/https://www.nytimes.com/2026/10/24/climate/trump-epa-chemical-air-pollution.html #EPA -
I voted. Seven minutes total from walking in the doors to walking out: poll worker at the doors directed me to the correct table (alphabetical), poll worker at the table checked my voter registration card and my driver’s license against the roll, handed me the form and explained (make only one selection for each of three categories), I had to wait for an open privacy screen voting “booth”, and then I had to wait while 4 people ahead of me had their paper form submitted to the tabulator. Saw that it was accepted and I stepped out of the building. Then I spent an equal amount of time talking to a dog owner.
When people want democracy to work, elections can be made to work for the people voting rather than the people who hold power.
-
"Gone Forever? Iran Drone Strikes Cause Permanent Data Loss in Middle East
Amazon AWS customers in Bahrain and the United Arab Emirates have permanently lost data following multiple waves of Iranian strikes, which began in March of this year, on several data centers.
Companies all over the world rely on cloud storage to keep their data safe long term, but just because something is in the cloud doesn't mean it's necessarily safe forever.
Amazon AWS customers in Bahrain and the United Arab Emirates have permanently lost data following multiple waves of Iranian strikes, which began in March of this year, on several data centers. The strikes, which targeted multiple Gulf states, were carried out in retaliation for American and Israeli strikes on Iran.
Bahrain was more severely impacted than the UAE. Amazon was unable to fully restore access in all three of Bahrain's availability zones—clusters of data centers built to serve a specific area—compared to just one zone, mec1-az2, in the UAE."
https://www.pcmag.com/news/gone-forever-iran-drone-strikes-cause-permanent-data-loss-in-middle-east
-
Will we see new, more intense attacks on Iran this week?
As far as I understand, on 28th the Fed will, most likely, raise the interest rates, which may break the US bonds.
I read somewhere, that the US forces might strike within three days.
Next week are the Midterms, plus elections in Israel.
The third carrier group should arrive soon too.
I can't fit the puzzle, it's just a feeling, I'm not sure, if he chickens out of this one...
But on the otter hand, something doesn't match up.
Dunno, how it will affect us in Europe, but I guess, shit ain't getting cheaper.
Dunno, but I'm actually worried.but it's more of a feeling, feels different.
Stay safe. -
Mike McCarthy praises the Veteran Leadership with the Steelers: “Our young defensive linemen have played well. They're doing some really good things. Cam has done an excellent job with his leadership and the way he gives back. Veterans can offer so much in the little things, whether it's something they say during a one-on-one drill, a quick conversation in the weight room, or a point they make while watching film. It's a lot like parenting. You tell your kids something two or three times, but then if Aaron Rodgers, Cam Heyward, or T.J. Watt says the same thing, it's like they've never heard it before. That's just the reality of it.” #Steelers #NFL
-
I ordered a hardware random number generator from the US (I'd have preferred the UK or EU but couldn't find the right product).
So far the only thing random about it is the delivery path. It's going all over the US and just sitting in depots.
Americans pride themselves on their commerce abilities but they don't seem able to ship much outside their country.
Three weeks so far. I have a project launch waiting on this.
-
YouTuber who claims to have predicted Trump’s assassination attempt warns against ‘AI metamorphosis’
Brandon Biggs, a YouTuber who claims to have predicted the July 2024 assassination attempt on President Donald Trump, is now sounding the alarm on Super Intelligence, which he describes as a rapid metamorphosis of artificial intelligence over the next three years that will take many people by surprise.
Source: https://www.christianpost.com/news/brandon-biggs-warns-against-ai-metamorphosis.html
-
We shouldn't be surprised about the PHPocalypse, as the internet is built on sticks and glue
What better way to celebrate Cybersecurity Awareness Month than warning that three-quarters of the web is about to be set on fire?
<- I was on the latest #Kettle podcast from #TheRegister
-
Those Who Are Loved, by Victoria Hislop: #BookReview.
Set in Greece during a period beginning in the 1930s, this novel looks at the political, social, and military history of this popular holiday destination through the eyes of an extraordinary Greek woman called Themis.
We begin shortly after her birth and follow her through life as she learns about family, love, politics, and the brutality of fanatics on both sides of the political divide.
I started to read this book whilst holidaying in Crete. It was one of a number of books left by guests at the hotel in which I stayed. I’d finished the three books I’d taken to read and left those there. It felt like a fair swap for me to bring this one home with me: at 480 pages, it was a long read!
I’d read ‘The Island’ by Victoria Hislop some years ago. A book set on Crete, dealing with the history of the Leper Colony established on the small island of Spinalonga, just off the northeast coast of Mirabello Bay in the east of Crete. That book was well written, persuading me the one I’d acquired would be worth reading.
It was!
This is not an easy or comfortable read. It looks at the conflict between the Greek Communists and their Fascistic right-wing opponents and at the military juntas who took over the country for a while. None of these rulers comes out with credit. The author’s research has informed her of the excesses, the violence, the prejudices, the extremes posed by all these rulers on a land that was born into and invented democracy and was then almost destroyed by its lack.
Themis is initially an innocent, naïve and bullied by her older sister and wishing to be friends with both her right-wing and her left-wing brothers. The youngest child in the family, and a girl, she is rarely taken seriously in her early years, other than by the grandmother who takes care of the family when the mother is institutionalised and the sailor father is mostly absent.
I won’t tell you the rest of the story. But Themis illustrates the very real difficulties faced by anyone who is honest and caring when they live under those different forms of dictatorship. Her life is rarely easy and, at times, her subjugation to terror and cruelty is difficult to bear for the reader. But her courage and determination to do what is right forces the reader to continue her story through to the very end, which is, I’m pleased to record, a positive one.
You will find so much love here, so much fear, so much bullying by so-called leaders, so much cruelty caused by a mixture of ignorance, intolerance, and simple fear of reprisals.
I stopped reading it before bedtime, as much of the story could lead to nightmares. But I’m very pleased I read the book. I’ve learned a good deal about the role of superstition, tradition, ignorance, and the abuse of power on a people who simply want to live normal lives of love and family. And I now feel I understand much about the history of Greece during the period covered by the narrative.
It’s a very well written account, full of insight, understanding and compassion from a writer who manages to occupy the minds and hearts of all her various protagonists and antagonists. If you get the chance, read it. You will leave the book all the better able to understand much about Greece and its extraordinary people.Rate This
#Author #BookReview #Books #CreativeWriting #Fiction #Novels -
FOX Sports’ Ralph Vacchiano believes Jaylen Warren can carry the Steelers to the playoffs: “Over the past five weeks, running back Jaylen Warren has emerged as one of the NFL’s best and most elusive backs, and he’s the main reason the Steelers still sit tied atop the bruising AFC North. After shaking off a slow start — he amassed just 89 rushing yards and 61 receiving yards over the first two weeks — Warren has been on a heater. And after adding 101 rushing yards and three catches for 36 yards on Sunday morning in Paris against the New Orleans Saints, he’s now averaging 94.4 rushing yards and 141 total yards over the past five games. In short, Warren is giving the Steelers the power and the explosiveness they desperately need. Warren is the reason Rodgers’ last ride has a chance to finish with the 14th playoff berth of his Hall of Fame career.” #Steelers #NFL
-
Joe Haden takes issue with the Steelers Secondary: “Let them hit me in the face with a hitch first. Then, boom, pick-six, and now you're going to have to start double-moving me. You get one time. One time. Okay, shame on me. But if you run a hitch or a slant three times in a row on third down, I'm jumping one of those. I'll act like I don't know what's going on, pick it off, and punish you for it. Then you're going to have to double-move me. You should have had to double-move me after the first one. You can't just keep running the same thing. I'm sitting there like, 'Guys, come on.' It's third-and-six, and they're running stick routes. Then it's third-and-seven, and they're running stick routes again. Then it's third-and-two, and they're running slants.” #Steelers #NFL
-
"Why hasn’t PHP2Shell turned into mass exploitation?
Because no public exploit works reliably on a default PHP setup, and attackers are still trying to build or find one. As Sansec puts it after testing the code circulating online: “The public exploits do not work against a default PHP installation.” VulnCheck counted hundreds of proof-of-concept repositories on GitHub, very few of them legitimate; one got past a standard memory protection, but only on PHP 8.4.26 in one specific setup. Reliable exploits exist, but not in public, and VulnCheck reports no confirmed successful exploitation in the wild.The CrowdSec data from October 21 to 25 shows attackers testing, not harvesting:
Half of the 1,187 sources sent a single request in five days, and 82% sent three or fewer.
Known PHP2Shell techniques need several requests against the same server, so a real attempt repeats itself. Only 24 sources ever sent ten or more requests to the same sensor.
78% of the sources that sent a user agent posed as a web browser."
#php2shell #IT #ITSecurity #PHP -
Earlier this year I saw this incredible cloud, @poemproducer playing live, some old friends and a lot more at the very cute and great Avantgarde Festival in the village Schiphorst east of Hamburg.
Now they need to sell 100 early bird tickets until Halloween to be able to make it happen again.
Tickets cost around 125€ and the early birds include meals and camping for the three days of the festival, that's ridiculously cheap for what's going on there!There's more info at https://www.avantgardefestival.de/index_en.html
I really hope they can make it happen again!@ExperimentalMusic
#AvantgardeFestival #MusicFestival #CrowdFunding #ExperimentalMusic #Schiphorst #SchleswigHolstein #Hamburg #cumulonimbus -
Good morning. 🍂🍂🍂
26 October 2026
Autumn is here. This morning's temperature was in the 50s (°F). When Charlie and I started our walk/run circuit, it was 50°, but by the time we had covered a little over three miles, it had climbed to 59°. We probably would have kept going, but workers started showing up to lay fiber-optic cable along part of our route. That would have distracted Charlie, and I'd have spent more time keeping him from running over to introduce himself than actually walking. He loves meeting new people.
In fact, I've only ever seen Charlie recoil from one person. A little girl tried to approach him at the veterinarian's office, and he was having none of it. He growled and backed away. I've often wondered whether he sensed something about her or simply doesn't care much for children.
Years ago, before Charlie came on the scene, I had two sibling dogs that I called "Yerkish" because their Yorkshire Terrier heritage stood out in their appearance. Their names were Ben and Jerry. I still use Ben's image as my avatar. Jerry passed away at five, while Ben lived a little over sixteen, so Ben and I shared many more years together.
Both dogs were cursed with what I called the "teddy bear look." Children constantly wanted to pick them up and hug them. Ben and Jerry wanted no part of that and would retreat behind me whenever small children appeared.
So I know from experience that small children can make some dogs nervous.
"Autumn is a second spring when every leaf is a flower." - Albert Camus
"Heaven goes by favor. If it went by merit, you would stay out and your dog would go in." - Mark Twain
"Every dog has likes and dislikes, just like people do." - Swede
#photo #photography #photographer #photographylovers #nature #morning #walk #dogs
-
Getting Out of the GM Chair
The online gaming group that (in part) gave birth to Cannibal Halfling Gaming works on a rotating roster of gamemasters and campaigns. The typical arrangement is that two campaigns are being run by two different GMs, trading off our weekly slot so that we can maximize the number of games we play, give GMs a rest between sessions, and get back into thing quickly if we have to scratch a week. Exactly who those two GMs are also changes; in terms of first session to last session most campaigns last about a year, with perhaps 15-20 sessions, and many GMs then step down to let another step up. This last July, I wrapped up a game of Cyberpunk RED that had lasted three and a half years with 42 sessions. Depending on how you count things (because Aaron built a DIE-shaped trap door into a Burned Over campaign, cheeky bugger that he is), Cyberpunk RED: The Alleyway ran alongside/outlasted 2-3 other campaigns. Unsurprisingly, I'm no longer in the GM seat for that group. It will likely be a few years before I return to the GMing chair in that group, actually, and that's okay! However, after a few weeks I realized that, for the first time in maybe a decade... I wasn't running anything for anyone. […]https://cannibalhalflinggaming.com/2026/10/26/getting-out-of-the-gm-chair/