Image Credits

Designing an API Rate Limiter to throttle users above a given threshold

Leaky Bucket Algorithm

I like to think Leaky bucket as sand through an hourglass. No matter how much sand you put, it’ll drip at a constant rate.


Image Credits

The heart of frameworks.

“ Dependency injection is a programming technique that makes a class independent of its dependencies. It achieves that by decoupling the usage of an object from its creation. ’’ — Design Patterns Explained

It’s one of the most strongly advocated design patterns out there, and is one of the fundamental…


Image Credits

the quintessence of Git, Bitcoin, and DynamoDB

A hash tree or Merkle tree is a tree in which every leaf node is labeled with the cryptographic hash of a data block, and every non-leaf node is labeled with the cryptographic hash of the labels of its child nodes. …


The fundamentals of System Design

Documenting my learning Journey

In the pursuit of designing Highly Available systems, or cost effectively scale your systems, it’s often best to add/remove new servers as and when the traffic increases/decreases.

Load balancers distribute incoming client requests to these servers in a manner that maximizes speed and capacity utilization and ensures that no one…


Indexes are well known when it comes to databases and plays a crucial role in performance tuning of databases. In this post we are going to cover how indexing improves the performance of databases and why it makes sense to choose B-Trees for indexing.


Transaction Isolation Levels

In the first part we have discussed about the Atomicity and Consistency aspects of a transaction. In this post we will see the Isolation aspect of a transaction.

Isolation in the sense of ACID means that concurrently executing transactions are isolated from each other; they cannot step on each other’s…


Atomicity and Consistency

A transaction is a way for an application to group several reads and writes together into a logical unit. Conceptually, all the reads and writes in a transaction are executed as one operation: either the entire transaction succeeds (commit) or it fails (abort, rollback). If it fails, the application can…


In pursuit of speeding up database driven applications at scale by alleviating the database load, we use in memory caching tools like Memcached and Redis.

During peak hours when there is heavy load on the Server, if a cache expires whose computation is expensive (or if we version Cache so…


Progressive Hydration

In the earlier post, we have seen how we can split the JavaScript execution cost from one long running tasks to multiple smaller tasks and improve the perceived performance of the page. Now, this approach can be fine tuned further by leveraging Code Splitting.

Code-Splitting is a feature supported by…


Idle Until Urgent

Without burdening you with the intricate details of the cost of Javascript, anywhere up to 30% of the page load time can be spent in JavaScript execution. It can create an annoying User Experience if the main thread is busy for long duration rendering the site unresponsive.

In React, when…

Kumar Swapnil

Wallflower | Tsundoku | ❣️ anime and crypto

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