2026  2

March  1

Day 100: What 100 Days of Java Actually Changed in How I Think About Software

March 30, 2026 · 9 min · Mohibul Hassan Chowdhury

February  1

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

February 13, 2026 · 20 min · Mohibul Hassan Chowdhury

2025  15

December  4

Why Your Parallel Streams were Leaving CPU Cores Idle (And How to Fix It)

December 24, 2025 · 18 min · Mohibul Hassan Chowdhury

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

December 23, 2025 · 9 min · Mohibul Hassan Chowdhury

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

December 22, 2025 · 26 min · Mohibul Hassan Chowdhury

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

December 10, 2025 · 16 min · Mohibul Hassan Chowdhury

November  1

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

November 21, 2025 · 25 min · Mohibul Hassan Chowdhury

October  2

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

October 30, 2025 · 14 min · Mohibul Hassan Chowdhury

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

October 7, 2025 · 20 min · Mohibul Hassan Chowdhury

September  1

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

September 10, 2025 · 12 min · Mohibul Hassan Chowdhury

August  1

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

August 15, 2025 · 11 min · Mohibul Hassan Chowdhury

July  1

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

July 18, 2025 · 8 min · Mohibul Hassan Chowdhury

June  1

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

June 26, 2025 · 10 min · Mohibul Hassan Chowdhury

April  1

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

April 29, 2025 · 7 min · Mohibul Hassan Chowdhury

March  2

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

March 26, 2025 · 8 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

January  1

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

January 2, 2025 · 5 min · Mohibul Hassan Chowdhury

2024  10

October  1

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

October 4, 2024 · 13 min · Mohibul Hassan Chowdhury

September  1

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

September 14, 2024 · 13 min · Mohibul Hassan Chowdhury

August  1

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

August 17, 2024 · 16 min · Mohibul Hassan Chowdhury

July  1

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

July 4, 2024 · 6 min · Mohibul Hassan Chowdhury

May  2

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

May 23, 2024 · 12 min · Mohibul Hassan Chowdhury

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

May 3, 2024 · 6 min · Mohibul Hassan Chowdhury

April  1

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

April 18, 2024 · 4 min · Mohibul Hassan Chowdhury

March  1

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

March 14, 2024 · 5 min · Mohibul Hassan Chowdhury

January  2

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

January 26, 2024 · 6 min · Mohibul Hassan Chowdhury

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

January 2, 2024 · 9 min · Mohibul Hassan Chowdhury

2023  10

December  1

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

December 12, 2023 · 8 min · Mohibul Hassan Chowdhury

September  1

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

September 11, 2023 · 6 min · Mohibul Hassan Chowdhury

July  1

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

July 26, 2023 · 4 min · Mohibul Hassan Chowdhury

June  1

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

June 9, 2023 · 5 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

April 5, 2023 · 5 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

January 20, 2023 · 6 min · Mohibul Hassan Chowdhury

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

January 12, 2023 · 9 min · Mohibul Hassan Chowdhury

2022  30

December  2

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

December 28, 2022 · 8 min · Mohibul Hassan Chowdhury

Day 63: Alert system for Java OutOfMemory Error

December 14, 2022 · 6 min · Mohibul Hassan Chowdhury

November  4

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

November 29, 2022 · 9 min · Mohibul Hassan Chowdhury

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

November 15, 2022 · 5 min · Mohibul Hassan Chowdhury

Day 60: Generating JVM heap dump programmatically

November 11, 2022 · 4 min · Mohibul Hassan Chowdhury

Day 59: Understanding Proxy and Dynamic Proxy in Java

November 4, 2022 · 7 min · Mohibul Hassan Chowdhury

October  4

Day 58: Mocking void methods using ArgumentCapture and Answering

October 23, 2022 · 4 min · Mohibul Hassan Chowdhury

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

October 13, 2022 · 9 min · Mohibul Hassan Chowdhury

Day 56: Zero length Array and Its use

October 6, 2022 · 3 min · Mohibul Hassan Chowdhury

Blue-Green Deployment using DNS

October 3, 2022 · 8 min · Mohibul Hassan Chowdhury

September  3

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

September 26, 2022 · 3 min · Mohibul Hassan Chowdhury

Git troubleshooting : 6 helpful command with explanations

September 15, 2022 · 2 min · Mohibul Hassan Chowdhury

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

September 1, 2022 · 4 min · Mohibul Hassan Chowdhury

August  1

Day 53: Processing Http Request Asynchronously using CompletableFutures

August 17, 2022 · 3 min · Mohibul Hassan Chowdhury

July  1

Day 52: Async Processing HttpRequest’s using ExecutorCompletionService

July 26, 2022 · 4 min · Mohibul Hassan Chowdhury

May  3

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

May 28, 2022 · 3 min · Mohibul Hassan Chowdhury

Day 50: Marker interface and it’s uses

May 21, 2022 · 4 min · Mohibul Hassan Chowdhury

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

May 6, 2022 · 4 min · Mohibul Hassan Chowdhury

April  1

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

April 11, 2022 · 7 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

March 16, 2022 · 3 min · Mohibul Hassan Chowdhury

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

March 1, 2022 · 6 min · Mohibul Hassan Chowdhury

February  4

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

February 24, 2022 · 8 min · Mohibul Hassan Chowdhury

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

February 14, 2022 · 4 min · Mohibul Hassan Chowdhury

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

February 11, 2022 · 2 min · Mohibul Hassan Chowdhury

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

February 3, 2022 · 4 min · Mohibul Hassan Chowdhury

January  4

Day 40: Generator implementation using custom Iterator and Threads.

January 27, 2022 · 1 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

January 5, 2022 · 1 min · Mohibul Hassan Chowdhury

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

January 5, 2022 · 2 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

December 6, 2021 · 1 min · Mohibul Hassan Chowdhury

Advent of Code Day 02

December 2, 2021 · 1 min · Mohibul Hassan Chowdhury

Advent of Code Day 01

December 1, 2021 · 1 min · Mohibul Hassan Chowdhury

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

December 1, 2021 · 1 min · Mohibul Hassan Chowdhury

November  4

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

November 25, 2021 · 2 min · Mohibul Hassan Chowdhury

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

November 17, 2021 · 1 min · Mohibul Hassan Chowdhury

Day 31: Compressing and decompressing text with Deflater and Inflater

November 10, 2021 · 2 min · Mohibul Hassan Chowdhury

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

November 4, 2021 · 1 min · Mohibul Hassan Chowdhury

October  3

Day 29: ParameterizedTest and MethodSource for repeated test inputs

October 28, 2021 · 1 min · Mohibul Hassan Chowdhury

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

October 22, 2021 · 1 min · Mohibul Hassan Chowdhury

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

October 14, 2021 · 2 min · Mohibul Hassan Chowdhury

September  5

Day 26: Writing a method to retry another method execution

September 30, 2021 · 2 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

September 14, 2021 · 1 min · Mohibul Hassan Chowdhury

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

September 8, 2021 · 1 min · Mohibul Hassan Chowdhury

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

September 6, 2021 · 1 min · Mohibul Hassan Chowdhury

August  6

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

August 31, 2021 · 1 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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

August 17, 2021 · 1 min · Mohibul Hassan Chowdhury

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

August 13, 2021 · 1 min · Mohibul Hassan Chowdhury

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

August 6, 2021 · 1 min · Mohibul Hassan Chowdhury

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

August 3, 2021 · 1 min · Mohibul Hassan Chowdhury

July  10

Day 15: Batching files and moving them using intStream

July 27, 2021 · 1 min · Mohibul Hassan Chowdhury

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

July 23, 2021 · 1 min · Mohibul Hassan Chowdhury

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

July 19, 2021 · 1 min · Mohibul Hassan Chowdhury

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

July 14, 2021 · 1 min · Mohibul Hassan Chowdhury

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

July 9, 2021 · 1 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

Day 9: Functional interface

July 5, 2021 · 1 min · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

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 · Mohibul Hassan Chowdhury

Day 6: For Loop vs Foreach Loop Performance, and Why My First Benchmark Was Misleading

July 1, 2021 · 2 min · Mohibul Hassan Chowdhury

June  5

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

June 30, 2021 · 1 min · Mohibul Hassan Chowdhury

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

June 29, 2021 · 1 min · Mohibul Hassan Chowdhury

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

June 28, 2021 · 1 min · Mohibul Hassan Chowdhury

Day 2: Getting the last element of a Stream.

June 27, 2021 · 1 min · Mohibul Hassan Chowdhury

Day 1: Checking Whether a String Matches One of Several Values

June 26, 2021 · 2 min · Mohibul Hassan Chowdhury