Notes

Blog

Notes from actual engagements — CI/CD, Kubernetes, and Linux, written by the people who did the work.

6 min read

Zero-downtime deploys with Nginx and PM2

How to ship a new Node.js release without dropping a single request — using PM2 cluster mode and an Nginx upstream, no Kubernetes required.

Node.jsPM2Nginx
7 min read

GitLab CI vs GitHub Actions: runners, caching, and when to self-host

Both platforms will build and deploy your app. The real decision is where your runners live and who's responsible for them.

CI/CDGitLab CIGitHub Actions
5 min read

Kubernetes autoscaling: HPA vs cluster autoscaler, and why they're not the same thing

The Horizontal Pod Autoscaler scales your pods. The cluster autoscaler scales your nodes. Confusing the two is why "autoscaling" doesn't work the way people expect.

KubernetesAutoscaling
8 min read

A practical checklist for hardening a fresh Rocky Linux server

The dozen things we do before a new server goes anywhere near production traffic — in order, with the actual commands.

LinuxRocky LinuxSecurity
7 min read

A Kubernetes production readiness checklist that isn't just YAML linting

kubectl apply succeeding means the cluster accepted your manifest — not that it's ready for real traffic. Here's what we actually check before it is.

KubernetesProduction
6 min read

Terraform in production: the practices that matter once more than one person runs apply

Terraform on a solo side project and Terraform a team runs against shared infrastructure are different disciplines. Here's where the second one actually breaks.

TerraformAWSIaC
6 min read

Docker in production: what we check before an image goes anywhere near go-live

A Dockerfile that builds successfully and an image that's safe to run in production are different bars. Here's the gap between them.

DockerProductionSecurity
5 min read

Cloud cost optimization: the boring checks we run before anything fancy

Most cost-optimization advice starts with Reserved Instances and Savings Plans. Most of the actual savings we find come from three much less exciting checks first.

AWSCost OptimizationCloud