While most people interacting with government IT projects get away relatively pain free we developers are often on the short end of the stick. This was also the case for us in the case of working with the Dutch governmental ID system called DigiD. For the average user it’s a pretty good system with multiple factor authentication and compared to … Lees verder Cancel in a SSO World: A story about open source and DigiD cancel support in Keycloak.
The last time I blogged here about cleaner code (see link for details), I wrote about how you could make your code more testable by centralizing switch statements in a factory and putting the behavior in separate objects. Today I will show you another technique to clean up your code and make it easier to … Lees verder Remove boolean parameters: test your code more easily with cleaner code
Anyone who has used Mockito for mocking and stubbing Java classes, probably is familiar with the InjectMocks-annotation. I seemed a little harsh in an article a few years back about why you should not use @InjectMocks to auto-wire fields, even though I actually consider Mockito to be one of the most brilliant mocking frameworks for unit testing in Java. Every … Lees verder Mockito: Why You Still Should Appreciate InjectMocks Annotation
You know that most of the task planners or calendar apps have features when you create a todo, task or meeting they try to be “smart” in filling in as much details as possible? You enter the title of a new e.g. meeting and based on some heuristics it tries to conveniently set some additional properties.
TL;DR: choose either git-flow or github-flow or gitlab-flow, forking, trunk based or ‘simple’ flow? They all have pro’s and con’s. One decision a development team always faces is: ‘how do we interact with version control?’ Nowadays git is of course the default choice for a version control system. Warning: skipping the git diagrams here, there’s enough of those … Lees verder Our very own gitcow-flow
GORM is a relational database to object mapper. To work properly it needs to know the primary key for each table. The primary key uniquely (and quickly) identifies a single record from a table. GORM (and Hibernate as the underlaying framework) supports many ways to identify a record in your favorite database. Some legacy databases may use trigger-generated primary … Lees verder Quick GORM tip: trigger based primary key generation
Every developer has (or will) encountered the phenomenon called pagination. In this blog post I want to challenge you as a developer or product owner to reconsider using that pattern. Simply put: it is a bad solution to a problem that you shouldn’t have. (Of course, since this is a blog post, there may be some nuances left out. Take … Lees verder Pagination: a bad solution to a problem you should not have
I was reading an article about property-based testing the other day. This article started with the problem that it could be difficult to test all the cases of a function and that this was cumbersome and error prone. This triggered me to think about why such a function would be difficult to test. The switch statement During the years I … Lees verder Cleaning up switch cases with clean code for easy testing
So, we have been using pipelines-as-code in Jenkins for a while now and we generally are using scripted pipelines, Groovy scripts that run in Jenkins. Very flexible, but it is missing something for me. While we were used to the webforms of Jenkins before pipelines, these constructs aren’t always available in scripted pipelines. Enter declarative pipelines. These are pipelines-as-code as … Lees verder How to start with declarative Jenkins pipelines
As a continuous delivery engineer I really want software teams to work fast and safe, with ease and having fun. Happy teams are productive, learning and innovative teams. Authoring pipelines is an important aspect of a safe and smooth development cycle. Every new piece of code should be tried, tested, reworked and eventually (potentially) promoted for real use. However, there … Lees verder How to reuse pipelines with Jenkins Shared Libraries