Importance of S.O.L.I.D principles


As developers, we have always dealt with legacy codebases. Most of the legacy codebases have tightly coupled classes, redundant code, and less test coverage. This gives a developer a hard time to comprehend the functionality of a codebase when giving a quick glance at the code.

Key differences between the programming models


Single processor systems dominated during the early days of computing. The synchronous programming model was adopted in many early programming languages. With the advancements in hardware, there was a need to develop better programming models. A robust model that would fully utilize all the resources would be the most suitable…

Anatomy of Two-phase commit


In today’s world, data is growing at an enormous rate. Enterprises have built innovative solutions to handle a humongous amount of data. It’s not uncommon to see data distributed across many machines or databases. This technique is known as ‘Sharding’, helps in building scalable & reliable systems.

Tech companies also…

A brief overview of Containerization technology & its building blocks


Containers have seen widespread adoption across the Tech industry. Almost every company has started adopting containers for deploying microservices. Container orchestration technology such as Kubernetes(K8) has simplified the management of containers. Companies using Kubernetes have observed improvements in scalability, reliability & operability of their systems.

Implementation & Illustration of the Observer design pattern


Real-world software systems rely heavily on events. Any state change occurring in the system comprises an event. Whenever you purchase anything online, you get an email notification. Similarly, your Bank may send you a text message about a successful transaction. As customers…

Fundamentals of Kafka


Kafka has revolutionised the processing of events stream in distributed computing. Before the advent of Kafka, the industry employed message queues and publisher-subscriber systems. Both these systems had their limitations in scalability and performance. Kafka took the best of both the world from the two systems. …

High-level Design of URL Shortner


System design Interview problems are intentionally open-ended. It gives an interviewer opportunity to evaluate design skills and also the depth of technical concepts. Day-to-day engineering work involves architecting a lot many scalable systems. …

Elliptic Curve Cryptography in simple words


In the past century, the world has seen unprecedented progress in the field of Cryptography, & Computer Security. In today’s world, all electronic devices use cryptography for secure communication. We have come a long way since the WW2 days when Nazis used the Enigma…

Introduction, use cases, strategies, and policies to cache data


Have you ever noticed if you are on a slow internet connection and browsing a website, the text is loaded before any high-quality image? However, in your subsequent visits to the same website, you will observe that page rendering occurs quickly…

Consistent Hashing illustrated in simple words


Imagine you are designing a scalable backend for an e-commerce website like Amazon. The amount of data volume will be humongous and exponentially rising every year. Do you think you will be able to store & manage the data on a single server? …

Animesh Gaitonde

Senior Software Engineer @Microsoft. Writes about Distributed Systems, Programming Languages & Tech Interviews

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store