Introduction I was reviewing a PR at work a month ago where a new application was setting up its database service, and I saw the connection pool properties, which made me think about how a small configuration looks in a single file, yet how destructive it can be at scale. A database connection...
Introduction When I joined PayPay, one of the first things I tried to understand was how our services were containerized. A common exercise when joining a new backend team is to look at the Dockerfiles used across services as they often reveal interesting patterns: Which base images are used...
Background At my current org, I got introduced to a very fun tool, PagerDuty - because who doesn't love being woken up at 3:31 AM? A similar alert flared up for one of our merchant services. While it mercifully avoided the 3 AM slot, the diagnostic was clear: The containers running were...
⬅️ Background At my previous organization, we were building a health platform, and one of the most critical, high-traffic components was our Lab test booking service. One of its core functions is to serve package details like inclusions, prices, and provider information for thousands of user...
For Senior Engineers and leads in higher positions, time is a very precious resource. Amidst the constant demands for code reviews, brainstorming sessions, planning, meetings, and general assistance, your time to sit down and code often suffers. The result? We're left feeling drained and...
Introduction At our current organization, earlier this year as we were looking at the errors at one of our signup API, we observed that nearly 5% of our requests were getting failed, all due to 400 BAD REQUEST errors, and the root cause was traced back to a regex check. This regex was a constraint...
Introduction As a developer, how often have you seen a repository with packages that are out of date? New package updates generally include new features, performance improvements, and security fixes. But keeping track of all outdated dependencies in your project can be really boring and a time...
There is a lot of information out there on how to build software for enterprise systems. If you are designing a system for a startup, a lot of these patterns and techniques simply don't work well. High levels of uncertainty, the need for maximum flexibility and a quick pace as well as serious...
Introduction At my current org, we have many applications running behind the API gateway that interacts with the outside world using REST APIs. To track server-side failures we built an alert system that nudges every time we get any 5XX error. As soon as we made the alert system live, we started...
Introduction Any application that communicates with other resources over a network has to be resilient to transient failures. These failures are sometimes self-correcting. For example, a service that is processing thousands of concurrent requests can implement an algorithm to temporarily reject...
Introduction Choosing which database to use is one of the most important decisions you can make when starting working on a new app or website. If you realize down the line that you’ve made the wrong choice, migrating to another database is very costly and sometimes more complex to do with zero...
In software engineering, SOLID is an acronym for 5 design principles intended to make software designs more understandable, flexible, robust, and maintainable. Adopting these practices can contribute to avoiding code smells too. The 5 SOLID principles are: S - The single-responsibility principle...
Introduction In a client-server architecture, the client can request a job to be done from the server by sending messages to the server. Handling this communication can increase in complexity when you begin to manage the rate at which messages are sent, the number of requests a server can handle,...
Introduction In this article, you will learn how to use Spring Boot and HarperDB to create a microservice. Later on, you will also look at how to deploy the complete application on AWS Elastic Beanstalk. You will be building an Employee Leave Management System. This application will be responsible...
Code should be written in such a way that is self-explanatory, easy to understand, and easy to modify or extend for the new features. Because code is read more than it is written that's why so much emphasis is given to clean code. The more readable our source code is: The easier it is to maintain...
Introduction In every software system, we need unique Ids to distinguish between several objects from one another. Recently, I wrote about the unique Id generation for a large scale distributed environment. In that article, we touched a little on UUIDs. In this blog post, I will share an...
In this article, I’ll share 10 of the JavaScript tips, tricks, and best practices that I follow and found useful. 1. Use Numeric Separators This is one of the most used operators when I have to deal with large numbers. When using a separator (with just an _) in number it looks better than an...
Introduction 👋 Python is a beautifully designed high-level interpreted programming language that provides us with many features. This is a gentle guide to some of those Python features that you probably might not be aware of or didn't know about that specific use-case which you'll see later in...
❓ Did you know you can’t name a file “Con” in Windows If you’re running a Windows machine, try it right now. Go to File Explorer -> create a new folder -> name it "Con" Did it work? Now try with "PRN", "AUX" or "NUL". What did you get? Probably this 👇 The system will not let you do it. Con...
You made a machine learning or deep learning model. Amazing! 🥳 But how do you check its performance and robustness? Simply building a predictive model is not enough. You have to create a model which gives high accuracy on out-of-sample data. That's where evaluation metrics come into the picture....
Introduction Recently at work, We were looking for a way to generate unique IDs across a distributed system that could also be used as the primary keys in the MySQL tables. We knew in a single MySQL database we can simply use an auto-increment ID as the primary key, But this won’t work in a...
Today I would like to discuss a topic of 'wrong' code in software development. I often find developers arguing. It can be about the use of languages, certain patterns or frameworks. Whichever topic it is, each of the arguers is adamant that the opposing approach is 'wrong'. Those arguments between...
This story starts with a call from the 1st line support that users were getting intermittent-production-only error in one of the key application my team were working on. The problem was that the application was behind the hardened environment that we had no access to. The only thing we could do is...