HTTP 101

Intro Let’s talk about HTTP. I was not planning to write about it, but things changed when I started writing for my API design post. HTTP is a fundamental building block of the internet. As engineers, we craft web APIs, a lot of which rely on HTTP, so I think there’s a lot of value in understanding the high level concepts of HTTP. I’ll only cover the basics here. Of course, there’s a lot of things to learn about HTTP, so I’ll leave some resources (towards the end) that I personally find useful.

Personal finance 101

Intro Financial literacy becomes more and more important when you grow up. Unfortunately, most education systems today, at least the ones that I know of, don’t teach it. It’s something that you figure out on your own if you’re interested, or if it’s forced upon you by circumstances. I’m still new to it. But in this post, I aim to capture the resources that I’ve found useful about financial literacy, focusing more on personal finance.

Numbers every distributed system engineer should know

Intro System engineers deal with numbers related to computers every day. It comes up at work, in design conversation, in casual conversations about tech, in system design interviews, etc. In this short post, I aim to reference some types of numbers that I find useful. These are related to computer systems, including distributed systems. Basic conversions \(1\) unit = \(10^3\) m (milli) = \(10^6\) ยต (micro) = \(10^9\) n (nano)

Abstractions and Systems -- Part 3

Intro In Part 2 of this series, we discussed how to model abstract systems, and what are some high level tradeoffs of adding an abstraction. Now let’s go through examples of actual systems that utilize this concept. Examples Object Oriented Programming (OOP) A typical example would be a farmer who has a list of fruits. We have a Farmer class which composes of a list of Fruit class. The Fruit class has a type (as enum) representing for example, a mango, banana, apple, etc.

Abstractions and Systems -- Part 2

Context In Part 1 of this blog post, we discussed at a very high level, why abstraction is useful. In the process, we also discussed Systems thinking. In this post, we’ll go through real life examples of abstractions and systems. But before that, let’s define these terms. Abstraction is hard to define, and there in it lies the reason of why it’s such an overloaded word in a software engineer’s day to day.