Writing on software design, company building, and the aerospace industry.

All of my long-form thoughts on programming, leadership, product design, and more, collected in chronological order.

Inside a Docker-Compose-Based Test Environment for Ansible IaC

A technical deep dive into the Dockerfile and docker-compose setup behind functional infrastructure testing — including SSH access, network segmentation, systemd mocking, and downloadable reference samples.

DevOpsDockerAnsibleTestingInfrastructure as CodeTechnical Deep Dive

Functional Infrastructure Testing for Ansible

A Docker-Compose-based functional testing approach that validates multi-environment Ansible roles using real inventories, lifecycle semantics, and SSH — without cloud dependencies.

DevOpsAnsibleTestingDockerInfrastructure as CodeCI/CD

Auditing Ansible at Scale with Structured Action Logging (JSONL)

rf_action_logger introduces JSONL-based action logging that turns Ansible executions into machine-readable, auditable data — designed for security-sensitive and large-scale IaC environments.

DevOpsAnsibleLoggingComplianceSecurityObservability

Scaling Ansible Variable Management with Nested group_vars and host_vars

rf_nested_vars introduces nested variable hierarchies, explicit customer and environment scoping, and deep-merge semantics for large-scale, multi-tenant Ansible repositories — proven in production environments.

DevOpsAnsibleInfrastructure as CodeMulti-TenancyConfiguration Management

From Tags to Lifecycles: A Safer Delivery Model for Ansible Roles at Scale

Tag-based execution breaks down in large IaC codebases. This article introduces a lifecycle-driven role pattern (install, update, remove, ignore) that replaces tags with explicit delivery semantics — improving safety, clarity, and long-term maintainability.

DevOpsAnsibleInfrastructure as CodeBest PracticesConfiguration ManagementArchitecture

When Faster Ansible Becomes Incorrect

Mitogen dramatically speeds up Ansible, but parallel execution can break hidden provisioning dependencies. This article explains why global parallelism fails in practice — and how selective strategy switching preserves both performance and correctness at scale.

DevOpsAnsiblePerformanceMitogenInfrastructure as CodeBest Practices