Photo by Anja Junghans on Unsplash

What is Thymeleaf?

Thymeleaf is a dynamic templating engine for serverless applications like Micronaut or Spring. It is really useful if you want to create non static content that gets generated dynamically. Or with the words of the official website:

Thymeleaf is a modern server-side Java template engine for both web and standalone environments.

Thymeleaf’s main goal is to bring elegant natural templates to your development workflow — HTML that can be correctly displayed in browsers and also work as static prototypes, allowing for stronger collaboration in development teams.

With modules for Spring Framework, a host of integrations with your favourite tools, and…

A problem that i recently had was, that i needed to read the contents of some zipped files, which i didn’t wanted to unzip into temp, because i really only needed the content as a String. I had some Zip files, which contain a Metadata.yaml file with some informations like id or title in it. I wanted to read the content of the Metadata.yaml file and put the values into a data class, which is then stored inside a HashMap.

Some of my files don’t contain the Metadata.yaml file, so to compensate that, we use the documentTitle as the id…

Photo by Petri R on Unsplash

Recently I had the problem, that I needed to log some warnings for my application. Since I normally work test driven, it was pretty important to me, that I could create some unit tests for it. My test engine is JUnit 5. I found the logging library Log4J, which has a new name since version 2 (Log4J2) and used this one.

What is Log4J2?

Apache Log4j 2 is an upgrade to Log4j, which is pretty common in the industry, that provides significant improvements over its predecessor, Log4j 1.x, …

Photo by David Knox on Unsplash

In this article, I want to talk about what Helm is, how to install and use it, and how to push its images to artifactory. This sounds like a whole lot of stuff, it actually is, but it is a really important step in CI/CD, so I will try to explain it as good as I can.

What is Helm

In short, Helm is a package manager for Kubernetes that allows developers and operators to more easily package, configure, and deploy applications and services onto Kubernetes clusters.

Helm has the opportunity to set variables for Kubernetes, which you can then assign to your…

Photo by JJ Ying on Unsplash

A few days ago, I needed to create a new Project without any templates from scratch, that should be able to use Micronaut as a serverless Framework. My application is written in Kotlin. In the end, It should work like a webserver, that gets deployed on Kubernetes. First of all, There are three key components. The first one is the Application itself. This application needs to be converted to a docker image. The next part is the Pipeline. It needs to run some automated tests and build the whole image if the tests are successful. It should also push the…

Photo by Steve Johnson on Unsplash

In this article I want to talk about mocking server responses with Wiremock. How would you test a function or a whole class, that uses a http request to get its data and processes it? You would need an actual test server with actual data on it to test it. This data should not be changed anymore, because tests would be depending on it. This would be a really bad solution, because you needed to configure a new dataset for every test and end up with a by itself useless server with even more useless data on it. …

Photo by on Unsplash

This Article is about using Jenksins REST API for getting information about the last successful build. Jenkins has no official Java/Kotlin API. This means, that we either have to use some third party Github developers java API, or just to use Jenkins REST API, that is guaranteed to work.

The Problem

I have a Jenkins Instance, on which different jobs are running. I need the git hash of the last successful build for another project.

What can I do? I can go to Jenkins, scroll down to the last successful build of a branch and click on it. The git hash is…

Setup Environment

First of all, we need to create a new Kotlin project with Gradle as a build system. The easiest way to do that is by clicking through the Project window in IntelliJ IDEA.

The second step is to configure the build.gradle.kts file so that it looks like this: I’ll explain it later.

  1. You need to add the Kotlin plugin and kotlin.kapt.
  2. Add picocli-codegen as kapt (kotlin-annotation-processor)
  3. Add picocli as an implementation
  4. Create kapt block with the argument project.
  5. Configure the jar file output by setting a manifest with the attribute Main-Class. In my case it is CheckSumKt.
  6. Exclude the…

Photo by Dominik Lückmann on Unsplash

Containerisation gets more and more important in our current live as a software developer. Docker alone brings a lot of value to the process, but you can add even more value to it by combining it with a container orchestration platform like Kubernetes. With the help of Kubernetes it is now possible to autoscale or to create a desired state of Replicasets or even LoadBalancing is possible.

To understand how this works, we need to take a look at the hierarchy on which Kubernetes is built on.

Photo by Siora Photography on Unsplash

A few days ago i had to upload a zip file to a server. At first i had trouble finding a good method to upload it, but then i decided to go with the Micronaut way, because i’m using this framework anyway. On the website were three different methods to upload the files.

Upload with StreamingFileUpload

The StreamingFileUpload uploads the whole file in small chunks and not at once. Especially with big files, this is a really important thing to have. The Syntax is quite simple. First you have the Post annotation in which we define the location of the link to upload…


Developer Experience Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store