rust Writing a simple lexer in Rust Recently, I began to delve deeper into Rust. As a way to become more familiar with the language, I decided to write a simple lexer for a mathematical expression such as 10 - 3 + ( ( 4 / 2 ) * ( 8 * 4 ) ). Writing a lexer shouldn't be a
sqlite The day I discovered vmtouch IntroductionLast weekend I decided to take a deeper look at the famous SQLite 35% Faster Than The Filesystem benchmark. I didn't want to do a shallow read of the post. I wanted to compile the kvtest tool and run the experiments myself and see
sqlite Making a change to SQLite source code A journey of how I went down the road of changing the SQLite source code to make the record row bytes available to the Go's update hook API
mutex There Are Many Ways To Safely Count A compilation of ways on how to implement a goroutine-safe counter
logical-clocks Getting To Know Logical Clocks By Implementing Them Physical clocks can't capture causality. This blog post discusses two kinds of logical clocks (Lamport Clocks and Vector Clocks), how they are able to capture causality and achieve consensus on the ordering of events, and how to implement them.
cache The Cache is Full Discussion about the cache replacement problem on which cache entry to evict when the cache is full and implementations of four replacement policies FIFO, LRU, CLOCK, and LFU in Go
buffer pool How Buffer Pool Works: An Implementation In Go Exploring how buffer pool management works in databases by building one
mmap But how, exactly, databases use mmap? A saga through BoltDB source code to understand how mmap works in databases
mmap Discovering and exploring mmap using Go Recently I've come to know the concept of memory-mapped files while watching a lecture of the course Intro to Database Systems of Andy Pavlo on database storage. One of the main problems a database storage engine has to solve is how to deal with
software engineering My Thoughts on A Plea for Lean Software A Plea for Lean Software[1] is a classical paper that presents us with some hints of why software increase in complexity and give us some advice on how to avoid or minimize complexity. Here I present my interpretation of Niklaus Wirth's ideas in