Articles
What I've learned building things.
Notes on backend systems, mobile development, infrastructure, and the decisions behind shipping software.
The Art of Saying No in Software Projects
When I first started building my own application, I was excited about every idea that popped into my head. Every feature felt essential, eve...
How Learning Entrepreneurship Changed My Approach to Software Projects
When I first started coding, my mindset was purely technical. My focus was on writing clean code, learning new frameworks, and solving probl...

Building a Complete Camera Experience in React Native with Expo
Mobile apps often need camera functionality beyond just taking a simple photo. Maybe you want to toggle flash, zoom in and out, switch betwe...

The Anatomy of a Project Killer: When Micromanagement Goes Wrong
Have you ever seen a project that feels like it's running on a treadmill? Developers are putting in the hours, sweating through deadlines, b...

Building a Resilient Scraper with RabbitMQ and RxJS
In this article, I’ll share how I built a resilient scraper system powered by RabbitMQ for message-driven orchestration and RxJS for concurr...

Understanding the Semaphore Mechanism in Concurrency Control
Concurrency is one of the most challenging aspects of system design. When multiple processes or threads attempt to access shared resources s...

Building a Self-Deploying Website Platform: What I Learned
Concurrency is one of the most challenging aspects of system design. When multiple processes or threads attempt to access shared resources s...

An Introduction to the CQRS Pattern
CQRS, which stands for Command Query Responsibility Segregation, is an architectural pattern that separates the process of changing applicat...

Understanding Dependency Injection in Express.js
Dependency Injection (DI) is a powerful design pattern that helps you create more flexible, testable, and maintainable applications.

React Native's Renaissance: Why the New Architecture Makes it the Top Choice for Cross-Platform Apps
For years, React Native has been a powerful tool for building cross-platform mobile applications. However, it's also faced its share of crit...
Scaling NestJS Applications with Microservices and RabbitMQ
Modern web applications face increasing demands for scalability, maintainability, and performance. As monolithic architectures reach their l...

Run a Cloud-Native App With Kubernetes
This post shares our high-level infrastructure patterns for running modern web apps at scale. It’s technology-specific enough to be useful, ...

Building a Bulletproof E-commerce Transaction Flow with NestJS and TypeORM
Handling transactions is the most critical part of any e-commerce application. A single bug can lead to lost revenue, incorrect inventory, a...