News
Code Review Anti-Patterns: How to Stop Nitpicking Syntax and Start Improving Arc...
Code reviews are expensive. If your team is spending valuable senior engineering hours arguing about semicolon placement or variab...
Rule Engine + LLM Hybrid Architectures for Safer Code Generation
AI-generated code is fast but notoriously unreliable, prone to hallucinations and security risks. This article proposes a hybrid a...
Multi-Threading in Spring Boot with ExecutorService & CompletableFuture
Most beginners understand “threads”, but they struggle to visualize how multithreading works in Spring Boot.
10 Essential Java Libraries - How Essential Are They Really?
I recently read and shared You’re Wasting Time in Java Without These 10 Libraries. I think a full-blown post is in order. The refe...
Everything You Need to Know About XML Schema Validation 1.1 in Java
The Java JDK uses a wrapped Xerces implementation for parsing. The implementation is stuck on XSD validation 1.1, which is not sup...
Testing the Untestable: A Simple Way to Handle Static Methods in Legacy Java
This is a pretty straightforward way to test untestable code.
Rethinking Encapsulation: From Private to Public by Design
Access modifiers have long been seen as essential to safe and clean code. But they’re ultimately a low-level mechanism for express...
Transitive Dependency Version Resolution in Rust and Java: Comparing the Two
You learn by comparing to what you already know. I was recently bitten by assuming Rust worked as Java regarding transitive depend...
Machine Learning in Java: Getting Started with DeepLearning4J, Tribuo, and Smile
Java has powerful tools for ML:**DeepLearning4J, Tribuo, and Smile. In this article, we’ll explore how to use these libraries, sho...
Object Creation: The Issues I Faced and the Patterns That Helped Me
In this post, I've described two usages of the GoF's creational patterns, which aren't listed in the book: improving maintainabili...
Code Smell 308 - The Key to Safer, Cleaner, More Polymorphic Code
Avoid methods that return Object, Any, or null instead of specific types. Make them fully polymorphic
