2026  1

February  1

Day 99: Virtual Threads Didn’t Kill Event Loops. Here’s How Each Works

February 13, 2026 · 20 min

2025  15

December  4

Day 100: Why Your Parallel Streams Are Leaving CPU Cores Idle (And How to Fix It)

December 24, 2025 · 18 min

Day 98: I Thought Virtual Threads Were Just Green Threads They’re Actually Continuations on the Heap

December 23, 2025 · 9 min

Day 97: Java Concurrency Toolkit Part 3 - Advanced Patterns & Production Readiness

December 22, 2025 · 26 min

Day 96: Java Concurrency Toolkit Part 2 - Core Synchronization Patterns

December 10, 2025 · 16 min

November  1

Day 95: Java Concurrency Toolkit Part 1 - Foundation & Execution Patterns

November 21, 2025 · 25 min

October  2

Day 94: Nobody Told Me Java Application Could Start This Fast and The Rabbit hole I explored

October 30, 2025 · 14 min

Day 93: Stop Leaking Passwords - Building Java’s Answer to PHP’s #[SensitiveParameter]

October 7, 2025 · 20 min

September  1

Day 92: Building AI Agents with Java 21 and Spring AI - My Learning from the Workshop

September 10, 2025 · 12 min

August  1

Day 91: The Art of Reading Massive Files Without Breaking a Sweat - Memory Mapping in Java 21

August 15, 2025 · 11 min

July  1

Day 90: How I Built a Secret Agent That Infiltrates Any Java Application

July 18, 2025 · 8 min

June  1

Day 89: When Your Singleton Isn’t Really a Singleton (And How to Fix It)

June 26, 2025 · 10 min

April  1

Day 88: Multilingual Audio Transcription with Gemini 1.5, Vertex AI, and Spring Boot

April 29, 2025 · 7 min

March  2

Day 87: Java’s Environment Variable Paradox: Easy to Read, Impossible to Change?

March 26, 2025 · 8 min

Day 86: Building a Secure Java Sandbox with Custom Class Loaders, Process isolation and Java Platform Module System – Executing JAR and .java Files Safely

March 12, 2025 · 5 min

January  1

Day 85: Idempotent APIs in Java: Concepts, Implementation Strategies, and a Spring Boot File Upload Implementation

January 2, 2025 · 5 min

2024  10

October  1

Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers

October 4, 2024 · 13 min

September  1

Day 83: Java Object Cloning: Exploring Shallow and Deep Copy Techniques

September 14, 2024 · 13 min

August  1

Day 82: Reflection in Java: Building a Simple DI Container in 100 Lines of Code

August 17, 2024 · 16 min

July  1

Day 81: Creating custom stream operations ex: Slide, Shift, Zip and Fold using Spliterator

July 4, 2024 · 6 min

May  2

Day 80: From Concept to Code: Implementing a Dummy Consistent Hashing in Java using TreeMap

May 23, 2024 · 12 min

Day 79: Did you know that too much print statement can cost you money

May 3, 2024 · 6 min

April  1

Day 78: Java 22 - Embracing Safe Memory Allocation Using FFM API - An alternative to Unsafe API

April 18, 2024 · 4 min

March  1

Day 77: Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API

March 14, 2024 · 5 min

January  2

Day 76: Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java Service Provider Interface (SPI)

January 26, 2024 · 6 min

Day 75: Java BufferedReader: Do We Know Why We Need To Close It?

January 2, 2024 · 9 min

2023  10

December  1

Day 74: Java Security: Crafting a toy TLS Server with Java Security API

December 12, 2023 · 8 min

September  1

Day 73: Java Security: Safeguarding Data with Encryption and Keys

September 11, 2023 · 6 min

July  1

Day 72: Can a HashMap Take Null or Empty String as a Key in Java?

July 26, 2023 · 4 min

June  1

Day 71: Understanding Heap poullion in java and its causes and how to prevent it

June 9, 2023 · 5 min

April  2

Day 70:Diving deep into Array copy- Measuring Array Copy Performance in Java with JMH: A Comparative Analysis of Methods

April 15, 2023 · 3 min

Day 69 : Unlocking Java Performance Secrets: Harnessing the Power of JMH Microbenchmarking

April 5, 2023 · 5 min

March  1

Day 68 : Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 3)

March 30, 2023 · 5 min

January  3

Day 67: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 2)

January 21, 2023 · 9 min

Day 66: Becoming a memory plumber; A tale of Memory Leak and how to find them ( part 1)

January 20, 2023 · 6 min

Day 65: A tale of RMI (Remote Method Invocation) in java

January 12, 2023 · 9 min

2022  30

December  2

Day 64: Implementing a basic Bloom Filter Using Java BitSet api

December 28, 2022 · 8 min

Day 63: Alert system for Java OutOfMemory Error

December 14, 2022 · 6 min

November  4

Day 62: Understanding JMX and its architecture ( Agent Level )

November 29, 2022 · 9 min

Day 61: Understanding JMX and its architecture (Management Level)

November 15, 2022 · 5 min

Day 60: Generating JVM heap dump programmatically

November 11, 2022 · 4 min

Day 59: Understanding Proxy and Dynamic Proxy in Java

November 4, 2022 · 7 min

October  4

Day 58: Mocking void methods using ArgumentCapture and Answering

October 23, 2022 · 4 min

Day 57: All about Random in Java ( Random, SecureRandom,ThreadLocalRandom and SplittableRandom)

October 13, 2022 · 9 min

Day 56: Zero length Array and Its use

October 6, 2022 · 3 min

Blue-Green Deployment using DNS

October 3, 2022 · 8 min

September  3

Day 55: Understanding static and instance initializer in java classes and

September 26, 2022 · 3 min

Git troubleshooting : 6 helpful command with explanations

September 15, 2022 · 2 min

Day 54: Understanding volatile keyword’s use for Multi Threaded program

September 1, 2022 · 4 min

August  1

Day 53: Processing Http Request Asynchronously using CompletableFutures

August 17, 2022 · 3 min

July  1

Day 52: Async Processing HttpRequest’s using ExecutorCompletionService

July 26, 2022 · 4 min

May  3

Day 51: Creating Stream (using StreamSupport API) from Spliterator by converting Iterator to Spliterator

May 28, 2022 · 3 min

Day 50: Marker interface and it’s uses

May 21, 2022 · 4 min

Day 49: A utility class for Zip and Unzip files using java FileSystem api (Part 2)

May 6, 2022 · 4 min

April  1

Day 48: A utility class for Zip and Unzip files using java Zip api (Part 1)

April 11, 2022 · 7 min

March  3

Day 47: ThreadMXBean to get information about thread’s status, deadlock monitoring and cpu time that the thread got etc.

March 28, 2022 · 2 min

Day 46: Writing a generic and thread safe ObjectPool to enable pooling for any type of class

March 16, 2022 · 3 min

Day 45: learning about the internals of JVM and JRE (part 3)

March 1, 2022 · 6 min

February  4

Day 44: learning about the internals of JRE and JVM (Part 2)

February 24, 2022 · 8 min

Day 43: learning about the internals of jre, jvm (Part 1)

February 14, 2022 · 4 min

Day 42: using custom annotations and check if its a class level or field level annotation

February 11, 2022 · 2 min

Day 41: Generating unique id’s based on device MAC address and epoch time

February 3, 2022 · 4 min

January  4

Day 40: Generator implementation using custom Iterator and Threads.

January 27, 2022 · 1 min

Day 39: Local date time to UTC date time and vice versa with respect to timezone and Day light saving

January 21, 2022 · 3 min

Day 37: Feature toggle to enable disable features for paid and unpaid user

January 5, 2022 · 1 min

Day 38: One of the cases to use check and unchecked exceptions

January 5, 2022 · 2 min

2021  38

December  5

Day 36: Learned about banned dependencies and how to ban transitive dependency in a maven or gradle project

December 14, 2021 · 2 min

Day 35: Emulating Pair in java using AbstractMap.SimpleEntry<>() and new Object() {} implementation

December 6, 2021 · 1 min

Advent of Code Day 02

December 2, 2021 · 1 min

Advent of Code Day 01

December 1, 2021 · 1 min

Day 34: Inspecting JVM runtime memory and processor count with Runtime

December 1, 2021 · 1 min

November  4

Day 33: Getting a programmer joke asynchronously with CompletableFuture, HttpClient, and Jackson

November 25, 2021 · 2 min

Day 32: Using Objects.equals() when values may be null

November 17, 2021 · 1 min

Day 31: Compressing and decompressing text with Deflater and Inflater

November 10, 2021 · 2 min

Day 30: Exploring a generator-style approach in Java with Supplier and IntStream

November 4, 2021 · 1 min

October  3

Day 29: ParameterizedTest and MethodSource for repeated test inputs

October 28, 2021 · 1 min

Day 28: Arrays.asList() and new ArrayList<>() are not the same

October 22, 2021 · 1 min

Day 27: Implementing a Unix pipe-like class in Java with Function composition

October 14, 2021 · 2 min

September  5

Day 26: Writing a method to retry another method execution

September 30, 2021 · 2 min

Day 25: Using a implementation of supplier creating and caching a large file (any Class in this case that will initialize a very large object) lazily and thread-safe.

September 21, 2021 · 1 min

Day 24: Removing nulls from list using Collections.singleton and Objects.isNull

September 14, 2021 · 1 min

Day 23: TemporalAdjuster ofDateAdjuster implementation and DayOfWeek calculating the next working day with Bangla name.

September 8, 2021 · 1 min

Day 22: Using stream of streams and flatmapping it to concat multiple streams

September 6, 2021 · 1 min

August  6

Day 21: Optional.ifPresent and Optional.filter to log and filter the Scheduled Day according to holiday

August 31, 2021 · 1 min

Day 20: Some previous post had optional.get() in them which is not a best practice if its not with Optional.isPresent(). better than isPresent is to use orElse(), orElseGet(), orElseThrow()

August 20, 2021 · 1 min

Day 19: Stream.peek to get debug information and log it.

August 17, 2021 · 1 min

Day 18: using Scanner.findAll to get all the download links from a json file.

August 13, 2021 · 1 min

Day 17: Unicode decoding side effect. Application throws exception when a comment is removed.

August 6, 2021 · 1 min

Day 16: Two interface having same signature default method causing to override them.

August 3, 2021 · 1 min

July  10

Day 15: Batching files and moving them using intStream

July 27, 2021 · 1 min

Day 14: Using stream parallel to add id to file names.

July 23, 2021 · 1 min

Day 13: Using Collectors.groupingBy and Collectors.counting to get numbers of file present of a particular type

July 19, 2021 · 1 min

Day 12: Files.walk() and functional interface to remove file extension from fileNames

July 14, 2021 · 1 min

Day 11: Supplier, Consumer functional interface and httpclient to get and output Bitcoin info

July 9, 2021 · 1 min

Day 10: Function is a functional interface that takes an input and gives an output. so functions can be chained.

July 6, 2021 · 1 min

Day 9: Functional interface

July 5, 2021 · 1 min

Day 8: I always liked string interpolation in JS. Now i found out about Javas MessageFormat’s format method which lets us in its way use string interpolation.

July 3, 2021 · 1 min

Day 7: Today i found out that string declared with "" are placed in string constant pool while with new keyword its in heap. String.intern() return string if defined in string pool otherwise creates the string and then returns it.

July 2, 2021 · 1 min

Day 6: Today I got to know that for loop is faster than foreach loop for a large amount of elements. after checking I found out that is on average 2 times faster for the below program in my machine.

July 1, 2021 · 1 min

June  5

Day 5: Getting stream of char from string.chars()

June 30, 2021 · 1 min

Day 4: try with resource helps to close open resources that uses .close() method to close.

June 29, 2021 · 1 min

Day 3: Using Objects.requireNonNullElse() where Optional not being able to be used.

June 28, 2021 · 1 min

Day 2: Getting the last element of a Stream.

June 27, 2021 · 1 min

Day 1: Comparing/ checking equality against multiple Strings.

June 26, 2021 · 1 min