Kia’s Blog

A Solutions Architect with a passion for problem-solving and continuous learning.

I studied Computer Science and now enjoy challenging myself trying to apply my knowledge to design software solutions.

I -occasionally- use this space to share my takes on technology, personal interests, and the occasional exploration of new ideas.

In my day job I act as the Principal software engineer at Snapp! Market and some of the posts written here are inspired by the challenges I face at work.

And yes, almost all of the artwork on this blog is generated with ChatGPT’s assistance.

RabbitMQ vs. Kafka: Choosing the Right Backbone for Your Event-Driven System

The day I first heard about event-driven architectures, I imagined a busy marketplace where each stall (service) would broadcast its daily specials (events), waiting for eager passersby (consumers) to snap up the deals. Over time, that humble metaphor soon expanded into real-world engineering decisions: do I rely on a queue-based system like RabbitMQ, or do I step into the realm of event logs with Kafka? Let’s explore these two messaging heavyweights and see why choosing between them often comes down to more than just performance metrics....

December 31, 2024 · 6 min · Kia Raad

Understanding Events, Messages, and Commands in Distributed Systems

TL;DR Embark on a narrative journey through distributed systems to uncover the subtle differences between messages, commands, and events. Discover how these concepts weave into the fabric of microservices architecture, illustrated through a real-world e-commerce story. Learn to make strategic decisions for your projects without getting lost in technical issues. Introduction Imagine a robust marketplace where merchants, couriers, and town criers all play pivotal roles in keeping the economy alive. In this scenario, communication is key....

December 1, 2024 · 7 min · Kia Raad

Contributing to the Linux Kernel: A Practical Roadmap

Preface A friend of mine recently asked for my consultation on creating a roadmap for them on how to contribute to a big open-source project like the Linux kernel. I took the chance and tried drafting a simple blog post of what I thought would be a good general guideline to approach such a task. Contributing to the Linux kernel can feel like an overwhelming challenge. After all, it’s one of the most complex and influential pieces of software in existence, powering everything from smartphones to supercomputers....

November 3, 2024 · 8 min · Kia Raad

Comparing Change Logs and Event Sourcing: Choosing the Right Approach for Your System

Introduction In the ever-evolving landscape of software development, tracking changes to data is a fundamental requirement. Whether for auditing, debugging, compliance, or analytics, maintaining a history of changes enhances transparency and accountability within a system. Two prevalent approaches to capturing these changes are storing a change log and using event sourcing. While they share common goals, they differ significantly in implementation and suitability depending on the system’s needs. This blog post delves into the similarities and differences between change logs and event sourcing, assesses their applicability through practical examples, and provides guidance on choosing the right approach for your system....

October 1, 2024 · 7 min · Kia Raad

Navigating the Unknown: How to approach a new and unfamiliar codebase

If you’re anything like me, diving into a new and unfamiliar codebase can feel like being dropped into a dense forest without a map. Whether you’re joining a new team, taking over a project, or just exploring an open-source project, understanding its nature, purpose, and architecture is essential. Let me share how I tackle this challenge, while giving examples using C# and .NET projects. Lets dive into the process… Initial Assessment Before I dive headfirst into the code, I take a moment to understand the broader context....

August 8, 2024 · 5 min · Kia Raad