Notes from the lab
Writing
Longer-form notes on things I've built or broken. Older posts live on Medium; newer ones are hosted here so they don't disappear behind a paywall. Here means it's on this site, Medium means it's external.
All posts on Medium → · dev.to →
-
The guardrail that invented a genre
HereAn AI-written fallback defaulted unknown values to the first item in a list, and confidently ranked the wrong song. Nothing errored, nothing logged — which made it worse than a crash.
-
Deleting our AWS access keys: GitHub Actions to AWS with OIDC
HereLong-lived IAM keys in CI are the single easiest credential to leak. Here's the trust policy, the role scoping, and the two mistakes that cost me an afternoon.
-
Keyless image signing with Cosign, and actually enforcing it
HereSigning images is the easy half. The value only arrives when the cluster refuses to run anything unsigned — which is where most tutorials stop.
-
Kubernetes Cluster Autoscaler deployed on an EKS cluster
Medium · AWS TipTerraform-provisioned EKS, autoscaler deployed with Helm, then load-tested until nodes genuinely scale in and out.
-
Provisioning AKS with Terraform, pushing to ACR via Jenkins, deploying with Argo CD
MediumThe same GitOps pattern on Azure — proof that the delivery model transfers even when the pipeline doesn't.
-
Deploying to EKS with AWS CodePipeline and CodeCommit
Medium · AWS TipA native AWS CI/CD path onto EKS, with the build and deploy stages wired together end to end.
-
Deploying a containerized Django app to DigitalOcean Kubernetes
MediumContainerising a real-estate web app and shipping it to a managed DOKS cluster with Helm and GitHub Actions.
-
HumanGov: reusable SaaS multi-tenant AWS infra with Terraform modules
MediumOne module set, an isolated stack per tenant — onboarding a new state becomes a variable change rather than a new codebase.
-
Jenkins with SSL on DigitalOcean, behind an Nginx reverse proxy
Medium · AWS TipStanding up a self-hosted Jenkins properly — TLS termination, reverse proxy config, and the tooling setup that follows.
Starting a new post? Copy writeups/_template.html.