<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Zubin Khavarian | Principal Front-End Engineer</title><description>Personal site and blog of Zubin Khavarian, Principal Front-End Engineer. React, TypeScript, design systems, and AI-native engineering.</description><link>https://zubin.dev/</link><language>en-us</language><item><title>Soundscapes for Web Games: A Pluggable Howler Implementation - Part 2</title><link>https://zubin.dev/blog/web-game-soundscapes-2-howler/</link><guid isPermaLink="true">https://zubin.dev/blog/web-game-soundscapes-2-howler/</guid><description>Part 2 of the soundscape series. An engine-agnostic class under a hundred lines, a six-function bus adapter contract, and host bindings for React, Phaser, and imperative three.js.</description><pubDate>Mon, 11 May 2026 17:00:00 GMT</pubDate><category>audio</category><category>howler</category><category>game-dev</category><author>Zubin Khavarian</author></item><item><title>Soundscapes for Web Games: The Layer Beneath Your SFX - Part 1</title><link>https://zubin.dev/blog/web-game-soundscapes-1-concepts/</link><guid isPermaLink="true">https://zubin.dev/blog/web-game-soundscapes-1-concepts/</guid><description>Why most web games sound flat, and what a soundscape system actually is. Part 1: the concept, the three knobs that buy the most realism, and the anti-patterns to avoid.</description><pubDate>Mon, 20 Apr 2026 17:00:00 GMT</pubDate><category>audio</category><category>howler</category><category>game-dev</category><author>Zubin Khavarian</author></item><item><title>switch(true): The Stylish Way to Simplify Complex Conditionals in React</title><link>https://zubin.dev/blog/switch-true-the-stylish-way-to-simplify-complex-conditionals-in-react/</link><guid isPermaLink="true">https://zubin.dev/blog/switch-true-the-stylish-way-to-simplify-complex-conditionals-in-react/</guid><description>A practical guide to the switch(true) pattern for collapsing tangled if-else chains in React. When to reach for it, when to avoid it, and how it compares to lookup maps.</description><pubDate>Tue, 17 Oct 2023 00:00:00 GMT</pubDate><category>react</category><category>javascript</category><author>Zubin Khavarian</author></item><item><title>Crafting Quality Code with Conventional Comments</title><link>https://zubin.dev/blog/crafting-quality-code-with-conventional-comments/</link><guid isPermaLink="true">https://zubin.dev/blog/crafting-quality-code-with-conventional-comments/</guid><description>A practical guide to using Conventional Comments in code reviews: the labels, the decorators, when to use which, and copy-paste examples that move PRs forward instead of stalling them.</description><pubDate>Tue, 10 Oct 2023 00:00:00 GMT</pubDate><category>code review</category><category>git</category><category>teamwork</category><author>Zubin Khavarian</author></item><item><title>To Yak Shave or Not: The Art of Procrastination in Software Development</title><link>https://zubin.dev/blog/to-yak-shave-or-not/</link><guid isPermaLink="true">https://zubin.dev/blog/to-yak-shave-or-not/</guid><description>A practical guide to yak shaving: when the detour is worth it, when to stash it, and how it differs from bike shedding.</description><pubDate>Tue, 19 Sep 2023 00:00:00 GMT</pubDate><author>Zubin Khavarian</author></item><item><title>Speedier TypeScript Compilations with skipLibCheck</title><link>https://zubin.dev/blog/boost-typescript-compilation/</link><guid isPermaLink="true">https://zubin.dev/blog/boost-typescript-compilation/</guid><description>Unlock faster TypeScript compilations with the skipLibCheck option in tsconfig. Delve into its workings, benefits, and trade-offs to optimize your projects while maintaining type safety.</description><pubDate>Sat, 26 Aug 2023 00:00:00 GMT</pubDate><category>javascript</category><category>typescript</category><author>Zubin Khavarian</author></item><item><title>JavaScript Module Systems Unraveled: Which One to Use and When</title><link>https://zubin.dev/blog/js-modules-systems-unraveled/</link><guid isPermaLink="true">https://zubin.dev/blog/js-modules-systems-unraveled/</guid><description>Dive into the intricate world of JavaScript module systems! 🚀 From ESM to CommonJS, AMD, UMD, and the mystery of .mjs &amp; .cjs extensions; we&apos;re breaking it all down. Discover which system fits best for your project and environment. </description><pubDate>Mon, 21 Aug 2023 00:00:00 GMT</pubDate><category>javascript</category><category>typescript</category><category>es-modules</category><category>esm</category><category>commonjs</category><author>Zubin Khavarian</author></item><item><title>Name Game: Why You Should Favor Named Exports in ES Modules</title><link>https://zubin.dev/blog/favor-named-exports-in-es-modules/</link><guid isPermaLink="true">https://zubin.dev/blog/favor-named-exports-in-es-modules/</guid><description>Advantages of preferring named exports in ECMAScript (ES) modules: clarity, codebase consistency, streamlined refactoring, selective imports, autocomplete support, and ease of optimization.</description><pubDate>Thu, 17 Aug 2023 00:00:00 GMT</pubDate><category>javascript</category><category>typescript</category><category>es-modules</category><category>named-exports</category><author>Zubin Khavarian</author></item><item><title>Learning the Basics of JavaScript/TypeScript Decorators</title><link>https://zubin.dev/blog/js-decorators-basics/</link><guid isPermaLink="true">https://zubin.dev/blog/js-decorators-basics/</guid><description>Exploring TypeScript decorators: a meta-programming feature for class declarations and members, offering types like class, method, accessor, property, and parameter decorators, enhancing code elegance and abstraction.</description><pubDate>Fri, 23 Jun 2023 00:00:00 GMT</pubDate><category>javascript</category><category>typescript</category><category>decorators</category><author>Zubin Khavarian</author></item></channel></rss>