Introduction We had one API endpoint that generated a PDF report. It worked fine in testing. Then a customer ran it on a big dataset, and for about four seconds every other request to the server just hung. Health checks timed out, and the load balancer pulled the instance out of rotation. The database was […]
Introduction The first time I shipped a Node.js service to production, I ran docker images out of habit and stared at the number for a good ten seconds. The image was 1.1 GB, for an app whose actual code was only a few hundred kilobytes. It still worked, so I let it slide. Then the […]
Imagine you’re building an e-commerce website. The homepage should load instantly for every visitor, product pages need updated pricing and stock information, the checkout page must always display the latest cart details, and the user dashboard is personalized after login. Using the same rendering strategy for all these pages wouldn’t be efficient. This is where […]
Introduction Large Language Models (LLMs) are incredibly powerful, but they have a major limitation: they are cut off from the real world. Imagine building a customer support bot. A user asks, “Where is my order #12345?” On its own, an LLM cannot fetch live database records, call a shipping provider’s API, or check inventory levels […]
Introduction A few months ago I stumbled on something that made me feel like, “wait, what?” one of our testing sites was showing up in Google search results. It wasn’t supposed to be public, it was a playground for QA and developers, but there it was, indexed and discoverable. That little surprise led to a […]
Whenever the codebase of a frontend application starts growing bigger, the initial solution seems straightforward. You just hire a couple more developers, spin up a few new feature branches, and keep pushing code into the same repository. For a while, that works perfectly fine. It’s the classic way software gets built. But eventually, reality hits. […]
Introduction Real-time systems are now central to modern businesses. Payments, order updates, customer activity, telemetry, notifications, and analytics all depend on events moving quickly and reliably between services. The challenge is not just speed. The challenge is preserving correctness and resilience when systems are distributed, traffic is variable, and failures are inevitable. Apache Kafka […]
Introduction Applications can fail in a lot of different ways – API failures, UI errors, server issues, or incorrect input from a user. When something goes wrong in a production environment, it can be difficult for people to replicate the error in their local environment. To address the above challenge in development, teams can use […]
Introduction There is no doubt that Angular is powerful. But after using Angular from v1 to v20 in real production systems, I found that most performance problems and messy codebases come from a small number of mistakes that keep happening. In this article, I’ll talk about what I’ve learned from my own projects that helped […]