A Java Geek weekly 64

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
Nicolas Fränkel

Nicolas Fränkel

Developer Advocate with 15+ years experience consulting for many different customers, in a wide range of contexts (such as telecoms, banking, insurances, large retail and public sector). Usually working on Java/Java EE and Spring technologies, but with focused interests like Rich Internet Applications, Testing, CI/CD and DevOps. Also double as a trainer and triples as a book author.

Read More
A Java Geek weekly 64
Share this