am0123
u/am0123
I’m a software engineer with around 10 years of experience, but my career path has been a bit unconventional, and I’m trying to figure out how recruiters and hiring managers might perceive my profile.
I have a Master’s degree in Computer Science and started my career with systems/network administration before moving into software development.
Most of my professional development experience has been in startups and small teams. I spent a few years working mainly with Ruby on Rails and React, sometimes as the only developer or one of very few engineers. Because of that, I had a lot of responsibility, but I didn’t get much exposure to large engineering organizations, high-scale systems, or the
How Grafana Alloy Builds and Runs Its Component Graph
abdellani.dev/posts/2026-06-23-how-grafana-al...How Traefik Turns Kubernetes Changes Into Live Routing Updates
abdellani.dev/posts/2026-04-13-how-traefik-tu...How Traefik uses Kubernetes informers and dynamic config to update routing without restarts
abdellani.dev/posts/2026-04-13-how-traefik-tu...I implemented Raft, a KV store, and a sharded system in Go (MIT 6.5840)
github.com/abdellani/mit-6.5840-labsThe journey of a request in a Raft-based KV store (from client to commit)
abdellani.dev/posts/2026-04-01-the-journey-of...Why Raft can’t safely commit old-term entries — from an implementation/debugging perspective
abdellani.dev/posts/2026-03-23-why-raft-cant-...I recently finished the MIT distributed systems labs and wrote up one Raft rule that took me time to fully internalize: why a leader cannot safely commit old-term entries just because they’re replicated on a majority.
When reading the paper, this can feel like a detail you just accept and move on from. But during implementation/debugging, it becomes much more concrete. You start seeing why “replicated on a majority” is not enough by itself, and why the current-term restriction matters for safety.
I tried to explain it from the perspective of someone implementing and debugging Raft, not just restating the theory.
Article: [https://abdellani.dev/posts/2026-03-23-why-raft-cant-safely-commit-
Hi
I'm working on the public course MIT 6.584 (I'm not a student there). I managed to pass all the tests related to Raft (lab3).
Now, when I'm in lab 4A, it adds the layer that sits between the raft and the application.
I'm struggling with an intermittent failure scenario that seems related to raft. I didn't notice it when I was in lab3, even though the tests passed several times consistently.
Here's a summary of the scenario:
Suppose we have 3 servers: 0,1,2
- srv0 is the leader of term N
- The client (tester) submits a command X
- srv0 replicates X into srv1, and gets a response (success)
- From srv0's perspective, X is replicated on 2/3 servers (srv1 and itself), so it moves t
Hi
I wanted to share my story with CKAD.
I want to pass the CKAD, since 2021, but I was procastinating as I was working on a different domain: building web application in RoR. I had the CKAD training program from kode kloud on udemy. I studied the content maybe around 2023, but I didn't book the exam, and I didn't use k8s at that time.
Last year, I decided to buy the package from the official web site ( linux foundation) during the sold time, it was around 16th of July. I completed the training program, maybe around september.
I don't know why, but when I comes to taking the exam, I never felt ready.
In october, I passed the aws cloud practitionar. In april, I passed aws AI practionar.
Hi
I have a question regarding the anonymous structs.
In the following example, I'm using one to define Topics.
package messages
type DTPRequest struct {
Size int32
RequestHeaderV1
Topics ARRAY[struct{ name COMPACT_STRING }]
...
}
type ARRAY[T any] struct {
N int32 // -1 means null
Items []T
}
type COMPACT_STRING struct {
N UNSIGNED_VARINT // set to N+1
String []byte
}
package messages_test
...
want := messages.DTPRequest{
Size: 4,
RequestHeaderV1: messages.RequestHeaderV1{
ApiKey: 75,
Hi
In my context, I have a structure called Response that represents a Packet that should be sent to respond to some requests.
The protocol has different types of responses, but all of them share some functions, like size and serialization.
```
type Response struct {
Size int32
}
type ApiVersionsResponse struct {
Response
CorrelationId int32
}
```
I'm trying to implement "CalculateSize" on Response structure level to use it on ApiVersionsReponse level.
```
func (r Response) CalculateSize() int32 {
value := reflect.ValueOf(r).NumField()
fmt.Printf("value %d\\n", value)
return 0
}
```
it looks like reflect.ValueOf is pointing to Response, and cannot a
