Blog
// engineering_notes Writing about web development, tools, and engineering.
Building Type-Safe APIs with Nuxt 3 Server Routes
How I replaced a standalone Express server with Nuxt 3 server routes and gained end-to-end type safety across the full stack.
Why I Moved from React to Vue (and What I Learned Going Back)
After five years across both ecosystems, the differences that actually matter in production and the ones that don't.
GSAP ScrollTrigger Patterns I Use in Every Project
Scroll-linked reveals, parallax, pinned sections, and the performance tricks that keep everything at 60fps.
Designing a Token-Based Design System for Dark Interfaces
How I built the semantic color tokens, typography scale, and spacing system that powers this portfolio.
Three.js on the Web: Lessons from Building a Terrain Hero
What I learned shipping a real-time 3D terrain as a page hero: GPU budgets, mobile fallbacks, and when WebGL is worth it.
Practical TypeScript: Patterns That Survived Production
Discriminated unions, branded types, const assertions, and the patterns I reach for daily after five years of TypeScript.
Server-Side Rendering vs Static Generation: When Each Wins
A decision framework for choosing between SSR, SSG, and ISR based on real project constraints, not marketing pages.
Building Accessible Interfaces Without Thinking About It
The semantic HTML patterns, ARIA conventions, and focus management habits that make accessibility automatic.
Git Workflows That Actually Work for Small Teams
Trunk-based, feature branches, and the hybrid approach I settled on after leading frontend across four major projects.
Performance Budgets: How I Keep Web Apps Fast
Bundle analysis, lazy loading strategies, image optimization, and the metrics I track from day one of every project.
Composables over Mixins: State Management in Vue 3
How composables replaced mixins, Vuex, and half my utility files, with patterns for sharing reactive state cleanly.
What Working Remotely from Dubai Taught Me About Async Collaboration
Time zones, documentation-first culture, and the communication habits that made distributed teams work.
From Freelance to Product: Lessons Shipping Client Projects
What 10+ client projects taught me about scope, estimation, client communication, and knowing when to push back.
Build your own Real-Time Communication application with WebRTC
[2021]
Learn how to build a real-time communication application using WebRTC from scratch.
medium://read_article (opens in new tab)Implement basic Video Calling in React using AgoraWebSDK NG
[2021]
Step-by-step guide to implementing video calling in React with Agora Web SDK.
medium://read_article (opens in new tab)Hand tracking with Agora video calling (tutorial)
[2021]
Combine hand tracking with real-time video calling using Agora SDK.
medium://read_article (opens in new tab)Walk-through with the Agora.io SDK and their available platforms
[2021]
An overview of the Agora.io SDK and what the platform offers.
medium://read_article (opens in new tab)Want yourself to make Face Filters in Real Time Communication?
[2021]
Build face filters for real-time communication applications.
medium://read_article (opens in new tab)Creating your first Open Video calling using Agora
[2020]
Get started with open video calling using the Agora platform.
medium://read_article (opens in new tab)