Skip to content

Dispatches

Use 1Password SSH Agent for SSH Keys and Git

If you already trust 1Password with API keys, database passwords, and tokens, your SSH keys are the next obvious secret to get out of ~/.ssh/. The 1Password SSH agent lets OpenSSH and Git use keys stored in your vault instead of private key files on disk, which makes day-to-day Git authentication cleaner without turning your home directory into a small museum of long-lived keys.

The important nuance is this: the op CLI is part of the workflow, but the actual SSH agent is provided by the 1Password desktop app. That matters because it keeps the model honest:

  • 1Password stores the private key item
  • The desktop app brokers SSH authentication
  • OpenSSH talks to the 1Password agent
  • Git keeps using SSH exactly the way it always has

If you are already using 1Password for local development secrets, this is the same idea applied to Git access. The application code stays boring, the SSH client stays boring, and the secret moves into the vault where it belongs. If your main goal is application secrets rather than Git access, the companion post is Use 1Password CLI for Local Development.

Use 1Password CLI for Local Development

If your local development workflow still depends on .env files full of live credentials, you are not doing configuration management, you are just normalizing secret sprawl. The 1Password CLI, op, gives you a better model: keep secrets in a vault, inject them into a child process only when needed, and let your terminal stay fast without turning your laptop into a plaintext key dump.

This post is intentionally about local development only. No CI runners, no GitHub Actions, no Kubernetes side quests. Just a developer workstation, a terminal, and a sane way to run Python, Go, PowerShell, Zsh, and Bash without leaving credentials all over the filesystem.

Recorded Demos

The command and language examples in this post are backed by VHS tapes and a deterministic local demo harness with fake secret values.

That keeps the demos rerenderable without exposing credentials for these examples.

After MkDocs 1.x: Fragmentation, Risk, and What Comes Next

For more than a decade, MkDocs, especially when paired with Material for MkDocs, became the default answer for engineering documentation. It was simple enough for technical writers, familiar to Python-centric platform teams, and polished enough that most organizations never needed to build a documentation frontend of their own. That consensus has now fractured. As of 2026, teams still running MkDocs 1.x are no longer just choosing a mature stack, they're accepting a growing maintenance, compatibility, and software supply chain risk.

MkDocs earned its position because it solved the right problem at the right level of complexity. It gave teams a straightforward content model, a single configuration file, a Python packaging story that fit naturally into existing developer environments, and a clean separation between content, theme, and deployment. Material for MkDocs then raised the ceiling dramatically. Search, dark mode, responsive navigation, blog support, admonitions, tabs, code annotations, and a broad plugin ecosystem turned what began as a documentation generator into a complete publishing stack.

For engineering organizations, that combination was unusually efficient:

  • Technical writers could stay in Markdown.
  • Engineers could treat docs like any other Git-based project.
  • Platform teams could build and deploy sites with the same CI pipelines used elsewhere.
  • Open-source programs could publish polished public documentation without standing up a custom app.

In practice, MkDocs plus Material became the reference architecture for documentation in many Python-centric and infrastructure-heavy teams. It wasn't the only option, but it was often the least controversial one.

A Quick HAProxy Load Balancer for VMware Cloud Foundation Operations

When I need to stand up a quick load balancer for VMware Cloud Foundation Operations in the lab, I don't want to rebuild the same HAProxy configuration by hand every time. I just want a small Debian or Ubuntu VM, a VIP on the right VLAN, a backend pool of appliance nodes, and a fast path to getting the service online.

This helper script is what I use for that job. It prompts for the virtual IP, netmask, redirect FQDN, and backend node IPs, then wires up the network interface, installs HAProxy, generates a fresh configuration, and restarts the required services. It is intentionally opinionated, which is exactly why it's useful in a home lab.

Maintain Formatting of Embedded Terraform Provider Examples with terrafmt

When a Terraform provider repository ships Markdown documentation full of example configuration, those snippets are part of the product. If they drift out of style, or worse, stop parsing as valid HCL, users feel it immediately. terrafmt is a small tool that helps keep embedded Terraform examples formatted and syntactically correct in both local workflows and CI.

terrafmt scans files for embedded Terraform configuration, extracts the matching blocks, parses the HCL, formats it, and then either shows the diff or rewrites the file in place. It recognizes embedded configuration in a few very practical forms:

  • Markdown documentation files with fenced hcl, terraform, or tf blocks
  • Go source files that return raw strings
  • Go source files that build examples with fmt.Sprintf(...)

In other words, terrafmt is a bridge between "this is documentation" and "this is still code."

Orange and White '79

Lyrics

ORANGE AND WHITE '79

I learned to work a gearbox with my heels off the floor
On an ole Massey growlin’ for more
Back pasture buzzin’ like a hornet’s nest in June
Daddy said, “Don’t force her, boy, she’ll give up too soon”
Watched his knuckles, white against the grit and grease
Fightin’ back a mean streak that wouldn't let him find no peace
By the time I was sixteen, I'd traded the field for the load
And a seventy-nine Chevy on a washboard county road

     It was two-tone rust and a bench seat ride
     That orange and white seventy-nine
     Haulin’ secrets past the county line
     With a payload heavier than the trash on the side
     Every mile was a warnin’, every mile was a lie
     In the hollowed-out stare of a blood-relation eye
     I learned how to steer, and I learned how to bleed
     In that orange and white, I found the wreck of me

Hot vinyl stickin’ to the back of my neck
Radio fightin' static and a Jackson tune
The smell of sulfur and a burnin' belt
Silence chokin' out the cab too soon
I gripped that wheel while he held back a flood
He just stared straight ahead with the iron in his blood
Said, “There was a life before this one, son”
And I pointed that chrome, toward a darker run

Didn’t ask for a name, didn’t ask him why
Didn’t need to know where the truth went to die
I backed off the gas, let the engine moan
It’s a heavy-ass load when you’re drivin’ alone

     Repeat Chorus

Some miles you drive
And some you just drag
Still haulin’ the weight
Past the county road lines
In the orange and white
Yeah, that '79

Writer: J. Ryan Johnson (BMI)
Copyright: © 2026 J. Ryan Johnson. All rights reserved.
Phone: +1 (407) 902-5419
Email: hello [at] tenthirtyam [dot] org

Audio Disclaimer

Lyrics: Original | Audio: AI-Generated

I am a songwriter and a musician, but I am not the voice meant to inhabit these verses.

I've used AI to bridge the gap for the concept demos, crafted to serve as blueprints that capture the genre, tone, and weary soul I hear for each song.

They exist as an invitation, offered in the hope that these lyrics will eventually reach the hands of an artist and storyteller who can bring them fully into the light.

Until then, they remain as they were born: quiet reflections on the grit and grace found just north of the county line.

Orange and White '79

Field Dispatch: Increase the ESX Certificate Key Size in VMware Cloud Foundation 9.0

Effected Versions

  • VMware Cloud Foundation 9.0.x.x

In VMware Cloud Foundation 9, the certificate workflow in VMware Cloud Foundation Operations ("VCF Operations") can make ESX certificate replacement look more constrained than it is.

When generating a CSR for an ESX host, the interface may show 2048 as the only RSA key size available. In an environment where server certificates must use 3072 or 4096 bit keys, that can look like a mismatch between the platform and the security baseline.

The important detail is where the CSR gets its key size. For ESX hosts, CSR generation can use the host's advanced certificate key size setting, even when VCF Operations only displays 2048.

So the question is not only what the dialog shows. It is what the ESX host is configured to use when the CSR is created.

Linux Commands Reference: Essential CLI Categories for Daily Work

The Linux command line is one of those skills that keeps compounding. Once you can inspect a system, trace a process, move data safely, and answer your own questions from a shell prompt, you stop waiting on GUIs and start working at the speed of the machine. This reference gathers 15 essential command categories into one practical page you can keep nearby, whether you are building confidence or sharpening the habits that make day-to-day operations smoother.

This is not meant to be a memorize-everything-in-one-sitting tutorial. It is a working reference positioned between beginner comfort and intermediate fluency, with a handful of deeper operational workflows where extra context matters most.

Note

This edition is intentionally modern. Unless a command is called out as package-dependent, it is chosen to align with current Debian/Ubuntu and RHEL/Fedora-family releases. Where the distro families differ meaningfully, both patterns are noted directly in the content.

Inside My VS Code Setup: Theme, Extensions, and Settings

VS Code

If you spend hours a day in your editor, your setup stops being a cosmetic preference and starts becoming part of how you think. Mine has evolved into a very opinionated VS Code environment tuned for the work I do most often: Go, Python, PowerShell, Ansible, Terraform, Markdown, YAML, JSON, and a steady stream of GitHub-driven automation.

Earlier this month, I wrote about why I use JetBrains GoLand and PyCharm over VS Code for some language-specific work. That's still true. But VS Code remains one of the most useful tools on my machine because it is fast, flexible, and easy to shape around the task in front of me.

This post is a tour of the setup I keep coming back to, the one that feels like home every time I open VS Code.

Hole in the Floor

Trigger Warning

This piece includes themes of violence, childhood trauma, and emotional neglect. Please proceed with care.

Reflection

Some houses hold warmth; the one I grew up in held its breath.

Tension lived in the walls, and even the floorboards carried the weight of something left unsaid.

This is a song about the kind of trauma that weaves itself into the grain of a life, and the impossible weight of an apology that arrives decades too late.

Lyrics

HOLE IN THE FLOOR

I showed up in the summer of '76
Born into a house of broken bricks
You mortared the cracks with the debt and the kids
And a ledger of things that the memory forbids
Four little children learning to read the air
Knowing when to vanish and when not to stare
By the time I packed up my bags to leave
There was nothing left in that house to believe

I remember that Tuesday, the air was thick
The sound of your footsteps making me sick
I stepped to the center and I drew the line
Seventeen years and I’m out of time
I stood like a stone while the room turned to ice
Done asking permission, done taking advice
I’m lucky I left when the moment was right
Before the fire in my blood finally caught light

     I was miles away, I was safe and gone
     While you were in the hallway carrying on
     With a heavy hate and a .38
     A bitter man snapping beneath the weight
     Now there’s a piece of lead in the cold and gloom
     Lodged in the floorboards of my upstairs room

The youngest was standing there, frozen and small
The others were listening through cracks in the wall
I didn’t find out 'til the smoke had cleared
That you finally became what we always feared
Mama changed her name and she walked out the door
But you stayed the same man you had been before

     Repeat Chorus

I sat by your bed when the breathing got thin
Watching the light slowly leave your skin
You looked at me through the morphine haze
And apologized for the rest of your days
You said, “Son, I’m sorry for hurting your Ma”
But a hole in the floor was all that I saw

Oh, there’s a piece of lead in the cold and gloom
Lodged in the floorboards of my upstairs room
Yeah, a hole in the floor
Was all that I saw

Writer: J. Ryan Johnson (BMI)
Copyright: © 2026 J. Ryan Johnson. All rights reserved.
Phone: +1 (407) 902-5419
Email: hello [at] tenthirtyam [dot] org

Audio Disclaimer

Lyrics: Original | Audio: AI-Generated

I am a songwriter and a musician, but I am not the voice meant to inhabit these verses.

I've used AI to bridge the gap for the concept demos, crafted to serve as blueprints that capture the genre, tone, and weary soul I hear for each song.

They exist as an invitation, offered in the hope that these lyrics will eventually reach the hands of an artist and storyteller who can bring them fully into the light.

Until then, they remain as they were born: quiet reflections on the grit and grace found just north of the county line.