blog podcast

The newline that cost me a day

I love bash. It’s great. The Unix principle and all of it. Today there was one invisible guest that was giving me a hardtime though. You guessed it. The newline.

Read More
21 Oct 2021

Coroutines and Quarkus

Quarkus supports Coroutines from Kotlin, but it’s not a very documented feature. What you need to do is you need to include

    implementation 'io.quarkus:quarkus-resteasy-reactive'
    implementation 'io.quarkus:quarkus-resteasy-reactive-jackson'

instead of

    implementation 'io.quarkus:quarkus-resteasy'
    implementation 'io.quarkus:quarkus-resteasy-jackson'
Read More
28 Sep 2021

XML and Jackson

XML to me represent bad developer practice. It is heavy weight and strict. Unsupportive of deviation and hence brittle. It’s something that might sound good in theory in some University but becomes your pain in practice in the real world. Still, sometimes you have to engage with this Neanderthal sibling to Json. In the JVM world you have Jackson to support you with this. In gradle something like this:

Read More
14 Sep 2021

Monitoring a PVC in Kubernetes with Prometheus

Something that I believe is a quite normal use case is that you’d want to monitor a Persistent Volume Claim (PVC) in kubernetes, to make sure that you get notified once you start running out of disk space. As a concept it sounds like something that should be supplied out of the box from Kubernetes, alas no.

Read More
17 Aug 2021

Local Docker

Let’s say that you have an application that runs in Kubernetes. Now, for whatever reason, you want to test running this application on your local machine. Maybe you even want to build a local docker image and test how that works. But let’s say that your service depends on another service in Kubernetes. Now you have a problem. You can’t start your service because it won’t be able to find the other service that is living in Kubernetes. You’ll be happy to find that circumventing this problem is not very difficult.

Read More
02 Aug 2021

Caching in Quarkus

Caching in itself doesn’t feel like a very complicated problem. You make some request, you save the result, and at some point you clear it again. Everytime I’ve had to use caching in the past though, I’ve always found the libraries more clunky and invasive than I’ve felt that they need to be.

Read More
02 Jul 2021

Vertx and Eventbus

Vertx uses an Eventbus, which is a neat way of decoupling different components inside a system. Instead of these components calling each other directly they simply send a message on the event bus and whatever system that is interested receives the message. The idea is pretty simple and not really a new one. There is a limitation though. Vertx has been built with cluster support at it’s core.

Read More
01 Jul 2021

Intellij on Ubuntu

The default mode of installing Intellij on Ubuntu seems to be as a Snap. There are definitely some advantages there, for example how easy it becomes to update the intellij version. What sometimes happens with Snaps though, which unfortunately was the case for me, is that they take a long time to startup.

Read More
18 Jun 2021

Quarkus, Netty and OpenSSL

Quarkus is built on top of Netty which is a library that can provide you with high performant asynchronous network code on JVM. One of the features that Netty supports is SSL termination. Now SSL, being cryptography, is actually quite demanding on the processor. For this reason Netty has provided two solutions. One that is using the JDK implementation for SSL and one that is utilizing JNI to call OpenSSL on your machine.

Read More
17 Jun 2021

Mocking and Kotlin

One of the good things with Kotlin is it’s accessible interoperability with Java. Being a new language though it has made some design decisions that are different from Java’s which sometimes can create boundaries in the usage across language boundaries and one of these decisions is what I want to talk about today.

Read More
16 Jun 2021