A couple of months back a customer asked why we are proposing a three Availability Zone (AZ in short) architecture instead of two. Their main point was which failure modes 3 AZs guard against that … | Continue reading
I spent some time going over the Postgres schema of Gitlab. GitLab is an alternative to Github. You can self host GitLab since it is an open source DevOps platform. My motivation to understand the … | Continue reading
Most of us are building systems that sit on top of other third party systems. This is common in the FinTech ecosystem that I am currently involved with. Most Neo-banks are built on modern core bank… | Continue reading
Last few months I have spent a lot of time doing code reviews. During the code review exercise I also pair with developers to refactor and improve the quality of their pull requests (PR). I care a… | Continue reading
One of the common Web API design mistakes that I see when I review work of development teams is exposing database models as API. If you are building a Java Spring Boot JPA application then it means… | Continue reading
Visit the post for more. | Continue reading
I have been using Docker since late 2013 and for me and many others Docker has revolutionised the way we build, package, and deploy software. As a community we are grateful to Docker and its creato… | Continue reading
Most software companies have to make decisions on whether to build a custom software or buy it from a vendor. Some of these decisions are mentioned below. Should we build the recruitment tracking s… | Continue reading
In the last couple of years, I took close to two hundred interviews. These interviews range from Java engineers with two years of experience to architects holding more than fifteen years of experie… | Continue reading
Happy New Year!2020 was a difficult year for most of us, as we fought with COVID-19 and came to terms with the remote way of working. It was a year when we had a lot more time in our hands as all o… | Continue reading
Before we start let me give some context on my background so that you can better understand my thoughts on Monorepo. I head technology at an IT services organization. Most of the products tha… | Continue reading
Many Java users hate it at times for being too verbose. Many of us have started using other languages like Kotlin or Scala for their terseness and expressiveness. One of the feature that Java progr… | Continue reading
I am doing software development for the last 15 years. Since I heard the term “Full Stack Developer” few years back I had a strong dislike for this term. To most people full stack devel… | Continue reading
This week I had to work on a performance issue. Performance issues are always fun to work with. They give an opportunity to get into the depth of the technology we are using. We learn how much we d… | Continue reading
I have worked with multiple software development teams that because of feature delivery pressure does not apply best practices. This later leads to tech debt and cost more time. In the last project… | Continue reading
All software has software architecture. This is true even when a team has not spent time coming up with it. This architecture is often called Big ball of Mud. A big ball of mud architecture is a so… | Continue reading
I love the idea of everything as code. It enables use of version control for all aspects of software development. These days we use everything as code approach for documentation, infrastructure pro… | Continue reading
GraphQL is a query language built by Facebook. It is an alternative to building REST APIs. In the last few years it has become popular and there are many big organisations like Facebook, Github, Ne… | Continue reading
A couple of weeks back I learnt about DuckDB while going over DB Weekly newsletter. It immediately caught my attention as I was able to quickly understand why need for such a database exist. Most d… | Continue reading
Few years back I was working on an application where I had to pull data from an event table(populated using database triggers) and update my application specific data stores . This is a common prob… | Continue reading
I became aware of Regret Minimization Framework quite recently while reading a random post on the web. With in that timeframe it has helped me take a couple of big decisions with clarity. Had I kno… | Continue reading
Occam’s Razor helps us choose between two or more explanations of a problem. It provides a useful mental model for problem-solving. A razor is a principle or rule of thumb that allows one to … | Continue reading
This post explains my learning on how to introduce Chaos Engineering to an organisation. This is based on my experience of re-architecting monolithic application to Microservices based architecture… | Continue reading
If you have ever worked on a distributed application you will know that it is difficult to debug when things go wrong. The two common tools to figure out root cause of the problem are logging and m… | Continue reading
It is common these days to run front-end and back-end services inside Docker containers. The front-end service usually talks using a API with the back-end service. In this post we will cover follow… | Continue reading
A couple of weeks back a junior developer asked me a seemingly simple question – What is a distributed system? One question led to another and we end up spending more than an hour discussing … | Continue reading
Flair delivers state-of-the-art performance in solving NLP problems such as named entity recognition (NER), part-of-speech tagging (PoS), sense disambiguation and text classification. It’s an NLP f… | Continue reading
Today, I was interested to know how does Docker uses cgroups to set resource limits. In this short post, I will share with you what I learnt. I will assume that you have a machine on which Docker i… | Continue reading
Recently, I wanted to load test one of my applications. In my previous projects, I have used Apache JMeter and Gatling. Both of them are great tools but I wanted something with ease of Apache Bench… | Continue reading
We all are looking for a quick way to earn money, lose weight, build relationships, get promotion in our job, or become successful in life. I have failed numerous times with my effort to achieve my… | Continue reading
Welcome to the fourth post in the distributed systems series. In the last post, we covered ACID transactions. ACID transactions guarantee Atomicity: Either all the operation succeed or none Consist… | Continue reading
Welcome to the third post of distributed system series. So far in this series, we have looked at service discovery and CAP theorem. Before we move along in our distributed system learning journey, … | Continue reading
It is a reality that most of us are building distributed systems. According to wikipedia, a distributed system is a system whose components are located on different networked computers, which then … | Continue reading
I am starting a new blog series (with no end date) from today. In this series, I will pick a topic and go in-depth so that I don’t just scratch surface of the topic. The goal is to build a ha… | Continue reading
Since last couple of years, writing has fascinated me. I became interested in writing as I started spending more time reading books. I have read more books in last couple of years than I have read … | Continue reading
The fool’s life is empty of gratitude and full of fears; its course lies wholly toward the future – Epicurus Most of us these days are obsessed with our future. In future we want to be … | Continue reading
Last week, we (me and my team) started a new sprint of our software development project. We follow a two-week sprint cycle that starts on Wednesdays and continues until Tuesday. Following the plann… | Continue reading
A couple of weeks back I was working on a piece of code that was becoming a tangled mess of if-else conditions. I was finding it difficult to reason and adding a new condition without breaking the … | Continue reading
Today, a colleague asked me how they can pass a java.util.Stream to a function that accept an java.lang.Iterable. Let’s suppose we have a following function that accepts an Iterable. The call… | Continue reading
Welcome to the fourth issue of 10 Reads weekly newsletter. Below are the 10 posts that taught me something useful and unique that will help me become better software engineer. Total time to read t… | Continue reading