The IKEA Effect

The IKEA effect is a fascinating phenomenon whereby consumers place a (sometimes disproportionately) higher value on things that they have either made themselves, or to which they’ve contributed towards making. This can have a significant influence on perceived value – to the extent that people might value imperfect things they’ve helped create, more than they would value the equivalent, perfect, …

Read More »

When Speed Matters: Real-time Stream Processing with Hazelcast and Redpanda

In this tutorial, we explore the powerful combination of Hazelcast and Redpanda to build high-performance, scalable, and fault-tolerant applications that react to real-time data. Redpanda is a streaming data platform designed to handle high-throughput, real-time data streams. Compatible with Kafka APIs, Redpanda provides a highly performant and scalable alternative to Apache Kafka. Redpanda’s unique architecture enables it to handle millions …

Read More »

Getting Started With Apache Camel On Jakarta EE 10

Apache Camel is an open source enterprise integration framework that helps you connect different systems and applications together with as little effort as possible. It provides a simple and powerful way to define and implement message-based routing and mediation rules. It is an implementation of the patterns described in the book Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf. …

Read More »

Building for Failure: Best Practices for Easy Production Debugging

Before going into the content of this post, check out my new book which launched last week! Quite a few years ago I was maintaining a database-driven system and ran into a weird production bug. The column I was reading from had a null value, but this wasn’t allowed in the code and there was no place where that value …

Read More »

Build Rot: The Hidden Technical Debt in Maven and Gradle Builds

Discover ‘Build Rot’, the hidden technical debt in Maven and Gradle builds. This article explores the impact of Build Rot on build speed and test times, offering strategies for enhanced observability and Developer Productivity Engineering to optimize build processes. Technical debt is a constant companion in the complex world of software development. It’s the price we pay for quick fixes …

Read More »

SnakeYaml 2.0: Solving the unsafe deserialization vulnerability

In December of last year, we reported CVE-2022-1471 to you. This unsafe deserialization problem could easily lead to arbitrary code execution under the right circumstances.  In the deep-dive blog post “Unsafe deserialization vulnerability in SnakeYaml (CVE-2022-1471)”, I explained the problems in this library and how it could be executed. The gist of the problem was that by default SnakeYaml parsed the incoming …

Read More »

How We Developed the Eclipse OpenJ9 CRIU Support for Fast Java Startup

Checkpointing and restoring the JVM makes applications run faster because all the startup work is done before deployment. This means that in serverless cloud applications, the end-user of the application perceives no delay when the application starts. You can try it out now with your own apps on Open Liberty with Eclipse OpenJ9. But if you want to know more, …

Read More »

Contributing to Open Source Software: Creating a Pull Request

In this tutorial, we are going to take a look at contributing to Open Source Software, specifically how to do a pull request (PR). We will look at forking and cloning the project, making the changes, committing and pushing these changes, creating the pull request, the review and hopefully merge of your PR. The same process may apply when making …

Read More »

JDK Safari: How To Find Hidden Tools in the JDK

We all have some hobby, be it sports, fishing, playing games or building compilers. One of my hobbies is regularly searching the JDK for new Java classes with executable main methods. How come? Many years ago, during my forays through the JDK sources, I first encountered a class with a main-method I didn’t know about. That was in 2007 (oh …

Read More »