Archive 2026 (6)March 23rd - The Curious Case of Enum and Map Serialization (Dev, Java, Vavr)March 14th - tdocker: A Terminal UI for Everyday Docker Commands (Dev, Docker)February 24th - Implementing a PID Controller in Java (Dev, Java)February 14th - Writing JDK8-Compatible Libraries with JPMS Support (Dev, Java)January 27th - Implementing Efficient Last Stream Elements Gatherer in Java (Dev, Java)January 6th - Avoiding Fake Drift in Unit Tests (Dev, Java)2025 (2)July 15th - Accidental Time Travel with WireMock and SimpleDateFormat (Dev)April 6th - Project Reactor: Thread-Locals and Context Propagation (Dev, Reactive)2024 (1)June 1st - Has my JVM Lost Exception Stacktraces?! (Dev, Java)2023 (1)June 12th - Nulls Against Collectors (Java)2022 (1)March 14th - How to Stop a Java Thread Without Using Thread.stop()? (Dev, Java)2021 (4)July 9th - Kotlin’s “internal” Modifier and Java Interop (Dev, Java, Kotlin)May 18th - Java 16’s Stream#mapMulti(): Better than flatMap? (Dev, Java)February 23rd - Improving Java’s Visibility Modifiers with ArchUnit (Dev, Java)January 16th - Careful: CompletableFuture.applyToEither and Exceptions (Dev, Java)2020 (10)November 22nd - PIT Mutation Testing with GitHub Actions & Pages (Automation, Dev, Java)November 8th - GitHub Actions, reveal.js, and Automating the PDF Conversion (Automation, Dev)August 16th - Spring’s Lightweight JPA/Hibernate Alternatives (Dev, Java)May 26th - Explaining Event Sourcing with Data Structures (1/3) (Dev, Java)March 9th - Busy Developers’ Guide to Modern Java (9-26) (Dev, Java)March 2nd - Backward-Compatible Thread#onSpinWait with MethodHandles (Dev, Java)February 23rd - Quarkus – A New Age of Modern Java Frameworks is Here (Dev, Java, Quarkus)February 16th - Parallel Collection Processing: With Parallel Collectors (3/3) (Dev, Java)February 8th - Parallel Collection Processing: Leveraging Batching (2/3) (Dev, Java)January 25th - Parallel Collection Processing: Without Parallel Streams (1/3) (Dev, Java)2019 (12)November 13th - Preview vs Experimental vs Incubating Features in Java (Dev, Java)November 5th - Improving CompletableFuture#allOf/anyOf API Java Methods (Dev, Java)September 18th - Java 13 String API Updates (Dev, Java)July 25th - The Ultimate Guide to Java Stream API Collectors (Dev, Java)July 22nd - The Curious Case of JDK9 Immutable Collections (Dev, Java)July 7th - Leveraging Intersection Types in Java (Dev, Java)June 7th - CompletableFuture: thenApply vs thenApplyAsync (Dev, Java)April 28th - Streaming Java CompletableFutures in Completion Order (Dev, Java)March 31st - Java Stream API was Broken Before JDK10 (Dev, Java)March 11th - Think Twice Before Using Stream#generate in Java (Dev, Java)March 7th - Java 12 String API Updates (Dev, Java)February 9th - A New JDK12 Stream API Collector – Collectors#teeing (Dev, Java)2018 (16)December 30th - Building a Shuffling Stream Spliterator in Java (Dev, Java)October 26th - Revisiting the Template Method Design Pattern in Java (Design Patterns, Dev, Java)September 29th - Kotlin Collections API Performance Antipatterns (Dev, Kotlin)September 23rd - Java 10 Immutable/Unmodifiable Stream API Collectors (Dev, Java)September 18th - Java 11 String API Updates (Dev, Java)September 17th - The Ultimate Guide to the Java Stream API groupingBy() Collector (Dev, Java)September 10th - Stackwalking in Java with StackWalker and Stream API (Dev, Java)September 2nd - Implementing a Sliding Window Stream/Spliterator in Java (Dev, Java)August 21st - CompletableFuture Timeouts in Java (Dev, Java)August 14th - Effectively Sealed Classes in Java (Dev, Java)August 11th - Hamming Error Correction with Java and Vavr – part 3 (Dev, Java, Vavr)July 25th - Leveraging Lambda Expressions for Lazy Evaluation in Java (Dev, Java, Scala)July 14th - JDK9’s ForkJoinPool Upgrades (Dev, Java)April 29th - Kotlin: Beware of Java Stream API Habits (Dev, Java, Kotlin)February 18th - Kotlin’s java.util.Optional API Equivalents (Dev, Kotlin)January 5th - Multidimensional Arrays vs Method References in Java (Dev, Java)2017 (10)December 13th - Java 8 – The Bad Parts (Dev, Java)December 3rd - Kotlin Type Inference Foot-Guns with Lambdas (Dev, Kotlin)October 25th - Hamming Error Correction with Kotlin – part 2 (Dev, Kotlin)October 15th - Hamming Error Correction with Kotlin – part 1 (Dev, Kotlin)September 24th - Sneakily Throwing Exceptions in Lambda Expressions in Java (Dev, Java)September 15th - Maintaining PriorityQueue Order with Java Streams (Dev, Java)September 5th - Bypassing Kotlin’s Null-Safety (Dev, Kotlin)August 27th - Idiomatic Peeking with Java Stream API (Dev, Java)August 23rd - Vavr Collections and Java Stream API Collectors (Dev, Java, Vavr)August 18th - “Hello, World” a.k.a. Done > Perfect (Other)Plugin by Oliver Schlöbe If you enjoyed the content, consider supporting the site: