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.

Inheriting Properties for Lombok @Builders and JPA Entities

Lombok is one of those helpful developer tools for the Java language ecosystem that streamline (or even do away with entirely) the more tedious and mundane tasks in software development. Lombok in particular vastly reduces the boilerplate code Java developers have to write by providing annotations that have code for common structures and patterns such as constructors, getters and setters, and builders automatically generated. While tremendously helpful, sometimes edge cases can occur when working with theses kinds of abstractions and as a ... Read more

Bootify: Rapid Prototyping for Spring Boot

Bootify is a rapid prototyping and code generation tool for Spring Boot that aims at improving developer experience for when getting started with a new Spring Boot application. While of course there is Spring Initializr, which serves a similar purpose, Bootify not just generates a minimal Spring Boot application with the desired dependencies but, on top of that and amongst other features, also adds database schema and model generation, REST API and CRUD capabilities, and front-end code generation. With those features, Bootify is ... Read more

Linda Liukas – Programming Playgrounds @ beyond tellerrand Düsseldorf 2022

At this year’s iteration of beyond tellerrand Düsseldorf, Linda Liukas gave this fascinating opening talk on her ideas and concepts for a reimagined programming education: 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

Performing Effective Code Reviews – A Checklist

A few years ago, software architect Surender Reddy Gutha compiled a - still quite relevant - Code Review Checklist. All too often, when performing code reviews, we as software engineers tend to focus on minute details such as code formatting rather than the big picture, non-functional requirements, or architecture and security considerations. Perhaps, the problem already originates with the term code review: Rather than reviewing code we are - or should be - reviewing the resulting software and the impact code changes ... Read more

endoflife.date – Dataset with End-of-life Dates for Products

Recently, I came across endoflife.date, which is a quite useful database of product end-of-life dates. While it also includes hardware products (e.g., various iPhone models), its current main focus is software products, in particular those used in (enterprise) software development, such as Java, Spring, or Angular, or infrastructure and runtime environments like Docker or the Apache HTTP Server. A comprehensive, searchable collection of lifetimes for library and framework versions can come in handy when assessing - and potentially improving - the future ... Read more

Java Language Features Introduced From Versions 8 Through 17

The Java programming language and the Java Virtual Machine (JVM) are known for being very stable and favouring compatibility over new language-level features. This focus on stability arguably is one of the reasons why Java is so popular with larger companies, particularly those of the enterprise variety, where reliability, maintainability and a long-term outlook are key and typically more important than the latest and greatest features. However, starting in 2017, with the Java release cycle changed to rapid 6-months iterations, from the previous ... Read more

What is a (business) process, actually?

The terms process and business process, in particular, are sometimes used lightly and without thinking too much about what those terms actually mean. Drawing upon and thinking in terms of the concept of a value chain (i.e., a set of activities designed to create a product or service that has value to a customer) some time ago I came up with this definition of what constitutes a process, not just when it comes to business and market value, but also with regard ... 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
Next Page »