(Ab)using Java 8 FunctionalInterfaces as Local Methods

If you're programming in more advanced languages like Scala or Ceylon, or even JavaScript, "nested functions" or "local functions" are a very common idiom to you. For instance, you'll write things like fibonacci functions as such: def f() = { def g() = "a string!" g() + "– says g" } (Question from Stack Overflow … Continue reading (Ab)using Java 8 FunctionalInterfaces as Local Methods

A Very Peculiar, but Possibly Cunning Kotlin Language Feature

This has caught me by surprise. After studying the Kotlin language to learn about how to best leverage this interesting new language for jOOQ, I stumbled upon this puzzler. What do you think the following program will print? fun main(args: Array) { (1..5).forEach { if (it == 3) return print(it) } print("done") } Well... You … Continue reading A Very Peculiar, but Possibly Cunning Kotlin Language Feature

The Mute Design Pattern

Have you been writing a lot of code following the Mute-Design-Pattern™ lately? E.g. try { complex(); logic(); here(); } catch (Exception ignore) { // Will never happen hehe System.exit(-1); } There's an easier way with Java 8! Just add this very useful tool to your Utilities or Helper class: public class Helper { // 18395 … Continue reading The Mute Design Pattern

An Ingenious Workaround to Emulate an Application of Union Types in Java

Before I move on with the actual article, I'd like to give credit to Daniel Dietrich, author of the awesome vavr library, who has had the idea before me: https://twitter.com/danieldietrich/status/699633269202149377 Contravariant Generic Bounds It all started with a tweet: https://twitter.com/lukaseder/status/699588908095508480 I wanted to do something like pattern-matching a common super type of a set of … Continue reading An Ingenious Workaround to Emulate an Application of Union Types in Java

jOOQ Tuesdays: Glenn Paulley Gives Insight into SQL’s History

Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. I'm very excited to … Continue reading jOOQ Tuesdays: Glenn Paulley Gives Insight into SQL’s History

Dear API Designer. Are You Sure, You Want to Return a Primitive?

Some APIs are set in stone. For instance, the JDK's. Or public APIs, like the one between a database and a database client (e.g. JDBC). This makes designing such APIs rather difficult as a lot of thinking needs to be done prior to publishing an API. Which means that being defensive when designing the API … Continue reading Dear API Designer. Are You Sure, You Want to Return a Primitive?

The 5 Golden Rules of Giving Awesome Customer Support

This is usually a tech blog, but every now and then, we make an exception when there's something important to say. Today, I'm going to criticise a lot of our industry's understanding of support. Who is this article for? It's for every software engineer giving support to users and/or customers, and every manager who works … Continue reading The 5 Golden Rules of Giving Awesome Customer Support

Using Oracle AQ via Java 8 Streams

One of the most awesome features of the Oracle database is Oracle AQ: Oracle Database Advanced Queuing. The AQ API implements a full fledged, transactional messaging system directly in the database. In a classic architecture where the database is at the center of your system, with multiple applications (some of which written in Java, others … Continue reading Using Oracle AQ via Java 8 Streams