The weekly journal

The Goatfather

A virtual control room for the farm livestreams

November 2, 2026 · The week of October 26–November 1

4 a.m. at my command center on newsletter release day, finishing the final details. Tap or click to enlarge.

This was me at 4 a.m. on newsletter release day, putting the final details together. The camera studio, the editor, and this newsletter have all had their turn on these screens this week.

A lot of my work this week happened behind the camera. I’ve had a whole lineup of programs, tools and experiments in progress, with AI helping on the coding. For this issue, I’m giving you a closer look at two of them: a virtual control room for the farm livestreams, and an editor I can talk to while reviewing my footage.

Both started with a fairly simple idea. Then came the part where you find out what you didn’t think of. Apparently, “there has to be a better way” is how I keep giving myself more work.

Goatfather Camera Studio: a virtual control room

I wanted one place to see the farm cameras, choose what viewers watch, rotate between locations, and manage the sound. I also wanted to be able to jump into the broadcast from my phone, then hand it back to the farm cameras. This virtual control room could also help us bring the barn cams back. There is more testing to do before we decide to put them live again.

The part I’m most excited about is being able to hijack my own livestream from my cell phone. If the barn cams are up and running and I’m out on the road, I can jump into that same stream from my phone, then hand it right back to the cameras. We successfully tested the phone takeover and the return to the farm feed. That means I can bring you along with me without having to stay at this desk.

The result is Goatfather Camera Studio: a control panel in my browser, backed by software running on my computer. The cameras send their video using RTSP, a streaming protocol. Python coordinates the system, and FFmpeg helps handle the video and audio.

My actual Camera Studio: the farm camera library, Cut and Fade controls, audio levels, and the camera marked On Air. Tap or click to enlarge.

The biggest surprise was a picture that looked live but was almost 35 minutes behind. It was moving. The system was producing video. But comparing the camera’s clock with a fresh direct feed exposed a huge backlog. A moving picture was not enough evidence that the system was keeping up.

We changed how frames moved through the program, replaced bulky raw-image transfers with compressed frames, and added checks against the source timestamps. If a feed falls behind, the system can reopen it instead of continuing to call stale footage ready.

The first version also limited me to six active cameras to keep the workload down. I wanted all my cameras available, so we changed the design. Now the library lists all 26 saved camera entries, with 23 producing previews. The other three still need stream links.

The useful trick is that most of those previews are lightweight snapshots. Full-quality video stays loaded for the camera on air and the one being prepared next. I can keep a camera available without including it in automatic rotation, and a switch waits for the next picture to be ready.

Nobody wants to stare at an empty barn while all the action is on another camera. That is what makes “Follow the sound” so exciting to me: a louder camera can take over the picture automatically.

I had already tried having Andy code that kind of switching into my OBS setup. With this virtual control room, we can handle the switching and farm broadcast without OBS. That leaves my OBS setup available if I want to do a pop-up stream or work on something else on my computer, instead of keeping it tied up with the barn cams.

We’ve added a few rules so it doesn’t jump at every noise: a new camera has to stay 6 dB louder for 1.5 seconds, and there is a minimum time on each camera. It is measuring loudness, so wind and machinery can count too. I still have manual control when I need it.

What I’d love to add next is motion-triggered switching for each camera, ideally without buying more software. That is still something to work out. Sound gives us one signal; movement could give us another way to find the interesting view.

The actual rotation, sound-following and scrolling-message controls. These are the settings on my screen when I took the screenshot. Tap or click to enlarge.

After the backlog fix, a five-minute, four-camera check ran without reconnects. The later camera-library test rotated through seven cameras while keeping the 1080p output near 30 frames per second. In an Unlisted YouTube test, my phone took over and the system returned to the Courtyard camera when I disconnected.

That was real progress, though long-run reliability still needs more testing. I’ve also learned how useful AI coding can be—and how closely I have to supervise it. I need to stay involved, test what it actually does and catch it before it goes off the rails. Seeing a picture moving on screen was not enough; checking whether it was actually live is what exposed that 35-minute backlog.

Dirk Editor Studio: an editor I can talk to

The second project tackles the pile of work that comes after filming. I can look at a clip and explain what matters: keep this moment, shorten that stretch, use this shot while I’m explaining something else. Getting those thoughts into a useful editing plan is the challenge.

The second tool is Dirk Editor Studio, with a Director Review player inside the local editing workflow. I open a project folder, choose a clip, and record commentary while reviewing it. There are separate modes for Directions and Voiceover, plus a Project overview option for thoughts about the whole story.

My actual Dirk Editor Studio, with source clips on the left and separate Directions and Voiceover controls beneath the footage. Tap or click to enlarge.

The technical challenge is that the footage and my commentary have two different clocks. If I pause a clip at 2:14 and talk for a minute, the video stays at 2:14 while my recording keeps going. If I rewind or change clips, one simple timestamp offset no longer works.

The player saves the clip, viewing position, playback state and recording mode alongside the audio. Local Whisper transcription turns the commentary into text. The editor can then read those notes together with the original footage transcripts and check what I was referring to.

Directions remain editing guidance. Voiceover recordings can be considered for the finished soundtrack. That separation matters: “cut this bit out” should be an instruction, not an unexpected line of narration.

The practical details needed work too. Some phone footage needs a compatible viewing copy before a browser can play it properly; the finished edit still uses the original. Windows blocked the first script-based launch, so we gave it a desktop launcher using the installed Python runtime without relaxing the security setting.

We also tested an interruption: the local server stopped, then restarted, and the browser’s saved recording chunks and viewing-position notes were recovered. Existing recorded speech went through local transcription and was mapped across two clips. The original files stayed intact.

This is a working prototype. The recording and recovery tests used generated test audio, and the speech test used an existing recording. A long review session with my actual microphone still needs proving. The next edit will still need judgment and footage checks, but the instructions now have a place to live—and a much better way to say exactly which “part” I mean.

Maple Grove and the story behind Andy’s car

A car from the Maple Grove outing, photographed among the autumn trees. Tap or click to enlarge.

I joined Andy for my first car-show outing at Maple Grove, and I loved the drag racing and drift box. We also went live so he could walk everyone through his car and the reason behind it.

Andy explained that his brother Scott helped with the ideas and design, as well as trailering the chassis to the paint shop and the shop building the car. After Scott died by suicide, the build became a tribute to him. The overall concept was already there, but Andy said every detail now had to do that tribute justice.

Even the stripes tell that story. Andy adapted a period racing design into suicide-prevention colors, with semicolons for awareness. He worked out the striping in Forza, using the game to explore how the real car would look.

The Best Interior trophy was a wonderful part of the day, and there were awareness bracelets to share. But when you look at the photograph, I want you to know about Scott and the meaning Andy put into this car.

Watch our “You matter” livestream from Maple Grove. You can also jump to Andy’s story about Scott at 27:23 or hear how he developed the awareness stripes at 29:22.

Shed progress: out of the box

The air conditioner for Mary’s shed has cleared its first major milestone: I got it out of the box. That is as far as I have gotten. The unpacking is complete; the installation is still waiting for its big debut.

Stay tuned: paranormal on the farm

Crash Out Kent visited the farm with his paranormal team from Gettysburg, and I am still wondering whether they made a believer out of me. Our homestead dates to 1736. There is a lot of history here, and that evening gave me plenty to think about.

Watch the short preview I shared, and stay tuned for my full review of the paranormal visit. I want to revisit the footage and the moments that surprised me.

My short preview of the farm visit; a full review remains to come.

Paranormal on the farm: the short preview

Owner-shared teaser · 0:00–0:26 · 26 seconds

Open the source replay ↗

And yes, there was some Slither

A U-turn and a timed boost finally came together for me in Slither.io. After practicing the slingshot move, I tried it again and it worked. Yes, I was pleased with myself.

The U-turn and timed boost I had been practicing finally came together.

The slingshot move finally works

Thursday, October 29 · 1:06:16–1:07:00 · 44 seconds

Open the source replay ↗

I also called Xander over for another round. After the rematch, I had to wonder whether all that practice was finally paying off.

In the battle dome, Ezo faced Anti-Goat, another player joined in, and Ezo won that exchange. Then it was time to invite the remaining players to keep going.

One more snake in the circle

We tried nested circles around me, Bubbles and Ezo, with the Clan trying to squeeze one more snake into the formation. The circles fell apart before we could hold it together.

The Clan tries to fit another snake into nested circles.

How many goats fit in one circle?

Friday, October 30 · 1:20:46–1:21:41 · 55 seconds

Open the source replay ↗

Between those attempts and the heart shapes earlier in the week, we found plenty of ways to entertain ourselves beyond the next individual encounter.

Dirk’s brain is still a work in progress

Dirk still has a training brain in the works. In plain English, I’m teaching AI to play Slither.io. The goal is for him to learn from mistakes and improve with practice, instead of relying only on fixed rules like “turn when something gets in the way.”

Dirk’s virtual training arena, from my October 26 update. This remains a long-term experiment. Tap or click to enlarge.

Eventually, I’d love to see Dirk take over a server, but that is a long-term goal. For now, he’s on the back burner while I save my AI credits for more useful projects. When I have a few extra credits to spare, I’ll throw them at my snake. LOL.

More from the journals

Browse all editions and past issues →