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.

Spring Cloud Gateway: Resilience, Security, and Observability by Thomas Vitale @ Spring I/O 2022

Read more

Collaboration When Developing Spring Boot Microservices by Dan Erez @ Spring I/O 2022

- At about 11 minutes in you can hear me qualify myself as "oldest man in the audience" by virtue of knowing Zuul from the original Ghostbusters movie. - Read more

Major Migrations Made Easy by Tim Te Beek @ Spring I/O 2022

I'll write a more comprehensive review of Spring I/O 2022 in Barcelona soon. Until then, I'll post recordings of some of the talks I've found most intriguing during that conference. One of those talks was given by software engineer Tim te Beek on OpenRewrite - a tool for complex source code refactoring (e.g., framework migrations, vulnerability patches, and API migrations): Mostly focused on Java for the time being, OpenRewrite is a tremendously useful tool when it comes to refactoring the source code of ... Read more

Christopher Alexander – Patterns in Architecture

Sadly, a few days ago, seminal architect and design theorist Christopher Alexander passed away. Having coined the term "pattern language" Christopher Alexander is considered the father of the pattern language movement. It is this term we as software engineers - oftentimes quite casually - refer to when we're talking about design patterns. In 1996, Christopher Alexander gave this compelling talk at the 1996 ACM Conference on Object-Oriented Programs, Systems, Languages and Applications (OOPSLA): In this talk, Alexander addresses the connection between architecture and software ... Read more

Inversion of Control vs Dependency Injection

Dependency injection is one way of implementing inversion of control - a programming principle that allows for better modularity and extensibility. Dependency injection is commonly achieved via constructor injection, field injection, or setter injection. Inversion of control is an abstract concept, which dependency injection is a realisation of. Other methods of implementing inversion of control for example include the template pattern, service discovery, delegates, events, and currying (when applying a functional programming paradigm). Read more

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
« Previous PageNext Page »