Sun 18 Dec 2022

Writing a disk-based key-value store in Golang

I'd been mulling around reading a computer science paper and implementing a project based on it. Distributed systems, Networking and Databases are some of the things that fascinate me a lot. However, I had been looking to implement a more approachable project to avoid getting inundated initially. And I happened to chance upon the Bitcask paper through Avinash's project: CaskDB.

After giving a quick read of this reasonably short paper, I decided to write a Golang implementation of the same, as it looked like an exciting project.

Source: Writing a disk-based key-value store in Golang, an article by Karan Sharma.

Probability Monads from scratch in 100 lines of Haskell

I recently spent some time trying to learn Haskell, when I stumbled across the concept of probabilistic functional programming, originally based on this PFP library. Due to Haskell’s syntax sugar for monad computations, expressing probability distributions as monads allows you to implement something like a mini probabilistic programming language in less than 100 lines of code. I thought that’s pretty neat, so I decided to write this post that walks through a simple implementation from scratch.

Source: Probability Monads from scratch in 100 lines of Haskell, an article by Denny Britz.