← Return to Home

Blog/Thoughts

Deep dives, architectural notes, and musings.
2025-12-08•25 min

Building an Autoscaler for Docker Swarm: Inside swarmctl

Swarm gives you `docker service scale` and nothing else. This is how I built swarmctl, a daemon that collects metrics, decides when to scale, executes safely, and coordinates VM scaling with OpenStack.

2025-11-10•18 min

Running Production Swarm: Serving Containerized Apps Without Kubernetes

Our company is early in its containerization journey, so I started with Docker Swarm instead of Kubernetes. This is the whole architecture: edge, routing, placement, autoscaling, failures, and what I would do differently.

2025-10-13•15 min

Building a CloudTrail for OpenStack: Why We Chose Loki Over Hermes, Elasticsearch, and Everything Else

There is no built-in AWS CloudTrail equivalent for OpenStack. This is the full story of what already exists, why none of it was quite right, and what we actually built.

2025-02-27•2 min

Welcome to My Digital Sandbox!

Joe thinks I'm doing some amazing stuff and honestly, he wanted a front-row seat to read about it.

2025-01-27•10 min

Building a Production Monitoring Stack from Scratch, Part 4: The Enrollment API

Eliminating manual SSH work, and why the solution ended up living inside Grafana.

2025-01-20•10 min

Building a Production Monitoring Stack from Scratch, Part 3: Loki, Tempo & the Full Observability Picture

Adding log aggregation with Loki and distributed tracing with Tempo, completing the metrics, logs, and traces picture.

2025-01-13•11 min

Building a Production Monitoring Stack from Scratch, Part 2: Grafana Alloy & the Push vs Pull Problem

Why we replaced individual exporters with Grafana Alloy, why push-based metrics silently broke our alerting, and what it took to figure that out.

2025-01-06•10 min

Building a Production Monitoring Stack from Scratch, Part 1: Prometheus, Grafana, Node Exporter & AlertManager

How we migrated from NagiosXI to a modern open-source observability stack, and why getting the foundation right mattered more than I expected.