Blog

Blog Post

Why you should write automated tests

This blog post gives an overview of the most common benefits gained by writing automated tests. It starts in a place where most of the projects we’ve seen so far are: tests are written as a last step of the development process. Then it shows additional benefits that could be gained if we all gave the tests a bit more focus and care.

Blog Post

Visualizing the progress of a refactoring into a hexagonal architecture using jQAssistant

In my last project, we decided to refactor the inner structure of one of our services into a Hexagonal Architecture. It was clear that this was no task that could be done within a couple of days. During this long-running refactoring, we wanted to make our progress visible. Where are we now? What did we already have achieved? What do we still have to do? In this blog post, I describe the approach we took and how it helped us with our task.

Blog Post

Cookie-based Spring Security Session

Blog Post

Does “Broken” Agility Help?

Agile software development is often insufficiently implemented and executed. Does it help anyway?

Blog Post

Happy without a Service Mesh

It does not always have to be a service mesh. Even microservices are not a good idea per se. For good decisions we have to get a deep understanding of the problem first.

Blog Post

Domain-driven Design in the Large

A Structured Approach to DDD

Blog Post

Automating Dependency Updates with GitHub Actions

This describes setting up a GitHub Actions workflow from scratch to schedule automated dependency updates.

Blog Post

React: Lessons Learned

This article describes React from a backend programmers' perspective. It is not meant to be a tutorial, and it also does not present any new, fancy patterns or features. Rather, it is an interpretation of React with focus on shedding light on its functional aspects. Many experienced React developers appreciate the framework for being pragmatic, simple and easy to get work done with. This article unveils some of the theory behind this simplicity and shows how the core ideas behind the framework can be carried over to the lower levels of a Javascript application.

Blog Post

Injecting polyfills for missing JavaScript functions into WKWebView

Blog Post

Integral Evolutionary Organizations

Most companies face the major challenge to get as many employees as possible actively involved, that they do not only do service as a small cog in the big gear, but that they contribute actively, creatively with their various skills and abilities. In his book Reinventing Organizations [1] Frederic Laloux presents integral evolutionary forms of organization as a solution. This text presents the core ideas supported also by other sources.

Blog Post

INNOQcon Remote Edition 2020

Why two days of INNOQcon-remote edition have made my original dislike of online conferences vanish, why cyberspace is enriched by spatial audio and what advantages virtual events can still bring - a follow-up report.

Blog Post

Scraping a Docker Swarm service with Prometheus

Blog Post

Cross-platform testing of TypeScript code with Jasmine and Karma

I like TypeScript. Writing code that already underwent basic checks (i.e. typechecking) before it can even touch an execution engine is a big win in my book. In particular, TypeScript is nice because it integrates well into the broader JavaScript ecosystem and comes with batteries (i.e. types) included. Unfortunately, most test runners require extra setup to work with tests written in TypeScript. Some even require staggering amounts of configuration.

Blog Post

Using Javascript plugins in Go

There are projects, where you want to create an application, that is extensible by other parties without access to the sources iteself or re-compiling the whole binary. This concept is known as modules, plugins or features nowadays. This might be the case if you are creating a client application (e.g. to implement scripting functionality), but also if you want to have your server application extensible by third parties.

Blog Post

Effectively Working from Home

Best practices from two years in home office

Blog Post

Remote work

Last week we switched INNOQ to 100% remote work. The reason for this radical (or radical-looking) step was the spread of the novel Corona virus SARS-CoV-2, which needs to be contained. In concrete terms, this means that all our consultants will temporarily work exclusively in the home office.

Blog Post

Requirements Engineering

The priority to invest into requirements engineering often suffers in everyday life, although its importance has been proofed to be the basis to develop values for customers. The objective of this article is to recall the core definitions and statements of requirements engineering and to provide aid with links for further readings on how to apply it in practice.

Blog Post

About unit and integration tests

Blog Post

Kubernetes Probes

Kubernetes probes are for validating container health and readiness. But how should these probes be used? Do we need both? Can we share endpoints? This post tries to give some recommendations.

Blog Post

Command & Control, SAFe, Domain-driven Design, and Release Trains

Large complex projects are difficult to manage. Software release trains are one solution to coordinate such projects. But the approach is not a great fit for self-organization and modern management ideas.

Blog Post

Identification of quality requirements with Quality Storming

Collaborative modeling for a cross-skill collection and prioritization of quality requirements

Blog Post

Don’t tell me I’m not building a web application

How do we decide what technology stack that we want to use for any given project? Is it really based on how perfectly well suited the technology is to the problem at hand or do we really just want to use the technologies that we like and are comfortable with? I’m happy in my filter bubble, rendering web applications on the server and progressively enhancing them on the client. But I also recognize my bias. Do you?

Blog Post

So you want to compose some functions

Let’s say you have a list of functions and you want to compose them. Should be trivial, right? Of course it is, but maybe there’s an elegant way.

Blog Post

An Introduction to TypeScript

for Backend Development (and Java Developers)

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.