Blog & Articles

Blog Post

Is Domain-driven Design overrated?

Domain-driven design (DDD) is a useful approach that provides excellent guidelines for modeling and building systems, but it is a means to an end, not an end in itself. While the concepts are valid, you lose a lot if you limit yourself to using them only: There actually is a life beyond DDD.

Article

What tracks do we leave behind with technology?

Bei INNOQ setzen wir uns immer mehr mit KI und Machine Learning auseinander, allerdings mit ihrem sinnvollen Einsatz bei unseren Kunden und Projekten. Beste Voraussetzungen also für einen spannenden Diskurs.

Blog Post

Just add Code (Part 1)

Using Hotwire Stimulus for Progressive Enhancement with Web Components

Blog Post

Kurzlebige Branches in Git

Während eines Kundenprojekts mussten fast durchgehend sehr umfangreiche Oberflächen mitsamt Backend implementiert werden, was zu Beginn in sehr großen Pull-Requests und Merge-Konflikten resultierte. Im Laufe der Zeit haben wir mehrere Branching-Strategien verwendet, um diese Herausforderungen in den Griff zu bekommen.

Blog Post

Turning a group of strangers into a team

A testimonial how five foreigners became a team via Remote Mob Programming in less than a day.

Blog Post

Defect Analysis using pandas

Using standard Data Science tools from Python to track bugfixing activities

Blog Post

Progressive Enhancement with Hotwire

A REST-based backend with a JavaScript monolith on top – that’s todays de-facto standard for web applications. With Hotwire you can build much more lightweight web applications, that both inherit the advantages of SPAs and avoid their disadvantages. In this blog post we’ll give an overview of Hotwire.

Article

Remote Mob Programming at INNOQ

At INNOQ, some teams successfully use the methodology Remote Mob Programming in customer projects, some of them even for more than two years. We asked four teams what their experiences with this particular method are and have been.

Blog Post

Der INNOQ Technology Day

Was wir auf unserer ersten Online-Konferenz gelernt haben

Article

Mit Git die Vergangenheit manipulieren

Nachdem wir uns in der letzten Kolumne mit Grundlagen von Git auf der Kommandozeile beschäftigt haben, wollen wir uns nun einige erweiterte Konzepte, vor allem rund um die nachträgliche Manipulation der Historie, anschauen.

Article

Es muss nicht immer grafisch und klickbar sein

In dieser Kolumne geht es um Git. Genauer gesagt die Benutzung von Git auf der Kommandozeile. Neben Grundeinstellungen und vielen Kommandos wird hier und da auch ein Trick vorgestellt, um die Benutzung zu erleichtern.

Blog Post

Deploying a WebAssembly smart contract on Oasis Ethereum

Article

Domain-driven Design und Bounded Context

Die Konzepte von DDD und Bounded Context sind in der Praxis komplizierter, als es auf den ersten Blick erscheint.

Blog Post

Innovation in the web without sacrificing accessibility

We’ve truly stretched the boundaries of what is possible on the web. However, to do this we’ve sacrificed semantic HTML and made our applications inaccessible to a huge amount of different users. Instead of breaking the foundation of the web, we should consider this as an opportunity: how can we implement applications in a way that works for any user who might come along and want to interact with it?

Article

The art of software reviews

Probleme und Risiken in Software zielsicher identifizieren

Article

Pragmatic RESTful HAL APIs

The Hypertext Application Language (abbr. HAL) is a media type extension to plain JSON/XML – with its introduction in 2012 – no longer a newcomer and used already in many projects with Hypermedia APIs. A good time then to say a few words of praise, also to show obstacles and what solutions we found in daily work with HAL APIs - for implementing clients as well as for the server side.

Blog Post

NO SOFTWARE

Technische Lösungen und digitale Transformation prägen das Geschäftsleben mehr denn je. Könnte manchmal NO SOFTWARE die bessere Lösung sein?

Article

Smart Contracts in Rust

Sicherer programmieren in Ethereum

Article

Die VENOM Story

Sie erfahren anhand eines (komplett anonymisierten), realen Beispiels, wie die inkrementelle Modernisierung eines historisch gewachsenen Systems funktionieren kann. Das riesige, gewucherte System VENOM von >2 Mio Lines-of-Code zu modernisieren oder komplett neu zu schreiben - vor dieser schweren Entscheidung stand die (fiktive, aber sehr realitätsnahe) Firma SAMM Inc.

Blog Post

Tests Granularity

In two previous posts we discussed the benefits of automated tests and the properties of a good test. So far we were trying to avoid differentiating the tests in any way. This time we want to address one way how tests can be classified: tests granularity.

Article

MLOps: You train it, you run it!

CI/CD & Operations für Machine Learning

Article

Software Reviews

Die initiale Architektur und Infrastruktur eines Systems wird üblicherweise kompetent und sorgfältig geplant und umgesetzt, bei der iterativen Weiterentwicklung auf Clean Code und Code Reviews geachtet. Viele kleine über die Jahre getätigte Änderungen an der Software ergeben dann aber nicht immer ein in sich schlüssiges Gesamtbild. Spätestens wenn sich die Time-To-Market verschlechtert und eine Anwendung nicht mehr alle notwendigen Qualitätsanforderungen erfüllt sollte ein umfassendes Software Review in Erwägung gezogen werden.

Blog Post

Good arguments for SPA frameworks

I love SPAs when they are used with a clear purpose. I hate them when they are not. This blog post tries to explain my personal conflict.

Article

Gut gesiebt

Von Usability und Features – Service Meshes im Vergleich

Article

Modernes funktionales Programmieren in Java

Erfahrene Java-Entwickler*innen können viele der Entwurfsmuster des „Gang of Four“-Buches aus dem Stand zitieren, identifizieren und anwenden. Trotzdem stehen diese praktisch seit der Erscheinung des Buches unter Kritik: da sie teils vage definiert sind, strotzen „moderne“ Codebasen nur so von Singletons, Factories und Buildern. Auf der anderen Seite stehen die Anhänger*innen der funktionalen Programmierung, die sich gerne über die objektorientierten Patterns lustig machen. Die Wahrheit liegt wie so oft in der Mitte: seit Version 8 lassen sich auch in Java die cleveren Gedanken aus der funktionalen Welt effektiv und komfortabel benutzen, ohne die Objektorientierung aufzugeben.