Posts Code About
  • Apr 16, 2021 • SOFTWARE-ENGINEERING

    Amortizing Software Rewrites: An Evolutionary Approach

    This post I have written and published with a colleague during my time at Thoughtworks. Please find it here: thoughtworks.com/en-de/insights/blog/amortizing-software-rewrites-evolutionary-approach


  • Dec 26, 2020 • SOFTWARE-ENGINEERING

    Bringing vision into a code base

    This post is about how to inject and persist architectural vision in a code base, based on a recent experience. High-level approach to restructure and refactor a messy code base Persist architectural vision to outlive people and team changes and move the code in a single direction. Preface: The tale of my own legacy Some code comes with ...


  • Sep 20, 2017 • GOLANG

    Bubble up errors in Golang

    One problem I often encounter is errors without any context. If an arbitrary method returns an error “invalid character ‘}’ after object key”, you will have to dive down the stack until you find the exact place the error happened. Therefore whenever you receive an error and you decide to not handle it, but instead return it to the caller of your...


  • Oct 12, 2016 • JAVA

    Context Aware Java Executor and Spring's @Async

    Recently I came across the problem of ThreadLocal context in multithreaded environment. If the Thread that handled a request uses an Executor to asynchronously execute tasks, the ThreadLocal context is lost and information such as requestId will be missing in the logs. We can solve this using the Decorator pattern: Wrap Runnable to preser...


  • Jan 12, 2015 • GOLANG

    Visualize call trees in a microservice architecture

    Disclaimer 2020/2026: Distributed tracing is provided by various mature libraries, prominently by the standard OpenTelemetry. Please consider these before implementing anything yourself. In a microservice architecture, one request can lead to multiple log entries distributed across services. One client request can cause multiple internal reque...


  • Sep 14, 2014 • GOLANG

    Simple JSON in Golang

    Simplejson is an imitation of Java’s json-simple for the Go language. It allows you to access JSON data without the overhead of predefining a model or casting elements manually. Therefore it is useful, whenever you want to get data from different schemas in a quick and clean way. It additionally provides handy error handling, as well as segmente...


  • Sep 8, 2014 • ANDROID

    Model Binding for Android

    There are tons of approaches to update the UI when data changes or the other way round, in short: model binding. In this post we will investigate four possible implementations of a one-way binding and compare their performance in a series of tests. Different code snippets provide an overview of the complexity when applying the approaches to a r...