This is a small excerpt from an email exchange between myself and a former colleague, after I had just quit my backend role at a financial exchange and I was trying to decide what to do for work. > Why a database? How to unpack this lol, a few themes: 1. I want answers to - 'do I want to work on databases professionally'? and 'can I gain the technical competence to be effective'? 2. It's a…
Hi, come read systems performance! Every week after April 5th 2025, we’ll meet async , over text only channels on a random little discord server at 7pm UTC every Saturday, I believe systems performance is a daunting but fun and rewarding book, if you’re an SRE, work on a backend, someone that likes systems programming or just wondering how netflix’s servers stay snappy take a peek! every week…
k8s manages and orchestrates clusters of containerised applications, by abstracting over pools of computing resources cpu, network, memory & disk and abstracting deploying to a public cloud(s). via declarative yaml, json (but also imperative apis ) desired <-> observed <-> reconciliation achieve high-availability while running in fault-prone environments to allow us to continuously release new…
Self reminder for each segment of crt-0: int main ( void ) {} gcc -o nothing nothing.c -Wall -O objdump -S nothing macos: nothing: file format mach-o arm64 Disassembly of section __TEXT,__text: 0000000100003fa0 <_main>: 100003fa0: 52800000 mov w0, #0 100003fa4: d65f03c0 ret linux: nothing: file format elf64-x86-64 Disassembly of section .init: 0000000000001000 <_init>: 1000: f3 0f 1e fa endbr64…
Atomics, typically a compiler intrinsic, platform/hardware dependent(x86, risc-v, arm etc), OS dependent. typically at least a pointer size – in rust a usize Usecases/Patterns stop flag/locking primitive/aka naive mutex + busy wait thread progress reporting synchronization/barrier fence etc A SeqCst fence is both a release fence and an acquire fence (just like AcqRel), but also part of the…
Given the simple query below, how does a database count? psql -U postgres select count(distinct col1) from table1; Let’s ask the database directly, in this case, it’s postgres : explain analyze select count(distinct col1) from table1; This produces a series of algorithmic steps and structures specific to a database, outputted as a tree of “paths”, which you can read…
What I learned solving the fly.io distributed systems challenges . The title of this post is inspired by kyle kingsbury’ series of articles like this one and this one and of course: A lay of the land 1. Echo 2. Unique ID Generation 3. Broadcast 4. Grow-Only Counter 5. Kafka-Style Log 6. Totally-Available Transactions 7. Testing, Model Checkers and Simulators References 1. Echo saying hello…
💡 This article is a speed run/crash course/concise note/summary and assumes the reader has read or is somewhat familiar with concepts explained in part I of database internals. Notably chapter 1 - 4, and parts of chapter 5 where Buffer Management is explained. If not, here’s a visual crash course on the operations of a b-tree and generally on-disk considerations. or a much better…
💡 I used to amateur invest in 2021/22, I profited from trading tokens in ethereum, constitutionDAO and ethereum name service -- mostly got lucky. My views have since evolved. I would like to learn more about financial markets someday. Cryptocurrency is a controversial topic that people have lots of thoughts/feelings about. I’m neither here nor there about the ethics or ideals. Whatever…
Last edit/updated: 23 Jun 2024 I’ve never believed in the “one true” programming language. I’ve learned lots of different languages to questionable levels of proficiency and not a single one of them has been “the one”. It should be obvious that programming languages are tools and tools do different things well. You can use a screw driver like a hammer, but you…
generated with: https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html , please feel free to explore! A simple 2-way B+ tree assumptions: non-decreasing order and max degree of 3 elements(N) are 1, 2, 3, 4, 5 **sibling pointers (B-link borrowed) Insertion Inserting, find target leaf and insert the keys 1 and 2 target == root. [figure 1] When we insert key 3 ? we have our first overflow…
Listen to the twitter space! Join us this Sunday by 5pm GMT to review Chapter 2 of Database Internals by @ifesdjeen . @haile_lagi will lead discussions this week! See you soon. https://t.co/UtMsYoHXC2 — SysDsgn (@sysdsgn) February 28, 2024 Simple walkthrough/guide Recap storage engines at the heart B-Tree. Data structures contiguous vs pointer based. Honorable mention hashmap Binary Search…
Re-re-re-introducing thumbelina ⚗️🧪🔮. Thumbelina was a project I started thinking about sometime in late 2022 when I was a wee little inexperienced with elixir. The problem I set out to solve was simple, I wanted to manipulate images using elixir, specifically I wanted to generate thumbnails. Seems straightfoward no? As it turns out this is the kind of thing the language isn’t suited for…
Quick Start https://ziglearn.org/ https://gist.github.com/ityonemo/769532c2017ed9143f3571e5ac104e50 Kata/Practice ziglings WTFs Scoped Resource allocation opt-in compile time evaluation via comptime Zig is unstable. brew install zig gives 0.10 which is old – Building from source sucks but is required to experiment with the interesting things folks are making. ~1 hour later after building and…
Introduction Often as folks who create useful software things we tend to think of ourselves as people who write software for the mythical “user”. A “user” clicks a button and something magical happens. This is commonly reffered to as an abstraction . Abstractions are all around us in software and clever programmers create good abstractions for other programmers often to…
A long time ago, you would give a computer an intensive set of instructions - in assembly or something more sane, and it would compute these instructions one by one, but while it did that - it would “freeze up” you could not really do much else with it. At the time, computer hardware was pretty limited, it had a single CPU core (something that executes instruction sets) which did pretty much…
Are you bad at hacking? Often it’s called imposter syndrome, let’s dive into understanding the self and framing failure. The short answer is probably yes. The long answer is maybe, but it doesn’t matter. The first time a programmer, or at least I opened up a text editor(it was sublime), I was pretty bad at this activity. I couldn’t really talk to my computer. I didn’t…
Why do you wake up in the morning? why do you brush your teeth? I’ve asked myself this question many times. More than once? there was no answer. So I didn’t leave my bed. I didn’t brush my teeth. Existence seemed to my active imagination a terribly bothersome load. Here’s another entry into my diary. It’s been too long since I introspected, let’s look at the…
What are the odds? I’ve spent quite a few hours invested in implementing a seemingly innocent feature of a game I’m currently working on as part of my learning in the world of functional programming with Elixir. I won’t bore you with the details, I haven’t even finished making the game, the prelude to discovering this problem is an innocent one. It’s a terminal…
In the game Final fantasy XV there’s a curious dungeon called costlemark tower. Firstly? It’s not a tower… lol. It’s a long 4 hour(*for me) descent into darkness. The horrible thing about dungeons? You can’t save your progress. It’s a cramped space and it’s eternally “nighttime”. In ffxv nighttime is where the toughest monsters come out to…
Seeing as my blog gets practically no real attention. It is a place where I get to air thoughts as I wish. To the deep deep space, through numerous protocols and packets of “words” flow. Into bits… a tiny tiny voice. When I wish, days in a row or months apart. About lovers or technical details. It doesn’t matter. What matters is the thought must be put to words sent into…
me•di•o•cre mē″dē-ō′kər► adj.Of ordinary or undistinguished quality. synonym : average . Of moderate degree or quality; middling; indifferent; ordinary. One of middling quality, talents, or merit. Somehow somewhere in the middle of all of this I have achieved mediocrity. Odd isn’t it? In all my arrogance, in all my pretensions to being for lack of a richer vocabulary “better”. I…
So what’s this all about? I think for a while now, I’ve been in panic mode. Worrying excessively over the future, over-analyzing and burdening myself with worry. Consider some of my previous articles where I expand on and detail my past experiences and failures. How they’ve dramatically shifted my life course from how I thought it would be, to how it actually ended up becoming.…
Deprecation lol. It’s a funny word. I only came across it recently when reading the python documentation and some language feature was ‘deprecated’ loool what does that even mean? Turns out, that’s the perfect word to describe what’s going on with me right now. A few weeks ago I wrote about how bleak my future career prospects are as a chemical engineer in Nigeria…
I begin this humble blog post with a beautiful art piece by ramin nazer an artist I randomly came across on the internet. “The obstacle is the path”. How desperately do I wish these words were true. Today was not a good day, I have spent almost two days working on a “coding bat” problem I could not solve. I thought that I could do it, I really thought if I tried and tried…
There comes a time in every classical hero’s journey that he must come to grips with. A crooked blade of potential and talent waiting to be molded in the fire of hardship, pain and challenge. First you must set the stage, for there is no hero without a kingdom. No great individual without a society to declare such a person great. This is a hard time to be young in Nigeria. The career path…
Year year year year year year year year year year year year year year year year year so after many many year the time had come for the year to end in a very yearly fashion for the years and years party of the awesomeness of the chateau du vale were simply too amazing to pass up this year also in the news this year the yearly year of the harvest year thing of years has come to be a yearly thing…
This is a rant on a topic I’m fairly acquainted with and have no formal education in except the various books on economic theory I’ve read over the years purely out of interest. Forgive my many inaccuracies and off topic devolving into philosophy. If you have a differing opinion, see any error in my reasoning or I have my facts wrong. Kindly direct me further to the path of…
Hey everyone, Before we delve into this its topic matter, it’s well…controversial? I’ve been careful in selecting content for this blog, but I think its time to rock the boat a bit. Nigeria is a country which has deeply religious and cultural ties, the origins of which go not only back to the time the country itself was founded and colonised, but to when more “…
1,2,3,4,5,6,7,8,9 and 10. It probably took that voice in your head, the whole of a few seconds to comprehend and interpret that to some degree. Okay let’s be honest I’m not a neuroscientist or anything, so don’t take that on authority, at any level…(just saying) I don’t know anything about the inner workings of the mind, or even a tiny bit of empirical knowledge…
Hey everyone, In case you haven’t noticed and have somehow being in a coma and just woke up at the exact time your browser opened up this blog , its CHRISTMAS!!!!!! so merry Christmas. This is a Holiday Special article that’s seriously on a not so serious note. Quite recently, I’ve found myself in these brief sedated states where I simply stare and my mind seems to wander, not to…
I’m currently reading: Computer Architecture A Quantitative Approach & Is Parallel Programming Hard, And, If So, What Can You Do About It? Previously Explored: Systems Performance Database Internals: A Deep Dive into How Distributed Data Systems Work Designing Data-Intensive Applications Operating Systems: Three Easy Pieces Concurrency in Go: Tools and Techniques for Developers The Algorithm…