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

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

Opinion-driven Design: Simplicity Over Flexibility

Software developer Brent Roose recently wrote a blog post on what he calls "opinion-driven design". His point his that while a mindset of "high configurability and flexibility" is undoubtedly common when it comes to the development of software frameworks and libraries, it ultimately is also misguided in most cases. In an attempt to both accommodate every possible use case and to remain in control (also known as the "Not invented here" (NIH) syndrome), framework developers tend to favour flexibility at the expense of ... 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

Mock Data Generators for Tabular Data

Developing a JavaScript-based web front-end, e.g. with frameworks such as Angular, at some point - especially during the prototype phase - often requires working with data supplied by a back-end data source. Tools such as JSON Server enable you to spin up such a data source as a REST API server in no time with zero coding involved. However, running a back-end server is only part of the equation that is testing a front-end against actual data. Another vital ingredient is the data ... Read more

Testing Spring Boot Applications Masterclass by Philip Riecks

From crafting new software to refactoring existing applications automated testing is an essential part of professional software development and pivotal to high quality software. Philip Riecks (one of the other authors of our upcoming eBook Stratospheric - From Zero to Production with Spring Boot and AWS) offers the - aptly named - Testing Spring Boot Applications Masterclass, a comprehensive, in-depth online course on testing Spring Boot Applications. Currently (as of September 2020), the course consists of more than 90 videos (six hours in ... Read more

GitLive – Real-time Code Collaboration

Continuing on last week's subject of better collaboration and knowledge sharing in software development (with CodeStream, in that case) I'd like to share GitLive - a new, promising tool I've come across. GitLive allows you and your fellow team members to collaborate on code in real time right in your IDE thereby turning it "into a collaborative space". What I've seen so far looks intriguing. I think that we'll be moving into that direction more rapidly and that we'll see more tools of ... Read more

CodeStream – Code as a Knowledge Base

CodeStream is a code review tool that allows you to conduct such reviews right in your IDE, i.e. without changing context. According to their master plan CodeStream is supposed to "Provide the ability to talk about any block of code, on any branch, in any state [...]" "Eliminate context switching costs [...]" "Treat codeblocks as a first-class object [...]" in order to allow developers, both new and senior ones, to quickly get up to speed with an existing codebase and to collaborate and draw upon each ... Read more

sdras/awesome-actions: A Curated List of Useful GitHub Actions

As a follow-up to last week's post on automating software maintenance tasks with GitHub Actions I'd like to point you to Awesome Actions, a curated list of resources related to GitHub Actions. The list includes both predefined actions you can directly use and resources for getting started with building your own actions and workflows, as well as various utilities for testing, linting and security purposes. Read more

Using GitHub Actions for Automating Angular Updates

I've published quite a few Angular applications under various open source (MIT and Apache License, respectively) licenses : GDPR Transparency PivotHelper TimeSheets3 Among other responsibilities, maintaining software comes with the task of regularly checking for dependency updates and applying them to the software in question. This first and foremost involves security updates but also bug fixes and new features for the frameworks and libraries used by the application. Fortunately, Angular CLI comes with a command that allows you to do just that: [crayon-6179d61a754ba052486524/] However, while having a simple ... Read more
Next Page »