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.
Recent content on Mohibul Hassan
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.
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.
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%.
Deep dive into Java 21 Virtual Threads implementation - from continuations and heap-based stacks to mount/unmount mechanics, pinning problems, and production trade-offs.
Advanced Java concurrency - DelayQueue, ReentrantLock, Phaser with debugging techniques, monitoring patterns, and production readiness checklist.
Master core Java concurrency synchronization - CyclicBarrier, Semaphore, ThreadFactory, and BlockingQueue with production patterns, trade-offs, and real-world examples.
Master the foundation of Java concurrency - Executor, ExecutorService, ScheduledExecutorService, Future, CompletableFuture, and CountDownLatch with production patterns, trade-offs, and debugging techniques.
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.
Building a @Sensitive annotation with annotation processor to mask sensitive data in logs and stack traces - Java's answer to PHP's #[SensitiveParameter]
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.
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.
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.
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.
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 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 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 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 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 78: Java 22 - Embracing Safe Memory Allocation Using MemorySegment and Arena API - An alternative to Unsafe API
Explore Something Unsafe : Crafting a Memory allocator using Java Unsafe API
Implementing a dummy Service Oriented Architecture (SOA) service to Understand Java SPI
Java Buffered Reader and why we need to close and what will happend if we dont
Java Security: Crafting a toy TLS Server with Java Security API
Java Security: Safeguarding Data with Encryption and Keys
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.
Understanding Heap poullion in java and its causes and how to prevent it.
Measuring the performance of different array copying methods in Java using JMH
Exploring benchmarking harness in Java and how its use to understand performance
Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT
Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT
Finding memory leak by analyzing GC and memory dump using VisualVM and Eclipse MAT
Understanding how RPC and RMI works in java
Implementing a basic bloom filter to understand its concepts and usages using Java BitSet api
Using JMX to write an alert system for Java JVM OutOfMemory Error
Understanding JMX architecture and how it works. In part 2 will learn about the second layer of JMX
Understanding JMX architecture and how it works. In part 1 will learn about the first layer of JMX
Generating Heap dumps programatically by using MBeanServer and PlatformBeans to get Management information from JVM
Understanding Proxy and Dynamic Proxy in Java
Mocking void methods using ArgumentCapture and Answering
Understanding details and compare use cases of Random, ThreadLocalRandom and SecureRandom
What is zero length Array and why its in java and how its used
Blue-Green Deployment using DNS to reduce downtime of production application
Understanding java classe's static and instance initializer
git troubleshooting with helpful commands to revert, stash, split, recover commits
Understanding volatile keyword's use in incrementing a double variable and see how it behaves in multi threaded env