RSSAmplifier

Blog

Mohibul Hassan

Recent content on Mohibul Hassan

mohibulsblog.netlify.appRSS feed ↗105 posts

Latest posts

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

An honest retrospective on a challenge that did not happen in a clean streak, and on how learning Java slowly turned into learning how systems behave.

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

After Day 98, I thought virtual threads replaced event loops. Then I opened Netty's source code zero virtual threads. I built both models from scratch to understand when each wins. Here's what I learned about non-blocking I/O, event loops, and the real trade-offs.

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

I added .parallel() expecting near-linear speedup on 8 cores. I got 60% CPU utilization. Here's why the default spliterator gets load balancing wrong, and how a 50-line fix pushed it to 95%.

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

Deep dive into Java 21 Virtual Threads implementation - from continuations and heap-based stacks to mount/unmount mechanics, pinning problems, and production trade-offs.

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

Advanced Java concurrency - DelayQueue, ReentrantLock, Phaser with debugging techniques, monitoring patterns, and production readiness checklist.

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

Master core Java concurrency synchronization - CyclicBarrier, Semaphore, ThreadFactory, and BlockingQueue with production patterns, trade-offs, and real-world examples.

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

Master the foundation of Java concurrency - Executor, ExecutorService, ScheduledExecutorService, Future, CompletableFuture, and CountDownLatch with production patterns, trade-offs, and debugging techniques.

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

Your Java app takes so much time to start. You've tried everything, or have you? Here's how I cut startup time using techniques you probably haven't tried yet.

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

Building a @Sensitive annotation with annotation processor to mask sensitive data in logs and stack traces - Java's answer to PHP's #[SensitiveParameter]

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

Learn to build intelligent Java AI applications using Spring AI framework. Complete tutorial covering ChatClient, RAG implementation, vector databases, and AWS Bedrock integration for enterprise AI agents.

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

Ever wondered how to process gigabyte-sized files without crashing your JVM? Discover Memory Mapping a file that turn your Java application into a data processing powerhouse.

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

Ever wondered how APM tools like New Relic spy on your Java applications? Learn to build your own secret agent that infiltrates any JVM and monitors method execution times—no source code changes required.

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

That perfect Singleton you wrote? It's probably creating multiple instances in production—here's why it happens and five bulletproof ways to fix it.

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

Leveraging Google Cloud Vertex AI's Gemini 1.5 for advanced, multilingual audio transcription within a Spring Boot application, including prompt engineering, safety settings management, and confidence scoring.

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

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

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

Day 86: Building a Secure Java Sandbox with Custom Class Loaders, Process isolation and Java Platform Module System

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

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

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

Day 84: Hot Class Reload in Java – A Webpack HMR-like Experience for Java Developers using WatchService and Javax.tools api

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java SPI

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

Java Buffered Reader and why we need to close and what will happend if we dont

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

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

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

Java Security: Safeguarding Data with Encryption and Keys

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

Can a HashMap Take Null or Empty String as a Key in Java? Lets see if it can or not and how does it impact serialization.

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

Understanding Heap poullion in java and its causes and how to prevent it.

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

Measuring the performance of different array copying methods in Java using JMH

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

Exploring benchmarking harness in Java and how its use to understand performance

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

Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT

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

Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT

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

Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT

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

Understanding how RPC and RMI works in java

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

Implementing a basic bloom filter to understand its concepts and usages using Java BitSet api

Day 63: Alert system for Java OutOfMemory Error

Using JMX to write an alert system for Java JVM OutOfMemory Error

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

Understanding JMX architecture and how it works. In part 2 will learn about the second layer of JMX

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

Understanding JMX architecture and how it works. In part 1 will learn about the first layer of JMX

Day 60: Generating JVM heap dump programmatically

Generating Heap dumps programatically by using MBeanServer and PlatformBeans to get Management information from JVM

Day 59: Understanding Proxy and Dynamic Proxy in Java

Understanding Proxy and Dynamic Proxy in Java

Day 58: Mocking void methods using ArgumentCapture and Answering

Mocking void methods using ArgumentCapture and Answering

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

Understanding details and compare use cases of Random, ThreadLocalRandom and SecureRandom

Day 56: Zero length Array and Its use

What is zero length Array and why its in java and how its used

Blue-Green Deployment using DNS

Blue-Green Deployment using DNS to reduce downtime of production application

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

Understanding java classe's static and instance initializer

Git troubleshooting : 6 helpful command with explanations

git troubleshooting with helpful commands to revert, stash, split, recover commits

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

Understanding volatile keyword's use in incrementing a double variable and see how it behaves in multi threaded env