- Git cleanup
-
I use Git a lot, in my daily job as well as for this blog. When using it, I often rebase locally before pushing, to have a clean and readable history.
- Spring Boot 3.4 supports multiple Docker Compose files
-
- I didn’t know Spring Boot could manage even a single Docker Compose file.
- I love how Spring integrates with many components in the ecosystem
- I’m not sure this is the most important one
- Why define a Docker Compose file per service?
The idea of Docker Compose is actually to define all required services in a single file.
All in all, meh.
- CRDTs and collaborative playgrounds
-
I love CRDTs!
- On OpenTelemetry and the value of Standards
-
Interesting piece on the benefits of OpenTelemetry (obviously, it’s standard!), and how it can improve. I’m a believer myself, but I could be more objective.
- Kubernetes and Function-as-Service
-
Kubernetes and Function-as-Service (FaaS) don’t go well together — you probably already know that. This recent SOSP paper by Ana Klimovic and her team at EPFL breaks down why. 👇
- Optimistic State Machine Execution
-
A look at state machine state replication across distributed systems.
- Versions in CustomResourceDefinitions
-
In one of my latest blog posts, I mentioned the following:
At the time of this writing, the Gateway API is still an add-on and not part of the Kubernetes distro. You need to install it explicitly as a CRD. The Gateway API went through several versions. If team A were a precursor and installed version v1alpha2, every other team would need to use the same version because the Gateway API is a CRD. Of course, team B can try to convince team A to upgrade, but if you’ve been in such a situation, you know how painful it can be.
I was mistaken: you can have multiple versions of the same CRD in your cluster.
The above document offers a way to achieve that. Though there still will be a single implementation, it can serve multiple versions. If the output is different, you need to implement webhooks by yourself.
- TAO - Meta’s scalable architecture powering world’s largest social graph
-
Problem statement. Proposed architecture. Discussion of trade-offs.
- Git - Beyond the Basics
-
git log
git blame
git branch
git push --force-with-lease
git maintenance
git rerere
git and bash
git add/reset/checkout -p
git worktrees
git rebase --autosquash
github-linguist
For committing parts of files, nothing beats an actual visual tool, e.g., SourceTree.
- What is the Two Generals Problem in Distributed Systems?
-
Basics, but fundemental basics.
- Logging, the sensible defaults
-
don’t log into files
Imagine that when I started my developer career, it was a good practice and logging to the
stdout
/stderr
was the bad one. It’s a good lesson to regularly reassess your approach. - On Long Term Software Development
-
- Dependencies
- Testing
- Complexity
- Boring code
- LinkedIn-based software development
- Logging, telemetry, performance
- Documentation
- The team
- Be open source