Hello. I am a passionate Groovy and Java developer based in Tilburg, The Netherlands. My goal is to write software, like Pixar makes movies, BMW makes cars, Bang & Olufsen makes audio and TV systems and Apple makes computers and devices: clean, elegant, user-centered and high quality.

My name is Hubert A. Klein Ikkink. Not a very common name, right? To make things easier I just picked the first letters of my firstname and surname and came up with haki. So there you have it, now I am known as Mr. Haki or mrhaki for short. The following Groovy code shows this:

assert ['Hubert', 'Alexander', 'Klein', 'Ikkink']
  .inject('mr') { nickname, name -> nickname + name[0].toLowerCase() }
  == 'mrhaki'

Or in Clojure code:

(assert
  (= "mrhaki"
    (reduce
      (fn [nickname name] (str nickname (clojure.string/lower-case (first name))))
          "mr"
          ["Hubert" "Alexander" "Klein" "Ikkink"])))

Or in Kotlin code:

assert(
  listOf("Hubert", "Alexander", "Klein", "Ikkink")
    .fold("mr") { nickname, name -> nickname + name[0].toLowerCase() }
        == "mrhaki"
)

And finally the Java code:

assert List.of("Hubert", "Alexander", "Klein", "Ikkink")
  .stream()
  .reduce("mr", (nickname, name) -> nickname + Character.toLowerCase(name.charAt(0)))
  .equals("mrhaki")

In 2009 I started writing blog posts about Groovy with the name Groovy Goodness. These posts contain small snippets of code explaining core and exotic features of the Groovy language. During the years I wrote about subjects like Grails, Micronaut, Gradle, Spock, Clojure and Asciidoctor.