Blog
Collection of curated blog posts from me.
Getting started with Kestra Modern engine for business automation
In this article, I’ll share my experience with Kestra. It’s a modern workflow orchestration platform that’s become popular among developers. If you’ve worked with Apache Airflow or simlar tools, Kestra feels different. It offers a fresh take on workflow automation Introduction I’ve worked with many workflow engines. I now value tools that enhance the developer experience while still being functional. Kestra grabbed my attention. It aims to simplify complex business process automation. Plus. it keeps the flexibility needed for real-world use.
June 26, 2025
Event sourcing with Spring Boot, Kafka and jOOQ
Events around One way of building resilient, scalable, and maintainable applications is use event sourcing. The event sourcing become a powerful architectural pattern. In classical approach we have only current state of application. On other hands in the event sourcing persist every state change as event. With this method we have complete history of changes. The complete history of changes easing debug, audit, and even reconstruction application state.
April 5, 2025
Spring Boot Banner - Beyond ASCII art
If you’re working with Spring Boot you may see banner once your app is starting. The banner is not only decoration, but can serve as provider of helpful information. It can provide valuable information and even serve functional purposes. Let’s explore how to customize it beyond simple ASCII art. The basics: Text and image The simplest way of customization is to create banner.txt file. The banner.txt file should place in resource folder. Spring Boot picks this up and displays its content at startup. For graphic lovers, Spring Boot also Supports image - based banners. You need only add banner.jpg, or banner.png to your resource folder, and Spring Boot will convert it to ASCII art.
April 1, 2025
Maven plugin development from basic to advanced
Extensions Introduction Ever found yourself repeating the same mundane tasks during your build process? You might be checking for SNAPSHOT dependencies before a release. You could also check code formatting or do custom verifications that regular plugins don’t handle. We developers love automation. Maven plugins help us do that. They let you tweak and customize your build process to match your project’s need. In this article, I’ll guide you through creating your own Maven plugins, from simple to a sophisticated. After I missed SNAPSHOT dependencies during a release and caused production delay, I saw that a custom Maven plugin could fix this issue for good. Why manually check when you can automate?
March 27, 2025
Structured logging
Spring Boot 3.4 adds native support for structured logging. This makes it easier to create machine — readable logs that work well with log aggregation tools. In this quick guide, I’ll show you how to configure and use this powerful feature. What is structured logging? Traditional text — based logs are great for humans but challenging for machines to parse. Structured logging formats logs as JSON objects. These have defined fields, makint them easier to search, filter, and analyze. You can use tools like ELK Stack. Setting up structured logging
March 23, 2025
Understanding Java Memory Model and Thread Safety
In today’s world of multiple-core processors, it is vital to know how Java manages memory and threads. This understanding helps in creating strong, high - performance applications. We often overlook basic understanding threading mechanisms as developers. But when issues arise - and they will knowing the core concepts can save your hours of debugging. Java Memory Model: More than heap and stack The Java Memory Model (JMM) defines how threads interact through memory. It’s not just about how we organize memory. It’s also about the rules that control visibility, atomicity, and the order of memory operations. When Java code runs, each thread gets its own stack, storing local variables and method call information. But all threads share the heap, which contains all objects your program allocates. This shared nature is strong but risky. It lets threads communicate, but it can lead to race conditions. The JMM, introduced in Java 5 (JSR - 133), provides guarantees about when changes made by one thread become visible to other. Before we dive into the details, let’s understand why this matters. Consider this code that appears to be harmless:
March 20, 2025
Demystifying Java ClassLoaders - A deep dive into the JVM loading mechanism
Loading Have you ever wondered how your Java application finds all those imported classes? Or maybe you’ve faced the dreaded ClassNotFoundException and felt lost in classloader confusion? Perhaps you’ve dealt with dependency conflicts or library version issues in large applications. All these problems come from one key mechanism in Java: classloaders. In this article, I’ll take you into the exciting world of Java’s classloading. We will explore how class loaders operate. We’ll talk about their hierarchy. You’ll learn how to use them to solve real-world problems in your apps.
March 13, 2025
Spring AOP - Understanding proxy mechanics
Under hood When I first encountered Spring AOP (Aspect - Oriented Programming), it seemed like magic. My Java code began executing extra behavior without my explicit command. Log statements showed up, transaction handled themselves, and security check happened automatically. But as with any advanced technology, the magic has a clear explanation. In this article, we will pull back the curtain on Spring AOP and explore how it uses proxy patterns to weave behavior into your applications. We will look at both the theory and practical implementations so you can make the most of this powerful feature.
March 6, 2025
Understanding Spring Bean Lifecycle
Coffee beans, but today about different beans Introduction The Spring Framework is key for Java enterprise development. It manages “beans,” which are objects, using a smart lifecycle system. It’s important for developers to grasp this lifecycle in Spring applications. This knowledge gives them control over how resources are set up, how they behave, and how to clean them up properly.
February 28, 2025
Building a custom Spring Boot Starter - From theory to practice
Introduction Spring Boot starters are key feature of the Spring Boot ecosystem. They simplify dependency management and auto — configuration. A starter mix of dependencies and auto — configuration.It provides specific features with little setup needed. Spring Boot offers many official starters. However, you may need to create a custom starter for reusable functionality across different projects. In this guide, we’ll look at the theory and practice fo building a custom Spring Boot starter. We’ll learn how to start working under the hood and create a real — world example that you can use as template for you own custom starter.
February 26, 2025