AI has made it easier than ever to apply - and harder than ever to stand out. Recruiters are flooded, candidates are optimizing every line, and interviews are quietly changing shape. Maybe the next phase of hiring will look a little more human, and a little more like casting.
AI can give us answers instantly, but it can’t show the reasoning, mistakes, and human experiences behind them. Can genuine human voices be replaced by shortcuts? I don't think so, and here's why.
Not so long ago I came across the term Software Entropy (aka software rot, code rot, software decay…) and it instantly caught my attention. While entropy is a scientific concept, the context was about software development and the term described the process of "degradation of the use or performance of software over time." Why not get into details?
By "soft" I mean the non-technical skills that help us manage workplace relationships. We often focus so much on technical challenges that we forget how important these skills are to our success.
Discover how to integrate the Ollama chat model with SpringAI in a hands-on guide that walks you through running powerful language models locally and connecting them to your Spring Boot applications. This post covers setting up Ollama, configuring dependencies, and testing the chat client, making it easy to experiment with AI features using familiar Java tools and frameworks.
Is jOOQ a Better Fit Than JPA for Your Project?
This post explores the strengths and challenges of using JPA versus jOOQ for ORM in Java projects, focusing on scenarios where jOOQ’s flexible SQL approach outshines JPA’s limitations. Through practical examples and setup guides, it shows how jOOQ can make complex queries and database interactions more efficient, helping developers decide which tool fits their needs best.
Work with PDF files with Apache PDFBox in Java
This tutorial introduces Apache PDFBox, a Java library for creating and reading PDF files. It walks through setting up a project, writing text and images to PDFs, extracting text, and adding document metadata—all with clear code examples—making it easy to handle common PDF tasks programmatically.
Configure messaging with RabbitMQ in a Spring Boot application
This guide walks you through setting up message-based communication in a Spring Boot application using RabbitMQ and Spring AMQP. It explains core messaging concepts, shows how to configure fanout and topic exchanges, and demonstrates how to build producers and consumers for practical microservice integration.
Send emails from a Spring Boot application
This tutorial shows how to send emails from a Spring Boot application using JavaMailSender, covering project setup, property configuration, service creation, and testing. With clear examples and practical advice, it guides you through building a simple, reliable email-sending feature for your Java projects.
Configure properties in a Spring Boot application
This post explains a simple and effective way to organize and manage properties in Spring Boot projects. By grouping related settings into dedicated files and mapping them to configuration classes, it helps keep your codebase clean and maintainable—especially as your application grows.
Add Profiles to a Spring Boot application
This article explains how to use profiles in Spring Boot to manage environment-specific configurations. By creating profile-based property files and activating profiles as needed, you can easily switch between setups like development and production—making your application more flexible and maintainable.
With Maven, Spring Boot and Docker
This entry in the microservices series explains how to use a service registry—specifically, Eureka Server—to manage and connect multiple Spring Boot microservices. It covers setting up Eureka Server and clients, registering services, and implementing load-balanced communication, making your architecture scalable and resilient as your application grows.
With Maven, Spring Boot and Docker
This post continues the microservices series by adding a second service—Plagiarism—to the project, showing how to set up its own database, build REST endpoints, and enable communication between microservices using RestTemplate. It’s a practical guide to expanding your Spring Boot microservice architecture and connecting services together.
All you need to know
This article highlights the most interesting features introduced in Java 12 through Java 17, including sealed classes, records, pattern matching, switch expressions, helpful null pointer exceptions, enhanced random generators, and text blocks. With practical code examples and clear explanations, it’s a helpful guide for anyone considering upgrading or curious about modern Java capabilities.
With Maven, Spring Boot and Docker
This article introduces the basics of building microservices with Spring Boot, guiding you through setting up a Maven multi-module project, creating your first microservice, and connecting it to a PostgreSQL database running on Docker. With practical steps and clear examples, it’s a great starting point for anyone new to microservice architecture.
An Overview
This post offers a clear overview of Kubernetes, explaining the core problems it solves for deploying and scaling containerized applications. It covers key concepts like clusters, control plane, nodes, and pods, and breaks down the architecture that enables zero-downtime deployments, easy scaling, and efficient resource management for modern software projects.
Deploying a Docker Image to a Local Cluster
This tutorial shows you how to deploy a Docker image to a local Kubernetes cluster using Minikube. It walks through setting up the environment, configuring nodes, creating deployment and service YAML files, and accessing your running application—making it easy to get hands-on experience with Kubernetes on your own machine.
This article explains the Log4j vulnerability (Log4Shell), why it’s so dangerous for Java applications, and how attackers can exploit it to execute code remotely or steal sensitive data. It covers the basics of Log4j and JNDI, describes real-world attack scenarios, and offers practical advice for mitigating risks—like updating to safer Log4j versions and reviewing dependencies—to help developers protect their systems.
Creating and Deploying a Containerized App
This guide walks you through creating, testing, and deploying a containerized Java web app to Google Kubernetes Engine (GKE) using Google Cloud Shell and Cloud Code. It covers setting up a local Kubernetes cluster, modifying and viewing your app, and finally deploying it to the cloud—making Kubernetes on GCP approachable for beginners.
This comprehensive tutorial explains how to secure your Spring Boot applications using JWT (JSON Web Tokens) and Spring Security. It covers JWT concepts, project setup, user and role management, authentication and authorization logic, token generation and validation, and practical code examples—equipping you to implement secure, stateless authentication for your web applications.
This article guides you through configuring authorization in Spring Boot Security, showing how to set up role-based access control for different API endpoints. With practical examples and clear explanations, it demonstrates how to permit or restrict access based on user roles, making your application safer and more flexible.
This post explains how to set up database-backed authentication in Spring Boot Security using MySQL and JPA. It guides you through configuring user entities, repositories, and services, then shows how to connect everything with a secure authentication setup—making it easy to manage users and roles from your database instead of in-memory storage.
This post walks you through setting up in-memory authentication in Spring Boot Security. It explains how to configure user credentials and roles directly in your code, customize the authentication manager, and encode passwords—making it simple to test and secure your application without a database.
This article breaks down the core concepts of Spring Boot Security, explaining authentication, authorization, principals, roles, and authorities in clear terms. It introduces the Spring Security starter dependency and how it automatically adds login functionality, preparing you to understand and implement secure authentication and authorization in your Java applications.
This guide explains how to handle exceptions gracefully in Spring Boot applications using @RestControllerAdvice. It covers creating custom error responses, managing specific exceptions, and centralizing error handling logic—helping you deliver clearer, more useful error messages to clients and maintain cleaner code.
This guide takes you step-by-step through building a simple Java website with Spring Boot, containerizing it with Docker, and deploying it to Google Cloud Platform. It covers project setup, writing a basic controller, creating a Dockerfile, and configuring cloud resources—making it accessible for beginners who want to get their site online quickly and confidently.