EP5: AI Coding Assistants, Eventual Consistency, Spring Boot and GraalVM

EP5: AI Coding Assistants, Eventual Consistency, Spring Boot and GraalVM

It has been almost two months from my last newsletter issue, so there's lot of ground we need to cover!

Before we start, I want to apologize for not maintaining the regular cadence of the newsletter. However, as I mentioned on LinkedIn, my full time job demands most of my focus and sometimes eats into my free time. Since last quarter, I am now a Platform Owner (a new role for me) which requires me to sharpen up my skills in Platform Engineering, Product Ownership and Leadership.

The positive note is that once I will apply what I am learning and gain some real-world experience on it, I will be able to share it with you!

Let's get started!

AI Coding Assistants (July 2024 Update)

On the first of July, JetBrains announced improved code completion in their AI Assistant, so I subscribed to test it out and save you some time and money.

JetBrains claimed that the new AI assistant offers improved single and multi-line code completion for Java and Kotlin. It’s powered by their own models, which should provide higher quality and reduced latency.

When it comes to latency, I noticed immediately a definite improvement. Back in February, inline completion was slow and almost unusable, while today it produces suggestions timely.

However, I was not particularly convinced by the quality of its suggestions. I find JetBrains AI suggestions to be often very small snippets of code compared to Copilot or Codeium. One could argue that this approach should lead to more relevant suggestions. However, I don’t think that’s the case. You still have to discard many suggestions and there’s no way to quickly cycle through different options like you can do with Copilot.

If you want to know more, have a look at my video or read the article!

Eventual Consistency vs Strong Consistency

Eventual Consistency is one of the most fascinating topics in software development and software architecture. Unfortunately, it is often misunderstood! The best way to understand it is to compare it to strong consistency.

Strong Consistency guarantees the most recent data with every read, perfect for applications requiring accuracy, like financial systems. However, it faces challenges in performance, scalability, and availability, especially in distributed systems.

Eventual Consistency offers a flexible alternative, ensuring data convergence over time. It excels in performance, scalability, and availability, making it ideal for high-demand applications like social media, where real-time accuracy isn't critical.

MongoDB surprises many by offering strong consistency by default, thanks to its primary replica-based write operations and multi-document ACID transactions. It balances strong and eventual consistency, allowing for scalable reads and robust fault tolerance.

Find out more in the video or article.

Spring Boot and GraalVM Native Images

GraalVM is an advanced JDK capable of compiling Java applications “ahead of time” into standalone binaries. The generated binaries are smaller, start up 100 times faster, provide peak performance with no warmup, and use less memory and CPU than applications running on a traditional JVM.

But there's even more. GraalVM supports JavaScript, Ruby, Python, and R, thanks to the Truffle Language Implementation Framework. This library allows us to build tools and interpreters for other languages, meaning the number of supported languages could increase in the future.

This is starting to sound too good to be true! So, what's the catch? As usual, there's a tradeoff, and it lies in the differences between 'just in time' and 'ahead of time' compilation.

Watch the video for more, or read the article.

Coming up

Help me decide what to focus on next! Drop me an email or comment below!