Ani Talakhadze 🍋

When Everyone Polishes Their Resume, What Happens Next?

Oct 14, 2025

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.

On Why Human Knowledge Still Matters

Sep 16, 2025

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.

Software Entropy

May 18, 2025

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?

Essential Soft Skills for Software Developers

Sep 14, 2024

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.

SpringAI Featuring Ollama Chat Model

Mar 16, 2024

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.

Rethinking ORM

Oct 28, 2023

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.

Part 5 - HOW TO

Aug 12, 2022

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.

Part 4 - HOW TO

May 09, 2022

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.

Part 3 - HOW TO

Apr 27, 2022

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.

Part 2 - HOW TO

Apr 24, 2022

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.

Part 1 - HOW TO

Mar 25, 2022

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.

Microservices [Part 3]

Feb 26, 2022

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.

Microservices [Part 2]

Feb 23, 2022

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.

Java 12 to Java 17

Feb 13, 2022

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.

Microservices [Part 1]

Feb 09, 2022

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.

Kubernetes

Jan 17, 2022

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.

Kubernetes

Jan 14, 2022

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.

We should talk about Log4j...

Dec 27, 2021

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.

Kubernetes

Dec 19, 2021

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.

Spring Security With JWT

Dec 12, 2021

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.

Spring Boot Security - Authorization Configuration

Dec 05, 2021

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.

Spring Security - Database Authentication

Dec 03, 2021

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.

Spring Boot Security - In-memory Authentication

Dec 01, 2021

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.

Spring Boot Security - Core Concepts Explained

Nov 29, 2021

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.

Ultimate Guide to Spring Boot Exception Handling

Oct 27, 2021

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.

From Idea to https://

Oct 01, 2021

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.