jagg
jagargim.bsky.social
jagg
@jagargim.bsky.social
My OCaml exploration continues (the Real World Ocaml book is great!).

This week I added a replication layer to my key-value store. I think I'm starting to get the hang of it...

I also wrote a blog post about how I did it:

jagg.github.io/posts/replic...
Adding replication to the Key-Value Store
During the past few weeks I’ve built a basic key-value store that persists data to disk. It works, but only as a single node, so there is a fixed limit on the amount of data it can store, and the thro...
jagg.github.io
April 19, 2025 at 10:51 AM
I wrote a short post with my notes about Eio, the OCaml 5 async IO library. Still many more things to try, but one step at a time!

jagg.github.io/posts/eio/
Notes on Eio
This weekend I took a step back from working on my Key-Value store to make sure I understand the concurrency model of Eio, the OCaml 5 library that I’m using for concurrency and parallelism. I decided...
jagg.github.io
April 6, 2025 at 1:23 PM
This weekend I continued my OCaml experiments from last week. I added a Write Ahead Log to my toy Key Value store!

I wrote about it here:
jagg.github.io/posts/wal/

Really enjoying OCaml so far!
A basic Write Ahead Log
This weekend I decided to add some basic persistence to my Key-Value store. I considered going directly into B-Trees or LSM, but they are quite involved. Moving, forward I want to focus more on the di...
jagg.github.io
March 30, 2025 at 11:36 AM
During the last couple of weeks I've been playing with OCaml. I went back to my super basic key value store, and re-implemented it in OCaml.

I also wrote a bit about it here!

jagg.github.io/posts/trying...
Giving OCaml a try
During the last couple of weeks I’ve gone on a completely different direction. I happened to hear a few people saying good things about OCaml, and I was kind of missing coding with strong types, so I ...
jagg.github.io
March 22, 2025 at 9:50 PM
Reposted by jagg
Chapters 1–7 of the second edition of Designing Data-Intensive Applications are now available in early release (sorry, O'Reilly subscribers only at this point). Among other changes, you may notice that we now talk about “sharding” rather than “partitioning” www.oreilly.com/library/view...
Designing Data-Intensive Applications, 2nd Edition
Data is at the center of many challenges in system design today. Difficult issues such as scalability, consistency, reliability, efficiency, and maintainability need to be resolved. In addition, there...
www.oreilly.com
March 11, 2025 at 6:01 PM
I spent some time this afternoon learning how to call Zig from Common Lisp! I figured it may come in handy for my Redis clone at some point.

I got it working, but I found some weirdness, may be due to memory alignment, that I can’t explain yet.

jagg.github.io/posts/lisp_z...
Using Zig from Common Lisp
Last week I started playing with my own toy key-value store (see the previous post). At the end I got to a hashtable exposed over the network, using a protocol based on S-Expressions. For the next ste...
jagg.github.io
March 8, 2025 at 8:56 PM
I just started a new experiment, implementing a basic Redis clone in Common Lisp.

This is what I have so far:

jagg.github.io/posts/cledis/
Redis from scratch, or Cledis
This week I was looking for something new, and I realised that I’ve never tried to do any network programming using Common Lisp. Also, some time ago I came across the Build your own Redis book, but ne...
jagg.github.io
March 2, 2025 at 4:30 PM
I just tried Lem, the Common Lisp editor. It looks really promising! Is anybody using it as a main editor already?
February 23, 2025 at 4:45 PM
I was missing writing software from scratch, so I’ve decided to save some time every week to reinvent some wheels, and force myself to blog about it!

To make it more interesting, I decided to use #common-lisp!

This is it so far:
jagg.github.io
Logos, Thumos & Code
Random ideas about programming
jagg.github.io
February 22, 2025 at 7:07 PM