foojay

Spring 6.1 – RestClient

As you might have read in this blogpost, Spring is introducing a RestClient in Spring 6.1 to interact with HTTP backends. Now some of you might be wondering as to the why, given we already have a plethora of other options such as RestTemplate, WebClient, HttpUrlConnection, …​ As we can see on the javadoc page RestTemplate got quite massive over …

Read More »

Writing Testable Code: A Journey Through Consideration and Refactoring

In an ideal world, every piece of code we write would be easily testable, clearly understood, and perfectly maintainable. However, reality often presents us with complex problems and solutions that aren’t always straightforward. Writing testable code sometimes requires a thoughtful approach, deep consideration of the use cases, and even refactoring to ensure that the code is robust and fully tested. …

Read More »

Three Key Elements to Incorporate into Your Flaky Test Remediation Approach

Flaky tests pose substantial challenges due to their unpredictable and inconsistent nature. Effectively addressing them requires a multi-faceted approach that involves the effective integration of strategy, process and resource alignment, and a deep understanding of flaky test causality. This post will walk you through this approach. Note! This post is part of a three-part series. If you’re not sure it’s …

Read More »

How to Create a Spring Boot Application to Retrieve Data from Evernote

I recently started work on a joint project with my colleague, Jason Koo. For this project, we want to import data from second brain apps (such as Obsidian, Notion, Evernote, etc) to Neo4j. Since I use Evernote, I was tasked with getting my notes out of Evernote. In this article, I will show you how to use the Evernote API …

Read More »

Spring Boot: Local Development Enhancements, Let’s Compose!

Quite often when we are developing an application we need external services such as rabbitMQ, Kafka, etc. When you are developing locally, you are quite likely using a docker-compose file to start these up, and I am certainly (hopefully) not the only one that has forgotten at least once to start these instances up. And maybe you are even already …

Read More »

Well Worth My Time: “OpenJDK Migration for Dummies”

I’ve just read the (free) OpenJDK Migration for Dummies book. It was well worth my time! I first started using Java in 1998, so I’ve got a long history with it and feel very comfortable with the language itself. However, the licensing changes and proliferation of OpenJDK distributions are much more recent, and those aspects can be a bit confusing. …

Read More »

Debugging as a Process of Isolating Assumptions

Debugging is an integral part of any software development process. It’s a systematic hunt for bugs and mistakes that may be hidden in the intricate lines of your code. Much like a hunter and its prey, it requires a precise method and a set of specific tools. Let’s delve deeper into the fascinating process of isolating assumptions to effectively debug …

Read More »

Introduction to the Tower Library

One of the components of my OpenTelemetry demo is a Rust application built with the Axum web framework. In its description, axum mentions: axum doesn’t have its own middleware system but instead uses tower::Service. This means axum gets timeouts, tracing, compression, authorization, and more, for free. It also enables you to share middleware with applications written using hyper or tonic. …

Read More »