my blog. for you.

Let’s talk digital.

I’m an independent IT consultant and entrepreneur in the Internet and software business. I’m interested in design, enterprise applications, web apps and SaaS products. I design and develop business solutions and applications. I help companies in terms of software quality and knowledge transfer, e.g. with Angular and Spring Boot.

Hexagonal Architectures: @Column(nullable = false) vs @NotNull in Java Applications

Recently, I came across a small and common, but all the more interesting, hands-on example of why a hexagonal architecture can help with making both the architecture and the code of an application more understandable, approachable, and maintainable. I won't be going into any details about the concept of and ideas behind hexagonal architecture here. The gist is summarised quite nicely in this quote from Tom Homberg's article on Hexagonal Architecture with Java and Spring: The main feature of “Hexagonal Architecture”, as opposed ... Read more

Excalidraw: Shapes for UML & ER Diagrams

Excalidraw is a fairly new (having started in January 2020) virtual whiteboard software for creating diagrams with a hand-drawn aspect. I really like the aesthetics of diagrams created with Excalidraw. They have a natural feel and elegance to them. However, when recently revising some of the diagrams for Stratospheric – From Zero to Production with Spring Boot and AWS I found Excalidraw to be lacking shapes for UML & ER diagrams. I know, not everyone is fond of those, but if you keep ... Read more

A Catalogue of Design Patterns

Recently, I came across this well-structured as well as visually appealing catalogue of software design patterns on Refactoring.Guru. The subject of design patterns can be a somewhat dry, unwieldy one. Hence, using visuals and metaphors can come in handy when explaining both the general idea behind design patterns and specific patterns alongside with their use cases. Refactoring.Guru does a great job not only at explaining the origin and purpose of and rationale behind design patterns and pattern languages but also at describing each ... Read more

Keeping a Record of Software Architecture Decisions

The need for asynchronous communication in organisations has become particularly obvious since 2020, when remote work and distributed work environments rapidly became the default setting for knowledge workers. Asynchronous communication essentially means that instead of exclusively communicating objectives, goals and the way by which to achieve them in-person (i.e. synchronously with everyone involved present at the same time - whether on-site or in a virtual space such as Slack or Zoom) we try and keep a digital record of decisions, the decision ... Read more

Cloud Design Patterns

In the past few months, I've been working a lot with distributed applications and more complex cloud architectures, both in terms of Stratospheric - From Zero to Production with Spring Boot and AWS (the eBook I'm currently writing together with Tom Hombergs and Philip Riecks) and client work. Microsoft's library of Cloud Design Patterns (as previously mentioned in this blog post) is a collection of cloud-related software and infrastructure design patterns that can help you with weighing up the merits of common ... Read more

Five Articles on Software Quality and Design Patterns

This week I'd like to point you to five articles I previously posted on this blog and from which I think that they're as relevant as they were at the time. The first three are about general software design principles, software architecture and software quality while the final two refer to specific best practices and common design patterns for Angular: Writing Disposable Code, Not Reusable Code (November 06, 2016) What Causes Over-engineering and How Can You Prevent It? (April 16, 2017) Less Is More ... Read more

API-First Development with Spring Boot and Swagger at Reflectoring

When I recently had to look into some of the specifics of using Swagger and OpenAPI for designing an API specification and generating a Spring Boot application skeleton from that specification (using OpenAPI Generator) I came across this very useful and comprehensive article on the subject on the Reflectoring blog: API-First Development with Spring Boot and Swagger From creating an API specification with the Swagger editor to generating code (with the OpenAPI Generator Maven plugin, specifically) and implementing the generated interfaces the article ... Read more

The Mother of All Leaky Abstractions: The 500-mile Email

In last week's musings I complained about leaky abstraction on two counts, which reminded me of what in my opinion must be the mother of all leaky abstractions: The notorious 500-mile email. Impedance mismatches and TCP connections seeping through the cracks of the latest reactive programming frameworks certainly at times are difficult to deal with but the actual underlying transmission protocol of the relativistic universe shining through when trying to send an email? It can't get any better than that ... Read more

Musings of a Greybeard on the State of Software Engineering

Two days ago software engineer and fellow blogger Tom Hombergs asked on Twitter if software development had grown harder over recent years, to which I replied: "Incoherent ramblings of a greybeard (without a beard, which is weird; these words rhyme, which is even weirder ...), who has seen at least 3 fat-client-thin-client cycles (the standard time unit in software architecture): As usual it depends. Just a few examples:" For the purpose of this blog post I just deemed it more sophisticated to call ... Read more

Repost from 16 June 2020: COVID-19 Tracing App for Germany

Repost from 16 June 2020: German COVID-19 tracing app available now. Read more
Next Page »