Blog

Blog Post

Traefik v2 and Mastodon, a wonderful couple!

Traefik and Mastodon are a wonderful combination. However, practical guides for Traefik v2 are rare and Mastodon dropped its guide for deployment using docker. In this blog post I will show an easy solution for setting up a Mastodon instance behind Traefik as reverse proxy with almost all required configuration made in a self-contained docker-compose file.

Blog Post

JavaScript? Yes, but in moderation

The benefits of classic architecture decisions for web applications.

Blog Post

Cloud Computing and Carbon Footprint

How vendor lock-in can harm a company’s green business plan

Blog Post

What Could Possibly Go Wrong

What could possibly go wrong if you put Clojure 1.10 and Scala 2.13 on the same classpath? We’re about to find out.

Blog Post

code-your-model

Some time ago I was looking for some simple, lightweight tool to document a complex, modularized model. I was not able to find anything that fits my requirements or expectations, so I came up with my own idea. Today, a good 15 months later, I want to introduce it to you.

Blog Post

Automating GitHub Pages Deployments with GitHub Actions

Blog Post

Animating SVG Icon Transitions

This describes options for morphing one SVG icon into another using both SMIL or CSS transforms.

Blog Post

Choose Your Docker Base Image Wisely

A while ago, I ran into a problem with my application that only occurred in production but not locally. The reason we use Docker both locally and in production is to prevent exactly that from happening. What went wrong?

Blog Post

Type checking JSX: A can of props

Blog Post

The many ways of testing Smart Contracts in Ethereum

You have implemented a smart contract for Ethereum, and now you are wondering how you can test it under real-life conditions, but without spending money in case there’s a problem? Luckily, there are test networks that can help you with this.

Blog Post

(De-)Serializing JavaScript Models with Metaprogramming

DIY abstraction for serializing and deserializing JavaScript model instances

Blog Post

Familiarity - friend or foe

Blog Post

The Perversion of Agile Metaphors

Agility is at its core a set of values. Do the typical agile metaphors actually fit the values or do they rather lead to misunderstandings?

Blog Post

How to add Swift functions as polyfills in JavaScriptCore

Reusing existing JavaScript implementations of your web app for your iOS app can be a good choice for some complex calculations. Unfortunately anything that is not part of the pure JavaScript language won’t be available. Learn in this blog post how to supply missing functionality via native code.

Blog Post

The NUMMI Factory — A Parable About Software Development

What We Can Learn from other Industries

Blog Post

Integrating Logback with JLine

Logback is a popular logging library for Java. JLine can be used to create nice shell-like applications. Combining both is not as hard as it looks.

Blog Post

No Silver Bullets - Except Continuous Delivery?

There are no silver bullets. But continuous delivery promises so many advantages that it could be such a silver bullet. So what is true: Do silver bullets actually exist or is continuous delivery overrated?

Blog Post

Verification of smart contracts

Blog Post

React App from Scratch

This blog post shows how to setup a React App from scratch with express and React Router.

Blog Post

Prometheus Counters and how to deal with them

In this article, I want you to join me on my way to understand how Counters in Prometheus work, and how to query them to get the right information.

Blog Post

When you have reached Acme

Notes on working with a minimalistic text editor/programming environment

Blog Post

Faking Surrogate Cache-Keys for Nginx Plus

Sometimes you also need to use Nginx as caching layer. Purging the cache for a resource and its variants is often a very tedious task. Surrogate Keys of other caching solutions are a better alternative but are not supported by Nginx yet. Alternatively, you can create something as powerful by combining the different dynamic dimensions of a resource to a cache key variable which then is appended to a custom cache key. This way, the * -wildcard purging of Nginx can be used to purge all cache entries related to a certain resource with a couple of map directives.

Blog Post

Structured Logging with Structured Arguments

How to make better log statements with Structured Arguments

Blog Post

Aeternity Smart Contract Deployment

Blog Post

Aeternity Smart Contract Development

Aeternity is a blockchain implementation which offers the functional language Sophia for smart contract development and a number of native components like oracles, names for addresses and state channels. The Sophia language is a strongly typed language which helps to focus on business logic during the implementation of a smart contract.