In this new article series, we explore the functional programming language paradigm: what it is, how it differs from other paradigms, and what are the advantages of structuring your programs in a functional manner. We will explore all these topics through the lens of creating a brand-new functional programming language from scratch, and seeing how the constraints of functional programming shape…
Jilt, my Java library for generating Builder pattern classes, had several new releases in recent months. The latest changes include copying JavaDocs to setter methods, allowing placing the Builder annotation on abstract methods, handling checked exceptions, and making it possible to use the toBuilder attribute of the Builder annotation with Lombok's Getter annotation.
Sonatype has deprecated the Legacy OSSRH service that was used to publish Java projects to Maven Central, and turned it off completely on June 30, 2025. The Central Portal was introduced as the new way to publish Java libraries to Maven Central. In order to migrate your Gradle project to this new way of publishing, you need make a few changes to your build scripts and configuration. This article…
Jilt, my Java library for generating Builder pattern classes, continues to evolve with new features and improvements. The latest releases, 1.8 and 1.8.1, bring incremental processing support for Gradle, better code coverage handling, and a fix for recursive generic type bounds.
Slack (or one of its clones) has become an indispensable tool at many companies. In this article, I outline a few tips that help me make the most out of it, while avoiding its many pitfalls.
Jilt, my Java library for generating Builder pattern classes, keeps receiving more attention, and thus more feature requests and bug reports. The latest release, 1.7, addresses several raised issues: easier exclusion of the Builder generated code from code coverage, better support for changing the Builder class name with meta-annotations, and a fix for using toBuilder on a class with a private…
The Gradle build system makes it very easy to use the JMH library to write benchmarks for your Java code. However, one tricky thing when combining Gradle and JMH is the ability to run a single benchmark when invoking your build. In this article, I'll show a simple setup that, with just a few lines of code in your build script, allows you to easily select what benchmark you want to invoke when…
In the fifteenth part of the Truffle tutorial, we implement exception handling - throwing them, catching them, and making sure they provide the correct stack traces. Along the way, we will learn about new Truffle concepts like source sections, stack trace elements, and more.