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

Clearing the Spring Security Context During Unit Testing

Last week I wrote about a minimal Spring Security Context setup for unit testing. I'd like to add just a tiny, yet depending on your use case perhaps quite important, tidbit to that: In case you need to reset a SecurityContext setup, e.g., a mocked user authentication, because, for instance, other test methods from the same unit test class verify behaviour for an unauthenticated application state and hence expect an anonymous user, you can clear the SecurityContext (for example, in your ... Read more

Minimal Spring Security Context Setup for Unit Testing

Creating a minimal Spring Security setup for JUnit unit tests can be a tedious as well as somewhat daunting task. With its Authentication, Principal, GrantedAuthority, and UserDetails classes Spring Security is extremely flexible and configurable and probably accommodates pretty much every authentication and authorization use case under the sun. However, in software architecture such flexibility often comes at price, the trade-off in this case being that simple use cases can require more implementation effort than one would expect. One such use case ... Read more

In Favour of Keeping Changelogs

Closely related to the art of the README, keeping a changelog can be tremendously helpful when reviewing or contributing to an existing software project or when trying to decide whether to use a new tool. keep a changelog by software developer Olivier Lacan is a website that reminds us of the benefits a "curated, chronologically ordered list of notable changes for each version of a project" provides. Moreover, the website also lists useful guidelines and principles for creating changelogs as well as anti-patterns ... Read more

SCuri: Automating Unit Test Boilerplate Code for Angular Components

As I wrote about quite some time ago in this blog post, which details my solution for managing transitive dependencies for Angular unit tests . although Angular applications in general are easily testable and unit tests are first-class citizens with the framework itself, there's still some potential for improvement when in it comes to test maintainability. In particular, listing and referencing an Angular component's dependencies (i.e. the dependencies of the system under test) such as providers or imported modules can become tedious ... 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

Kent Beck’s Novel Approach to Software Quality: test && commit || revert

In a Hanselminutes episode from December last year I heard preeminent programmer and agile advocate Kent Beck talk about his intriguing approach to creating working, high-quality code. In line with the steps this approach involves he calls it test && commit || revert. In lieu of the TDD circle of life (write test - test fails - write code - test passes - refactor - test fails ...) test && commit || revert has you commit each time when after a code ... Read more

Dependency Management for Angular Unit Tests Using TestModuleMetadata

Since its inception it's always been one of the eminent design goals of Angular (and AngularJS before it) to make JavaScript applications easily testable and bake unit and E2E testing right into the development process. While the Angular team certainly has succeeded at this there's still the occasional snag you hit when writing unit or end-to-end tests. For the most part, the testing experience with Angular is terrific and testing JavaScript codebases has come a long way but of course there's always ... Read more
Next Page »