First8 staat voor vakmanschap. Al onze collega’s zijn een groot aanhanger van Open Source en in het bijzonder het Java-platform. Wij zijn gespecialiseerd in het pragmatisch ontwikkelen van bedrijfskritische Java toepassingen waarbij integratie van systemen, hoge eisen aan beveiliging en veel transacties een belangrijke rol spelen. Op deze pagina vind je onze blogs.

Remove boolean parameters: test your code more easily with cleaner code

          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

Mockito: Why You Still Should Appreciate InjectMocks Annotation

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

Our very own gitcow-flow

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 Groovy Grails

Quick GORM tip: trigger based primary key generation

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

blog arjan pagination

Pagination: a bad solution to a problem you should not have

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

SOLID Principle

Cleaning up switch cases with clean code for easy testing

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

How to start with declarative Jenkins pipelines

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

How to reuse pipelines with Jenkins Shared Libraries

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

Functional Java by Example | Part 8 – More Pure Functions

This is part 8, the last instalment of the series called “Functional Java by Example”. The example I’m evolving in each part of the series is some kind of “feed handler” which processes documents. In the last instalment we’ve seen some pattern matching, using the Vavr library, and treated failures as data too, e.g. take an alternative path and return … Lees verder Functional Java by Example | Part 8 – More Pure Functions