Blog
Notes on building products, architecture decisions, and tools I use day to day.
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
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.
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.
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().