Blog

Writing that shares what I learn.

Notes on building products, infrastructure, and the debugging lessons in between. More on Medium.

GitHub Is Down. Can You Still Deploy or Roll Back Production?

GitHub Is Down. Can You Still Deploy or Roll Back Production?

Your CI/CD pipeline should build new releases, not become a dependency for keeping production alive. Here’s how to design an AWS deployment architecture that survives…

Topics

Cloud EngineeringSite Reliability EngineerAWSDevOps
Nov 5, 20269 min readMedium
My GitHub Actions Has No AWS Keys: Deploying to ECS with OIDC

My GitHub Actions Has No AWS Keys: Deploying to ECS with OIDC

My CI/CD pipeline builds, scans, and deploys applications to AWS ECS Fargate. It also runs Terraform for staging and production.

Topics

DevOpsAWSTerraformGithub ActionsCloud Security
Oct 18, 20267 min readMedium
How I Deployed Smart JobHub on AWS: Architecture, Security and Releases

How I Deployed Smart JobHub on AWS: Architecture, Security and Releases

From two half-working repos to staged, approved releases

How a Next.js and Express/Socket.IO job platform went from half-working CI to Terraform-managed AWS infrastructure, OIDC deploys, and staged releases.

Topics

AWSTerraformDevOpsCloud SecurityObservability
Oct 1, 20265 min readMedium
If a List Is Slow, Ask Whether It’s Listing

If a List Is Slow, Ask Whether It’s Listing

The fix was the query shape

Per-row writes, full-document loads, and N+1 lookups turned a simple table into a migration. What fixed it was changing the shape of the query.

Topics

BackendPerformance
Sep 12, 20264 min readMedium
Terraform: The Promise Engine for Infrastructure

Terraform: The Promise Engine for Infrastructure

Describe the cloud, review the plan, apply

You write what the cloud should look like. Terraform shows the plan, then keeps its word. Moving from console clicking to infrastructure as code.

Topics

TerraformAWSIaCDevOps
Sep 4, 20265 min readMedium
Why Kubernetes Needs Both a PV and a PVC

Why Kubernetes Needs Both a PV and a PVC

And what happens when the Pod dies

A Pod is a bad place to keep files you care about. How PersistentVolumes and PersistentVolumeClaims keep data alive when Pods come and go.

Topics

KubernetesDevOps
Aug 25, 20265 min readMedium
Docker vs Kubernetes: What Finally Made Sense to Me

Docker vs Kubernetes: What Finally Made Sense to Me

You don’t have to choose between them

Docker and Kubernetes are often framed as a choice. They aren’t. A beginner-friendly look at how the two work together.

Topics

DockerKubernetesDevOps
Aug 18, 20263 min readMedium
GitHub Actions · Docker · EC2

A CI/CD Pipeline with GitHub Actions, Docker, and EC2

From git push to production with zero manual steps

Walk through a real GitHub Actions pipeline that lints, builds, dockerizes, and deploys a Next.js app to EC2 — with multi-stage Dockerfiles, compose files, and a remote deploy script.

Topics

GitHub ActionsDockerEC2CI/CDNext.jsDevOps
Aug 4, 202616 min read
npm ERR! SIGKILL Wasn’t an npm Bug — It Was OOMKilled

npm ERR! SIGKILL Wasn’t an npm Bug — It Was OOMKilled

Symptoms vs root cause

What a Docker memory limit taught me about telling a symptom from its root cause while working through a debugging lab.

Topics

DockerNode.jsLinuxDebugging
Jul 31, 20263 min readMedium
React · Vite · AWS

Deploying a React + Vite App to AWS EC2 with Nginx and GitHub Actions CI/CD

Full CI/CD from GitHub push to nginx

Step-by-step guide to deploying a React + Vite app on AWS EC2 with nginx and a GitHub Actions CI/CD pipeline — from launching the instance to automated deploys.

Topics

ReactViteAWSEC2nginxGitHub ActionsCI/CD
Jul 4, 202614 min read
Next.js · Performance · Frontend

Stop Using GIFs for UI Demos: Use Optimized Video in Next.js Instead

Learn how to replace heavy GIF animations with optimized videos to dramatically improve your Next.js performance

Learn why GIFs hurt performance and how to replace them with optimized videos in Next.js using lazy loading and IntersectionObserver.

Topics

Next.jsPerformanceFrontendWeb Optimization
Mar 8, 202610 min read
React · Axios · Authentication

How to Set Up Axios with Token Refresh, Interceptors, and Global Error Handling in React

Production-ready API client with auth and refresh

Configure Axios in React with interceptors, access and refresh tokens, automatic token refresh, and global error handling — centralized and maintainable.

Topics

ReactAxiosAuthenticationTypeScript
Feb 20, 202512 min read
JavaScript · for...of · for...in

for...of vs for...in in JavaScript

When to use each loop

The difference between for...of and for...in in JavaScript: iterables vs plain objects, values vs keys, and when to use Object.entries().

Topics

JavaScriptfor...offor...in
Feb 15, 20253 min read
JavaScript

Things to Remember About JavaScript

Truthy, falsy, and other everyday rules

Short notes on JavaScript behaviour worth keeping in mind, starting with truthy and falsy values.

Topics

JavaScript
May 8, 20212 min readMedium
React · JavaScript

Fundamentals of React.js

Library or framework?

The difference between a framework and a library, and the core ideas behind React.

Topics

ReactJavaScript
May 7, 20212 min readMedium
JavaScript · ES6

JavaScript ES6 Short Note

The ES6 features you use every day

A quick tour of ES6: variable declarations with var, let, and const, and the other features introduced in the second major revision of JavaScript.

Topics

JavaScriptES6
May 6, 20213 min readMedium
JavaScript

Important JavaScript Methods to Remember

Strings, arrays, and more

A reference of commonly used JavaScript methods for strings, arrays, and numbers.

Topics

JavaScript
May 5, 20212 min readMedium