Posts by Category


What is Upstream and Downstream in Software Development?

3 minute read (676 words)

Wondering about what upstream and downstream means in the context of software development? This articles discusses several usages of these words and defines two simple rules to identify what is upstream and what is downstream in every context.

Build Once, Run Anywhere: Externalize Your Configuration

6 minute read (1334 words)

Software that does more than a “hello world” usually needs to be configured in some way or another in order to function in a certain environment. This article explains why this configuration must not be part of the software itself and explores som...

3 Use Cases Where Structured Log Data Really Helps

5 minute read (1192 words)

Log data should contain more than just text. This article discusses some example use cases where adding structured properties to log events helps when debugging. Get inspired to use structured logging in your own use cases!

5 Good Reasons to Use a Log Server

7 minute read (1413 words)

Logging to files and analyzing them by hand is not the way to go anymore. This article explains the reasons why a log server is the way to go for collecting and analyzing log data.

REST with Hypermedia - Hot or Not?

7 minute read (1455 words)

A discussion of what Hypermedia with REST means and a guide to decide whether hypermedia is a match for your use case.





A Random pitfall

2 minute read (521 words)

An intro on how to create random numbers in Java.





Paging with Spring Boot

11 minute read (2244 words)

An in-depth look at the paging support provided by Spring Data for querying Spring Web MVC controllers and Spring Data repositories.

Unit Testing with Spring Boot

8 minute read (1603 words)

In this tutorial we’ll learn how to build testable Spring beans and get to know the tools that Spring Boot by default imports for writing maintainable unit tests.

Loading External Application Properties in the Gradle bootRun Task

1 minute read (356 words)

Configuration parameters should not be baked into code - including the code of your build scripts. This tutorial shows how use the Gradle bootRun task to start a Spring Boot application with application parameters loaded from a properties file.


Why You Should Enforce 100% Code Coverage*

6 minute read (1244 words)

Everyone knows that aiming for 100% code coverage is bullshit. This article re-defines code coverage to make 100% a meaningful and worthwhile goal.


Publishing Open Source Releases to JCenter and Maven Central

5 minute read (1107 words)

For your open source projects to be accessible, it’s worthwile to publish them to JCenter and / or Maven Central. This article explains how to publish a release from your Bintray repository to JCenter and Maven Central.

Publishing Open Source Snapshots with Gradle

5 minute read (1044 words)

One of the most fulfilling things in open source development is getting feedback from your users. This article shows how to publish snapshots of your Java projects to to enable your users to give feedback early.

Publishing Open Source Releases with Gradle

7 minute read (1407 words)

When working on an open source Java project, you always come to the point where you want to share your work with the developer community. This article gives a step-by-step guide on how to publish your artifacts Bintray.

OpenID Connect

4 minute read (948 words)

A short introduction to OpenID Connect - the standard for Identity Management and Single-Sign-On.

Modeling Git Commits with Neo4j

5 minute read (1110 words)

A graph database is the natural way to represent a git tree. This article shows how to do this with Neo4J.

Tool-based Database Refactoring

2 minute read (582 words)

A short introduction to database refactoring and an argument why a database refactoring tool is a must-have in any project using a database with a schema.

Github’s Fork & Pull Workflow for Git Beginners

5 minute read (1036 words)

If you are new to Git and/or GitHub, it’s easy to get overwhelmed by the different workflow models you can use. This post explains the basic fork and pull workflow model that is used on a lot of GitHub repositories.