ChatGPT and other Generative AI tools took the world by a storm. People are using these AI tools for various purposes such as to explore a topic, to seek answers to their questions or to get help in coding, etc. ChatGPT and Google’s Gemini are very popular AI tools that are available for free with some usage limitations. Coding without help from Google, StackOverflow and blogs is challenging. But what if you had to code without internet connectivity?
Continue reading »Lessons and Milestones: My 2024 Journey
First and foremost, I wish you a very Happy New Year! I hope 2025 brings incredible opportunities and happiness your way. As we step into the new year, I’d like to take a moment to reflect on 2024—sharing my achievements, lessons learned, and the journey it brought me on. A short Career Break I was working as a Developer Advocate at AtomicJar and AtomicJar was acquired by Docker. By Jan 2024, we officially became part of the Docker team, but I was there at Docker only for a couple of months.
Continue reading »Spring Boot + Testcontainers Tests at Jet Speed
Spring Boot 3.1.0 introduced support for Testcontainers to simplify local development and testing. Testcontainers helps in writing tests using real dependencies instead of mocks, but it may also increase the test execution time. In this article, I will share some insights on how to reduce test execution time while using Testcontainers. Sample Spring Boot application Let’s assume you have created a Spring Boot project using Spring Initializr by selecting Spring Web, Spring Data JPA, PostgreSQL, Flyway and Testcontainers.
Continue reading »My First Impression of Google's NotebookLM
I came across NotebookLM from my social media feed, and it looks interesting. With NotebookLM, you can upload documents, videos, web urls and let the AI agents talk about the uploaded material. That sounds intriguing. Recently I wrote an article about software complexity and shared my view point. Many people appreciated it and some people didn’t. That is fine to have different opinions. I thought, lets see how NotebookLM interprets what I said.
Continue reading »Running your own Spring Initializr and using it from IntelliJ IDEA
If you ever worked with Spring Boot, then you are probably aware of Spring Initializr. The Spring Initializr is a web application that you can use to create a Spring Boot application. Do you know Spring Initializr itself is an open-source Spring Boot application? You can fork it, customize it, deploy on your infrastructure and use it to generate Spring Boot applications. The next question would be what kind of customizations I can do?
Continue reading »Master the Art of Requesting Technical Help: A Handy Email Template
As a software developer, at the beginning of my career, I thought it was more important to learn one more programming language or framework or library. But as years passed by, I realized it is also equally important to learn how to interact with people. Now remote work is becoming new normal and social media platforms like Twitter, LinkedIn, etc. are a common place to interact with people across the globe.
Continue reading »Mastering Spring Boot in 5 Stages
Spring Boot is the most popular framework in the Java world to build enterprise applications. Also, Spring Boot is the most sought-after skill to get hired as a Java developer. Here is my recommended approach to learn Spring Boot. 1. Prerequisites: What you should already know If you are completely new to Java, then directly jumping on to Spring Boot is NOT recommended. First, learning Core Java and get familiar with Java ecosystem.
Continue reading »A path to become a Polyglot Programmer
Nowadays, we are using a wide range of technologies and tools for building modern software systems. As software developers, we need to keep upskilling ourselves to be able to build the software efficiently. One question that often pops up is, should I become a Generalist or a Specialist? Personally, I highly recommend to be a generalist at the beginning of your career so that you can get some experience in building software end-to-end.
Continue reading »Thymeleaf Layouts using Fragment Expressions in Spring Boot GraalVM Native Image
Typically, in Spring Boot + Thyemleaf applications, we use thymeleaf-layout-dialect to define the common layout of the web pages and it works fine. But when we compile the Spring Boot application to GraalVM native image, it is failing due to this error. I tried many suggestions mentioned in the above issue, but none of them worked for me. Then Oliver Drotbohm suggested me Flexible layouts approach to create layouts support natively provided by Thymeleaf itself.
Continue reading »Spring AI RAG using Embedding Models and Vector Databases
In this article, we will explore the following: Introduction to Embedding Models. Loading data using DocumentReaders. Storing embeddings in VectorStores. Implementing RAG (Retrieval-Augmented Generation), a.k.a. Prompt Stuffing. Sample Code Repository You can find the sample code for this article in the GitHub repository Large Language Models(LLMs) like OpenAI, Azure Open AI, Google Vertex, etc are trained on large datasets. But those models are not trained on your private data, so they may not be able to answer questions specific to your domain.
Continue reading »