Start Here!
Hi, I’m Emanuel Trandafir, a Java developer from Romania. I have a strong passion for clean code, software design, and unit testing. Outside of work, I enjoy sports, specifically rock climbing. While I used to run long distances, I’ve now switched to the thrill of climbing.
Welcome to my blog where you’ll find anything from hands-on articles about popular Java topics to language-agnostic articles about best practices, clean code, software design, and unit testing.
In addition to informative content, I also enjoy getting into technical discussions and hearing different perspectives. That’s why I encourage my readers to be active and leave comments on my articles.
Let’s engage in thought-provoking conversations and learn from one another!
If you think this is the place for you, subscribe to my blog today. You’ll receive new and informative articles straight in your inbox!
Functional Programming
- Functors And Endofunctors Examplined in 3 Minutes
- Monoids in Java: Functional Programming for O.O.P. Developers
- Monoids Explained for Dummy F.P. Developers (Such as Myself)
- Three Exception-Handling Alternatives Inspired by Functional Programming
- The 3 Ways Of Passing Functions in Functional Programming
- Functional-Style Java vs. Clojure
- Build An Expressive Domain With Monads And Polymorphism
Java
- Misleading Usage of @Column(nullable=false)
- From a Lombok Christmas Tree To True Java Encapsulation
- Replace Lombok’s @Builder with Fluent Setters
- Pros and Cons of Java Optional
- Records Are Here! Can We Remove Lombok Already?
- These 3 Lombok Annotations Might Skyrocket In Popularity After Java 17 Migration
- My 5-Step Checklist When Switching From Stream to ParallelStream
- Polymorphic Stream Collector In Java
- All 13 Ways to Consume a Stream in Java
Software Design
- Quit Believing In Framework “Magic”!
- The “Secret” Design That Leads To Complete Framework Independence (Hexagonal Architecture / Clean Architecture)
- Each of the SOLID Principles Explained in Less Than 20 Seconds
- Component Cohesion Principles Explained for Junior Developers
- Uncle Bob’s Advice on Stability and Abstraction
- Explaining the Open-Closed Principle to the Rubber Duck
- The Ying And Yang Of Software Development
(Coupling, Cohesion, Single Responsibility Principle) - Lightweight Strategy Pattern using Lambda Functions
- Static Methods in Java: 5 Challenges and 1 Advantage
- O.O.P. and Functional Programming in 5 Lines Of Code
- The Dark Side of Primitive Obsession: Five Harmful Impacts
- Uncle Bob, We’ve Failed You!
(Clean Architecture, Usecase-Driven Design) - Build An Expressive Domain With Monads And Polymorphism
- The Decorator Pattern in 3 Minutes
Unit Testing
- How SOLID are Your Unit Tests?
- The Art of Writing Beautiful Unit Tests
- Unleash The True Potential Of JUnit5 And B.D.D.
(JUnit5’s @ParameterizedTest, @CsvSource and ArgumentConvertor) - Streamline Your Testing Workflow with JUnit 5 Dynamic Tests
(JUnit5’s Dynamic tests and @TestFactory) - Java’s AssertJ: The Secret Weapon for Painless Testing
(AssertJ — unit testing library) - The Anatomy Of Mocks In Unit Testing
(Mocks vs Stubs vs Fakes) - Testing Done Right: Focus on What Matters
- Write Tests That Tell a Story
(JUnit5’s @Nested annotation) - JUnit5 Callbacks in Less Than 3 Minutes