Back to tags
#devops
where the dev ends, the ops begins, and the on-call rotation never sleeps.
11 blog posts · 4 TILs.
Posts and notes that sit where development stops and operations starts. The CI/CD comparison came from running GitHub Actions and GitLab CI side by side across fifty microservices; the Terraform post is a list of mistakes paid for in pages. There's Docker hardening, a Prometheus and Grafana stack that isn't a hello-world dashboard, a fifteen-minute migration off Netlify, and the short kubectl and git notes that turned into muscle memory. The security-flavoured half of the same job lives under lazy-sre.
Blog posts
A CI runner starts with an empty layer store, so every build is a first build. Cache mounts, instruction order, and an exported cache fix it in about ten…
Threshold alerts page you for causes that may not matter. Multi-window burn-rate alerts page you once, for the symptom, when the error budget is genuinely…
CrashLoopBackOff is a symptom with five common causes. The exit code and the last event narrow it to one in under a minute, before you open the…
Ten years of git distilled into eight daily aliases: gst, glola, gd, gcam, an fzf branch picker, and the weekly branch-pruning ritual that keeps repos…
How to self-host SimpleLogin with Docker, Postfix and Brevo on a $3/month VPS. DNS, reply-from-alias, and the TLS gotcha that ate two hours of my Sunday.
Netlify suspended five free-tier sites of mine one Tuesday night. The 15-minute migration to Dokploy on a €3/month VPS that bought everything back.
GitHub Actions vs GitLab CI after two years running both across 50 microservices: build times, free-tier minutes, Docker support, debugging, and which to…
A practical guide to setting up Prometheus and Grafana for production monitoring. No theory, just battle-tested configurations that work.
Five Kubernetes debugging tricks from real 3 AM pages: kubectl logs --previous, ephemeral debug containers, scheduler events, and fixes that saved…
Your containers are probably insecure. Here's how I learned to harden Docker containers the hard way, and the security mistakes that almost cost us.
Terraform mistakes I made so you don't have to: hardcoded AMIs, lost local state, a 2000-line main.tf, an unpinned provider, and a stray terraform destroy.
Today I learned
Turn five 'fix typo' commits into one before the review notices. git rebase -i, the rules for when not to use it, and the aliases I keep around.
Volume mounts that look right but won't persist data. The five-command inspection sequence that always tells me which mount is actually being read.
kubectl can return exactly the field you want without a grep-awk-sed pipeline. JSONPath queries that replaced my entire stash of one-liners.
Docker builds slow despite a clean layer order? Your .dockerignore is probably letting files bust the cache on every commit. The two-line fix.