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.

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

A few random thoughts on the development of software development in recent years

Last year, I replied to Tom's question "Has software development grown harder over the last years or have I just grown sluggish?" on Twitter with these incoherent ramblings of a greybeard, who has seen at least 3 fat-client-thin-client cycles: As usual it depends. Just a few examples: Spring Webflux and the "Everything has to be reactive even if the requirements don't demand it." fad is a bane. Just recently, I've been helping a client with getting Spring 5's WebClient to work with a ... 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

Towards More Considerate and More Collaborative Code Reviews

Software engineer Dan Goslen recently published an article on how he's going to change his approach to code reviews. The most widely used organizational pattern for conducting code reviews probably is the pull request, also called merge request. This particular pattern and the tools source code management systems provides us with to support this pattern lend themselves to a review strategy that focuses on commenting on code and minute details rather than the big picture and collaboration and knowledge sharing. The goal of ... Read more

A Collection of for a Improving the UX of Signup  and  Login Workflows

Independent UX designer Erik D. Kennedy recently published an article with 15 Tips for Better Signup / Login UX on Learn UI Design - a website through which he provides acclaimed courses on both UI and UX design. The article lists general suggestions such as autofocusing on the first field (i.e. the username, or rather: email, field), immediately validating form values, or making input labels clickable, as well as more specific - but no less expedient - ones like making password requirements explicit to ... Read more
« Previous PageNext Page »