What happens when you run Python?

This post is not about how to code in Python, differences between Python 2 or 3, or its stylistic guidelines (PEP8). Rather, it’s about what happens in the background when you execute Python code. When you write you code in Python, it ends with a suffix .py, and after you execute it with some command, for […]

Role Model

I’ve been asked by one of my managers who my role model was, which I thought was really interesting, because I’ve read a lot of self help books, biographies and listened to many podcasts, all relating to some form of improvement and guidance, but I don’t think I have a single person to point a […]


This time, we’re going to be moving away from technical topics, and have glimpse at some of the project management stuff that surround technical projects. It’s actually very important to have an understanding of these management styles, because how the project is management determines what kind of tools you’ll use, the way you write your […]

Database Sharding

Today we’re going to be looking at one database optimization technique called Sharding. Before we talk about partitioning, it has to be said that the table first has to have some sort of ordering, so search can be optimized with that key. Sharding involves splitting the table into partitions, which can be done in two […]


When you run any Java applications, they are first translated into Java byte codes, before being run on a JVM, or Java Virtual Machines. A JVM is a program that executes Java Byte Code, and the JVM program can be run on any platform, be it Unix, Windows or Mac. With this setup, Java programs […]

Locality Sensitive Hashing

Locality Sensitive Hashing is a method for placing similar items together. This can be seen as a clustering effort, where similar items, when hashed, will produce a value that is close to each other, and therefore fall into the same bucket. When we talk about hashing, most of the time we want to form a […]


Before MapReduce Before MapReduce, a typical way of parallel and distrubuted way was to split the data into equal chunks, and place them on different machines. Each machine will then do their computation, before sending their results back to a central server to do the collation, and final calculation. For example, to find the maximum […]

Brief Look at Kafka

What is Kafka Before going into Kafka, lets do a brief overview of what it is, and what it’s most commonly used for. Kafka is a messaging system, where it takes it large amount of data from various sources (Producers), and allows various services to read the data off it (Consumers). Central to the architecture […]

L1 and L2 Regularization

I’ve briefly written about ways to combat overfitting in the post here when I wrote about regularization. In that post, I talked a bit on L1 and L2 regularization, and the brief difference between them. In this post, I’m going to do a deep dive into the differences. This article is an excellent resource in […]


We all wish we can make the perfect decisions, and many times, we’re given too much options to the paths we want to take in our lives. In choosing a career, choosing a car to buy, choosing a person to marry, choosing what to eat. There are various psychological deteriments related to decision making, such […]