Implementing Concurrency Abstractions in C

Introduction

Go is one of my favorite programming languages. Several things make the Go programming language unique. From flexible interfaces to robust concurrency abstractions. One that stands out to me is the channel in Go. Good abstractions hide the complexity of an implementation from the user of the programming interface. Channels are an excellent example. To implement something that looks like Go's cha… read more

Building a Tiny Note Taking App Grammer

Introduction

Growing up, Pidgin English was everywhere. It is essentially a blend of broken English, slang, and words borrowed from native languages. The look on people's faces when they hear me speaking Pidgin English over the phone always cracks me up. It's usually a mixture of surprise and confusion—confusion because they can't quite make sense of what I'm saying, and surprise because they can still recognize a few English … read more

Building YKV: A Key-Value Database from Scratch in C

Motivation

One of the best ways to learn a programming language, concept, or framework is to build something with it. I have always been curious about how databases work internally, and since many popular database systems have significant portions of their codebases written in C, I decided that one of the best ways to deepen my understanding of the language was to build a database from scratch.

At the same time, I want… read more

Framework Internals: Dependency Injection

Introduction

If you've been a software engineer for a little while you must've come across excellent advice like: "Do Not Repeat Yourself", "Do Not Re-Invent the Wheel", and so on. Several opensource libraries and frameworks often have battle-tested code that solves your problems. For example, why build a new Java-based backend … read more