Notes from the platform.
19 posts on cloud cost, Kubernetes, CI/CD, and the things I learned breaking production so you don't have to.
Stop Over-Provisioning Your K8s Requests and Limits
If you aren't measuring actual container utilization, you’re burning 40% of your cloud budget on idle CPU and RAM. Here is how to stop the waste.
Stop Relying on Default EKS Node Termination Handlers
If you aren't gracefully handling Spot instance interruptions, your users are seeing 500s every time AWS reclaims capacity.
Stop Using `latest` Tags in Your Docker Images
Using 'latest' is a production anti-pattern that hides deployment drift and makes rollbacks a guessing game. Use semantic versioning or commit hashes instead.
Stop Ignoring Kubernetes Liveness and Readiness Probes
If your pods restart randomly or lose traffic during deployments, you don’t have an infrastructure problem—you have a probe problem.
Stop Using Cluster-Admin for Everything
If your service account can delete every pod in the cluster, you’re one compromised workload away from a cluster-wide incident.
Stop Storing AWS Keys in GitHub Secrets
Use OpenID Connect to let GitHub Actions assume an AWS IAM role and push to ECR — no long-lived access keys, ever.
Scoping Down an AWS IAM Wildcard Policy
A wildcard IAM policy isn't least privilege - it's a promise to get burned later. Here's how to scope permissions down with Access Analyzer and CloudTrail.
Container Security: Running as Non-Root
Why most containers run as root, why that's a security risk, and how to switch to a non-root user in your Dockerfile in about 5 minutes.
Your Cache Is Making Things Worse
How a bad caching strategy creates more problems than it solves, and the questions worth asking before you reach for Redis or a CDN.
Vendor Lock-in: Speed vs. Flexibility
Ask this one question before choosing a managed cloud service-it might save you months of migration work later.
Stop Hardcoding AWS Keys.
For EC2 workloads, attach an IAM role via an instance profile so your app obtains temporary credentials automatically. No hardcoded keys needed.
I Panicked Over Nothing For An Hour
A debugging story from when I started with Kubernetes at my old job. I thought I'd broken everything. Turns out I was just looking in the wrong place.
Communication Is a Skill Engineers Need
Engineers often fail not because they can't code, but because they can't explain what broke and why. Here's how to communicate better with stakeholders.
The State of Hiring, AI, and 2025
Hiring Trends 2025: AI's impact on recruitment, engineering talent market, and what DevOps/backend engineers should know about hiring evolution.
Docker Layers, Caching & Multi-Stage Builds Explained
Docker Layer Caching: How Docker builds work, multi-stage builds, build optimization, and reducing image size with efficient layer management strategies.
Dockerfile Labels: A Comprehensive Guide
Dockerfile Labels Guide: Metadata, versioning, maintainer info, and organizational best practices for Docker images and container orchestration.
Base Images: The Secret to Smaller Docker Images
Docker Base Images Guide: Alpine, distroless, slim variants explained. Learn how choosing the right base image cuts container size by 50–80% or more.
Compressed vs. Uncompressed Docker Images
Docker Image Optimization: Explore compressed vs uncompressed layers, size reduction strategies, and how Docker storage works to build efficient containers.
How to Create and Run a Docker Container
Learn how to create a Docker container step by step: write a Dockerfile, build an image, and run and manage containers with the exact commands you need.