Cache Replacement

It is said that “There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.” This post will be on the first one.

Memoization by Way of Functional Programming

In this post, I explore the concept of memoization and show how it can be a useful technique when dealing with computationally intensive functions that need to be called multiple times in a program.

Creating Objects in JavaScript

In my earlier post, I briefly touched upon how objects are an unordered collection of values. In this post, I will explore the nature of objects in JavaScript, how they are created and the concept of inheritance and prototypes.

Higher Order Functions

In this post, I explore the concept of higher-order functions and discuss three common examples of higher-order functions.


Crisp: A Simple Lisp Interpreter

In this post, I discuss about building a simple Lisp interpreter, written in JavaScript, supporting basic Clojure syntax.

Implementing Graphs

A graph is an data structure consisting of a set of vertices, each of which are connected to one or more other vertices. In this post, I explore this data structure and implement some of its common operations.

Implementing Binary Search

In this post, I write about how I solved a LeetCode problem that required implementation of binary search in a sorted array.

Implementing Stacks

Stack is a common data structure that is often used to retrieve and insert data items in a specific order. In this post, I will implement some of the common operations involving stacks.

Implementing Linked Lists

In the previous post, I wrote about the concept of linked lists and how they are different from arrays. In this post, I write about some of the basic operations that can be carried out on a linked list.

Linked Lists and Arrays

In this post, I attempt to understand two of the simplest data structures: arrays and linked lists. But before that, I try to see what a ‘data structure’ actually means.

Valid Parenthesis

In this post, I discuss how I solved a problem on LeetCode on the correct order of Parentheses.


In this post, I discuss my experience of solving my very first problem on LeetCode.

Data-types in Javascript

In this post, I try to understand the broad differences between primitive data-types and objects in Javascript.

Defining functions

In this post, I explore the various ways of defining functions in Javascript. But before that, I also attempt to understand the very nature and utility of functions in a program.

Understanding const and Immutability

In the last post, I explored the keyword let and how it is different from the keyword var. In this post, I will explore the keyword const and the manner of declaring immutable objects in javascript.

Understanding var and let

The keywords var and let can both be used to declare variables. But are there any differences between the two?

Understanding Global and Local Variables

In this post, I will briefly analyse the manner and implications of declaring a variable as a local variable and a global variable.

Converting Strings to integers!

Strings and integers are two different types of data structures. But how to convert one into the other?


First Milestone

I spent the last fortnight to complete the Basic JavaScript course on freeCodeCamp.

Preparing to take-off

Now that Linux is ready, I needed to install VS Code so that I can save the programs I write in the days to come.


I am a lawyer with three years’ of post-qualification experience. But I want to learn how to code. Here’s why.


Installing Linux

Today, I took some of the first tangible steps into the world of Computer Science: with the help of my brother, I installed Linux on my old Laptop.