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