Aleem Isiaka - AI’s Crib

  • 👋 Welcome to my crib!

  • Here, we hack the internals of Software Engineering/Architecture, Cloud/DevOps, Microprocessors, and Artificial Intelligence. I remove the magic from technologies by showing how they work from the inside, reflecting my appreciation of how these technologies have evolved from an idea in a few minds to become part of our everyday lives.

  • Please support by following me on GitHub and X/Twitter. You can also share with your friends on social media.

  • Read more about me here

Raft Protocol: Part 1

Motivation I have used Vault extensively in the past, and at some point, I have also explored their codebase – kudos to all the contributors. A strategy for setting up Vault is to enable high availability (HA) mode, which ensures that different servers in a Vault cluster share the same data. So, how does it work? What is Raft? Raft is a consensus algorithm that succeeds Paxos. They both tried to answer a question: how can two different servers run the same program, and at a point in time, both of them, when queried, would return the same data, even if they had received different instructions. For example, suppose server A receives a write operation with value 1 and a later write instruction with value 2 at some point in time. In that case, we should query server B to retrieve the value 2, without the write operation having occurred on server B. ...

August 6, 2025 · 3 min · Aleem Isiaka

VIM 101: Installation

VIM is a household name in the Unix world. To most, it is their primary text editor, used for day-to-day editing tasks regardless of complexity. I am starting a series that explores VIM and its uses, as well as how I utilise VIM in my development environment. However, we will begin with the installation. For most Unix installations, vi should already be pre-installed. You can verify this by running vi --version. In some cases, vi has been symlinked to the vim command and can return the help of VIM instead of vi, indicating that Vim is already installed. ...

July 23, 2025 · 2 min · Aleem Isiaka

Managing Machine Configuration with Stow

Motivation I recently had to switch from my previous Mac (Apple M1 Pro) to a newer Mac (Apple M4 Pro), an experience that should have required effort and a careful migration that happened in the least possible time, while I still got access to the same dev experience as I used to on my previous Mac. In this post, I will share how I did it - it is not trivial. The tools I use to make management hassle-free are available for you to explore, and I hope you can find one or two ideas to implement your unique solutions. I will share what did not go well and how I plan to tackle it with my next device switch. ...

July 22, 2025 · 5 min · Aleem Isiaka

Merge-Sort like a Binary-Search

Motivation Experiencing binary search was like a divine revelation of the ingenuity of algorithms. How can computer code be so clever and efficient at the same time? We don’t thank the inventors enough 😏. Among the great, simple, and everyday algorithms used is merge sort. It is a divide-and-conquer algorithm that works by taking a big problem, chunking it down into the smallest possible units, solving them, and adding up the results together. Read more about it here. ...

February 10, 2025 · 10 min · Aleem Isiaka

Time in Computer Systems

Time is a linear monotonically increasing value and to keep track of it, a system has to be powered to take note of every tick. For a microcomputer running an operating system that can go on and off, this means there is a need to constantly update time whenever the computer comes on. That is not the case because of some intelligent mechanisms that computer hardware and operating systems use to keep track of the current time. ...

July 25, 2024 · 4 min · Aleem Isiaka

Go - constant variables and const keyword

Brief Programming languages have the notion of constants which means “variables that can not be mutated once declared and initialized”. Go also has almost the same meaning, but in a different context. To initialize a variable as a constant with a value of 10, we can do something like this: 1 const DISCOUNT = 10 In Go, constants mean “storing a literal to a variable”, this can be seen as a version of pattern matching in Erlang. ...

May 12, 2024 · 2 min · Aleem Isiaka

Running Go programs with a specific version

Brief Although Go releases are incremental and follow the Go compatibility promise: unless the change is required for a bug or security fix, the version starting with 1 won’t experience any backward-breaking change to the language or standard library, you can have a reason to use an old version of the language. Is there a clean way to do this? Recommendation I recommend a tool like go version manager that helps to manage a systemwide version of the language. The advantage of this is the ease it allows. A simple gvm use 1.22, would ensure the 1.2 version of the langugage is installed system-wide. ...

May 10, 2024 · 2 min · Aleem Isiaka

Node Taint, Toleration and Affinity

Motivation Pod scheduling can be a nightmare in a large Kubernetes deployment with many nodes having different configurations. Consider the configuration below: NODE A: 16vCPU, 10TB SSD Disk Space, 64GB RAM. NODE B: 4vCPU, 100GB HDD Disk Space, 8GB RAM NODE C: 8vCPU, 100GB HDD Disk Space, 8GB RAM, with additional GPU configuration And scheduling a new deployment to the cluster: 1 kubectl create deployment --image=nginx --replicas=3 Kubernetes would schedule the Pods on a random node. Which is fine for general use cases. ...

February 11, 2024 · 6 min · Aleem Isiaka

The VIM echo command

As with many other technologies, VIM can echo messages, if you are coming from a contemporary editor, this can hit differently. First, the result of all the echoed messages is visible in the status bar at the bottom of the screen, Secondly, previous messages can be accessed with the :message command. To echo a message, enter the command mode (ESC or CTRL-C), then type the below command: 1 :echo "Hello World" This should print out Hello World to the status bar, but would not preserve the message for later reference. ...

February 7, 2024 · 3 min · Aleem Isiaka

ConfigMaps in K8s

Motivation Container images often accept Environment Variables for configuring their environments, for example the redis image accepts REDIS_VERSION for a specific redis version. Below command starts a redis container, passing a desired REDIS_VERSION environment variable. 1 crictl run -t redis -e REDIS_VERSION=7.2 redis And to start a redis Pod, imperatively: 1 kubectl run --image=redis --env=REDIS_VERSION=7.2 redis And declaratively: 1 2 3 4 5 6 7 8 9 10 11 12 13 apiVersion: v1 kind: Pod metadata: name: redis label: app: kv-store spec: containers: - name: redis image: redis env: - name: REDIS_VERSION value: 7.2 In the case of internal images, custom application can require more than enough environment variables to run and can look unmaintainable even with a Pod manifest file: ...

February 6, 2024 · 3 min · Aleem Isiaka