RSS Amplifier

Blog

tech ramblings

Interesting insights on abstractions at every level :)

aneesh.mataroa.blogSource feed ↗10 posts

Dormant Last read · last published · next check
Read 4 days ago and current, but nothing has been published for 3 years.

Latest posts

Why Databases Write Ahead

If you've ever been curious to go look under the hood of any relational database, you may have come across the Write Ahead Log (WAL) . It's known by different names in different databases - transaction log, binlog, redo log, etc. but essentially, it is a log of events happening in the database. But why is this useful? Why do databases maintain such a log? And why do they write-ahead? The short…

Cloud isn't just someone else's computer

Ok, i mean, it IS indeed just someone else's computer. For the most part, it's either owned by Amazon, Google or Microsoft, and you're just running your code on their machines. But.. the change is much more nuanced than just a computer that you rent as opposed to using your own. Softwares have undergone significant changes to adapt to the cloud paradigm, in order to leverage the elasticity and…

Deconstructing Dependency Principles: Inversion and Injection

In software engineering, the word "dependency" gets thrown around a lot, and so I want to explain two interesting and related topics - dependency inversion principle and dependency injection. Let's look at what these are and why we might care about them. Dependency Inversion Dependency inversion is the "D" in SOLID principles. The idea is simple. If you're a higher level module, and you depend on…

Vectorization in OLAP Databases

A recent trend in OLAP (Online Analytical Processing) database systems has been to overhaul the SQL query engine from the traditional ones setup for OLTP (Online Transactional Processing) usecases. They have done this by either using vectorization, or just-in-time (JIT) compilation. In this article, I want to dive a little deep into why and how vectorization helps. Background Before we go into…

The journey from Supercomputing to Spark

In the world of computer science, there are so many tools and technologies out there, that it can get overwhelming rather quickly. Before you've completed learning how to use a tool, one of the big tech companies has open-sourced yet another cool project. The problem is: how do you keep up? One of the things that has helped me is to focus more on the "why" rather than the "how". It's impossible to…

Golang for Object Oriented People

To start off with, in golang, there are no classes, only structs. To add fuel to the fire, there is no type hierarchy, (i.e. no inheritance). This is probably the biggest difference as compared to other object oriented languages. Actually, it can't be truly considered an object-oriented language . Ok, let's talk about type hierarchy. Not having a type hierarchy was an intentional design choice in…

Why we need to REpresent a State Transfer

REST(Representational State Transfer) has pretty much become the norm now. But, as with anything else, it's crucial to understand its motivation. Why did we come up with REST? What was the situation before REST? Well, picture this - This is the 90s. You've built software that interacts with the oracle database. All's well. You have the desktop application installed on all the computers of your…

Dynamic Programming for Pythonistas

Dynamic programming is an intimidating topic when it comes to interview preparation. I always fret it. But this time, I found an intuitive way of looking at it, thanks to Python. First, let's understand the motivation for dynamic programming. Let's say you have a problem to solve. You realise that if you solve a subproblem(which is a smaller instance of the same problem), you can use the solution…

Assimilating Auth

Firstly, what the hell is Auth? Well, auth could mean "authentication" or "authorization". Authentication is the process of verifying that you are who you say you are. Typically, this would mean validating your credentials such as your username and password. Authorization, on the other hand is the process of determining if you (the authenticated user) have permission for a resource that you are…

Updating the mapping of an elasticsearch index

Okay, so you've set up elasticsearch. You've indexed your data. Search is super fast. All's good. But, suddenly, you have a requirement for which you need to change the mapping of your index. Maybe you need to use a different analyser, or maybe it's as simple as adding a new field to your document, which requires you to add the associated static mapping. If you find yourself in such a situation,…