-
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...