I'm a Principal Software Engineer at Microsoft with 15+ years of experience across frontend, backend, and cloud infrastructure. I've built applications serving hundreds of millions of users. I write about TypeScript, React, and the engineering practices I've learned solving hard technical problems at scale. Let's connect .
2025
- How JavaScript Modules Actually WorkUnderstanding how JavaScript's module cache works will change how you think about dependency management—and why IoC containers are often unnecessary.
- The Mental Shift: Java and C# to TypeScriptThe syntax may look familiar, but idiomatic TypeScript is fundamentally different from Java and C#. Here's the mental shift required to write TypeScript that fits the language.
- The Shared Instance That Leaked User DataA subtle Node.js bug where module-scoped instances holding request-scoped state can leak data between users due to the single-threaded event loop.
- Stop Writing Static Classes in TypeScriptLearn why static classes can be problematic in TypeScript and discover better alternatives for writing cleaner, more maintainable code.
- If It Looks Like a Duck: Understanding TypeScript's Structural TypingTypeScript uses structural typing—if it has the right shape, it works. Here's how this differs from Java and C#'s nominal typing and why it matters.
- Use the Module System to Write Better Unit TestsJavaScript's module system provides dependency injection for free. Learn how to write simpler, more testable code without IoC containers or constructor injection.
- One PR. One Purpose.Mixing unrelated changes in a single PR is careless. It makes reviews harder, hides bugs, slows teams down, and turns reverts into nightmares.
- JS Meta Frameworks Are Not Bundler AgnosticI thought frameworks sat above the bundler, but reading the plugin code changed my view.
- The Mental Model Shift: From Server to Client and Back AgainHow the web industry evolved from server-side templates to SPAs to hybrid architectures, and why each transition required developers to think differently.
- The Hidden Tax of JavaScript BoilerplateHow tooling fragmentation slows teams down and why unified toolchains with solid defaults matter.
- Why the Most Effective Engineering Systems Come From Product TeamsHow proximity to the delivery loop determines the effectiveness of engineering systems and platform infrastructure.
- Trunk Based Development and the Cost of IntegrationHow branching strategies shape delivery performance through integration cost and coordination overhead.