Arpit's Newsletter read by 38000+ engineers
Weekly essays on real-world system design, distributed systems, or a deep dive into some super-clever algorithm.
441 reads • 2022-03-07
The 0/1 Knapsack Problem has a pseudo-polynomial run-time complexity. In this essay, we look at an approximation algorit...
609 reads • 2022-02-21
This essay takes a detailed look into pseudorandom number generation using LFSR, a widely adopted technique to generate ...
380 reads • 2022-02-07
In this essay, we will take a detailed look into how we could index the partitioned data, allowing us to query the data ...
302 reads • 2022-01-31
In this essay, we take a detailed look into the two common approaches to horizontally partition the data - Hash Based an...
435 reads • 2022-01-24
In this essay, we take a detailed look into Partitioning basics and understand how it can help us scale our Reads and Wr...
444 reads • 2022-01-16
In this essay, we take a look into a different way of replication, called Leaderless Replication, that comes in handy in...
275 reads • 2022-01-09
In this essay, go in-depth to understand ways to resolve and avoid conflicts in a multi-master setup....
709 reads • 2021-11-28
In this essay, we talk about conflicts and understand what they are, how to detect them in a multi-master setup....
497 reads • 2021-11-03
In this essay, we look at what Multi-Master Replication is, the core challenge it addresses, use-cases we can find this ...
348 reads • 2021-10-03
Asynchronous replication leads to a fascinating situation where it feels like we are going through a wormhole traveling ...
1120 reads • 2021-09-22
Read-Your-Writes consistency states that the system guarantees that, once an item has been updated, any attempt to read ...
375 reads • 2021-09-07
This essay talks about the worse - nodes going down - impact, recovery, and real-world practices....
293 reads • 2021-08-23
In this one, we take a look into how these Replicas are set up and understand some quirky nuances about Replication....
334 reads • 2021-08-15
When we are employing a Master-Replica pattern to improve availability, throughput, and fault-tolerance, the big questio...
821 reads • 2021-08-10
In this essay, we take a quick yet verbose look into Synchronous, Asynchronous, and Semisynchronous replication strategi...
350 reads • 2021-08-07
In this essay, we talk about everything we should know about Master-Replica replication pattern....
335 reads • 2021-07-19
Durability seems to be a taken-for-granted requirement, but to be honest, it is the most important one. Let's deep dive ...
301 reads • 2021-07-05
Isolation is the ability of the database to concurrently process multiple transactions in a way that changes made in one...
387 reads • 2021-07-02
In the context of databases, Consistency is Correctness, which means that under no circumstance will the data lose its c...
748 reads • 2021-06-28
A single database transaction often contains multiple statements to be executed on the database. In Relational Databases...
563 reads • 2021-06-22
While designing a Distributed System, it is essential to pick the right kind of architecture. Usually, architectures are...
358 reads • 2021-06-17
In this essay, we learn about a set of false assumptions that programmers new to distributed applications invariably mak...
425 reads • 2021-06-09
In this essay, we explore a simple yet effective DoS attack called Fork Bomb, also called Rabbit Virus. This attack fork...
275 reads • 2021-04-27
In this essay, we find how chained comparison expressions are evaluated, understand how short-circuit evaluations happen...
1303 reads • 2021-04-18
In this essay, design taxonomy on a SQL-based Relational database by taking Udemy as an example, write SQL queries cover...
2377 reads • 2021-03-29
In this essay, we alter the Python Grammar and allow it run Assignment Expressions without any parenthesis....
618 reads • 2021-02-14
Persistent Data Structures allow us to hold multiple versions of a data structure at any given instant of time. This ena...
1861 reads • 2021-02-07
Persistent Data Structures allow us to hold multiple versions of a data structure at any given instant of time. This ena...
3917 reads • 2021-01-10
Every programming language aims to be performant and Python is no exception. In this essay, we dive deep into Python int...
1480 reads • 2020-12-20
Every programming language aims to be performant and Python is no exception. In this essay, we dive deep into Python int...
4140 reads • 2020-12-13
One of the most complicated concepts to wrap our heads around has to be recursion; to understand it well it always helps...
3131 reads • 2020-12-06
Measuring distinct elements from a stream of values is one of the most common utilities that finds its application acros...
1705 reads • 2020-11-29
LRU is one of the most widely used cache eviction algorithms suffers from a bunch of limitations especially when used fo...
7250 reads • 2020-11-22
Israeli Queues are fondly named after a peculiar behavior observed in Israel. This behavior was mimicked to solve a very...
1062 reads • 2020-11-16
Terrains are at the heart of every Computer Game - be it Counter-Strike, Age of Empires, or even Minecraft. The virtual ...
1481 reads • 2020-11-08
Set similarity measure finds its application spanning the Computer Science spectrum; some applications being - user segm...
499 reads • 2020-11-01
Time Series smoothing algorithms removes short-term irregularities from the plot while preserving long-term trends. But ...
6035 reads • 2020-08-23
The most popular implementation of the LFU Cache Eviction Scheme, using a min-heap, implements all three operations with...
2120 reads • 2020-08-02
Morris' Algorithm counts a large number of events using a very small space O(log log n). The algorithm uses probabilisti...
6485 reads • 2020-07-26
Slowsort is a pessimal sorting algorithm based on the Multiply and Surrender paradigm. The algorithm is designed to be d...
574 reads • 2020-07-19
Bitcask is a Key-Value store that persists its data in append-only log files and still reaps super-performant read-write...
478 reads • 2020-07-12
Phi φ Accrual Failure Detection algorithm, unlike conventional algorithms, is an adaptive failure detection algorithm th...
2797 reads • 2020-07-04
Deciphering is the process of recovering the original message from an encrypted byte stream, usually, without having any...
1999 reads • 2020-06-21
Deciphering is the process of recovering the original message from an encrypted byte stream, usually, without having any...
1790 reads • 2020-06-14
In Python, Integers are not iterables but we can make them iterable by implementing __iter__ function. In this essay, we...
3850 reads • 2020-06-07
C language does not support inheritance however it does support Structure Compositions which can be tweaked to serve use...
670 reads • 2020-05-31
While designing any storage system the three main aspects we optimize for are Reads, Updates, and auxiliary Memory. RUM ...
1262 reads • 2020-05-24
Consistent Hashing is one of the most sought after techniques when it comes to designing highly scalable distributed sys...
1824 reads • 2020-05-17
To gain a performance boost and avoid reallocation of frequently used integers, Python creates singleton instances of sm...
486 reads • 2020-05-10
The performance of binary search when applied on k lists independently can be improved using bridges and the technique i...
559 reads • 2020-05-03
Copy-on-write is used to model Time Travel, build databases with no locks, and makes the fork system call super-efficien...
466 reads • 2020-04-26
The MySQL InnoDB Storage engine uses LRU cache but it suffers from a notorious problem. In this article, we find how by ...
7625 reads • 2020-04-19
The most intuitive way of building and implementing Finite State Machines is by using Python Coroutines and in this arti...
526 reads • 2020-04-12
Ranking a list of movies, products, books or even restaurants is tricky and in this article, we find what works for such...
1056 reads • 2020-04-05
A rate limiter is used to control the rate of traffic sent or received on the network and in this article we dive deep a...
417 reads • 2020-03-06
TF-IDF is extensively used in search engines and in various document classification and clustering techniques. Instead o...
2709 reads • 2020-02-28
"How to get better at programming?" is the question I had been asked quite a few times, and today I lay down the 8 ritua...
1763 reads • 2020-02-21
Personalization is what we all love. In this article we find how we could personalize the Python interpreter prompt >>>...
1011 reads • 2020-02-14
Generating pseudorandom numbers is an interesting problem in Computer Science. In this article, we dive deep into an alg...
12359 reads • 2020-02-07
Python natively does not support function overloading - having multiple functions with the same name. Today we see how w...
1134 reads • 2020-01-28
Anomaly detection is an age-old problem and in this article, we dive deep into an unsupervised algorithm, Isolation Fore...
304 reads • 2020-01-17
Steganography has been around since at least 440 BCE but with the rise of computers, the techniques have evolved to hand...
3584 reads • 2020-01-10
Python must be doing something beautiful internally to support super long integers and today we find out what's under th...
1121 reads • 2020-01-03
I changed the Python's source code and made addition incorrect and unpredictable. The addition operation will internally...
426 reads • 2019-09-06
There are two ways through which we can stop an iterating loop, first by using break statement and second by making loop...
460 reads • 2017-07-16
Understanding concurrency in any programming language is tricky let alone Golang; hence to get my hands dirty the first ...
657 reads • 2017-07-05
All our lives we have been hitting REST APIs with libraries and utilities like curl and postman. Its time we do it the h...
3898 reads • 2017-06-06
MongoDB is a document based data store and hence pagination is one of the most common use case of it. Find out how you c...
2088 reads • 2017-06-04
MongoDB's cursor.skip() is very inefficient, why is that? Even though it is slow and inefficient, team MongoDB wants to...
3538 reads • 2017-06-02
Benchmark results for two pagination approaches for MongoDB....
285 reads • 2016-05-13
Have multiple MySQL versions running on same server within 5 minutes....
728 reads • 2015-12-14
Part 1: Monitor your production systems and application analytics using Graphite. This article will help you setup these...
278 reads • 2015-12-14
Part 2: Monitor your production systems and application analytics using Graphite. This article will help you setup these...
321 reads • 2015-11-10
If you have written something cool in Python and want to make it installable via pip and easy_install, this post will he...
Arpit's Newsletter read by 38000+ engineers
Weekly essays on real-world system design, distributed systems, or a deep dive into some super-clever algorithm.