Functional Java by Example | Part 1 – From Imperative to Declarative

Functional Programming (FP) is about avoiding reassigning variables, avoiding mutable data structures, avoiding state and favoring functions all-the-way. What can we learn from FP if we would apply functional techniques to our everyday Java code? In this series called “Functional Java by Example” I will refactor in 8 installments an existing piece of code to see if I can reach … Lees verder Functional Java by Example | Part 1 – From Imperative to Declarative

Jenkins

Jenkins shared libraries: tested

Jenkins is a very neat tool to implement a continuous delivery process, mainly due to its flexibility. Sometimes it can be hard though to keep complexity low, and when that happens, (automated) tests become far more important. Jenkins should in fact be running tests that verify the scripts running tests, proving they actually work. Warning: this dog will chase its … Lees verder Jenkins shared libraries: tested

Spring WebFlux annotation based

The release of Spring Framework version 5 is just around the corner and it contains a lot of new features. One of those is the WebFlux framework. It adds support for reactive web programming on client and server side. Spring WebFlux uses Reactor to make it all possible. The server side supports two programming models: Annotation based, using @Controller annotations. … Lees verder Spring WebFlux annotation based

Strangling pipelines

Strangling pipelines This practical example is about the strangulation pattern, as explained by Martin Fowler here, applied to pipelines.   The situation Right after ditching the old manually managed Jenkins jobs, we were left with ‘simple’ but very lengthy procedural pipeline scripts. These scripts were then duplicated and slightly modified for each type of pipeline (because there’s always need for … Lees verder Strangling pipelines

Conflict-free replicated data types

By now everybody who has ever worked on a distributed system has heard of the CAP theorem. Simply put, it states that you have to choose between being (C)onsistent or being (A)vailable. The P, standing for Partition tolerant, is not really a choice for a distributed system (e.g. see the number 1 fallacy of distributed programming). So that leaves us in a peculiar state: … Lees verder Conflict-free replicated data types

opening, vlak voor aanvang

devcon 2017

     Afgelopen donderdag (6 april) ben ik naar devcon geweest. Dit is een jaarlijkse conferentie georganiseerd door Luminis en is voor en door (Luminis) developers gemaakt. Het is een jaarlijkse conferentie die wordt gehouden in de CineMec bioscoop in Ede. De focus bij deze conferentie ligt op vakmanschap en het delen van kennis. Nadat de conferentie officieel geopend was, … Lees verder devcon 2017

Groovy power op de Greach conferentie

Begin april waren Ted Vinke en ik (Koen Aben) op de Spaanse conferentie Greach, om onze open source software te presenteren. Greach is de jaarlijkse conferentie in Madrid voor de Groovy community. De Groovy community is een actieve, internationale community met conferenties over de hele wereld om elkaar te ontmoeten. Vorig jaar waren we ook al naar de Greach conferentie … Lees verder Groovy power op de Greach conferentie

Grails Anti-Pattern: Everything is a Service

The context Grails makes it very easy to put any logic of your application in a service. Just grails create-service and you’re good to go. There’s a single instance by default, injectable anywhere. Powerful stuff and makes it easy to get up ’n running very fast! Creating a new application, following so-called “best practices” from blogs like these 🙂 and … Lees verder Grails Anti-Pattern: Everything is a Service

Grails Anti-Pattern: Locally Optimized Dynamic Finders Everywhere

The context Grails makes it very easy to persist and find stuff using domain classes. It uses GORM (Grails’ Object Relational Mapping) under the hood, which by default uses Hibernate to map domain classes to tables in a database. Powerful stuff and makes it easy to get up ’n running very fast! Creating a new application, following so-called “best practices” … Lees verder Grails Anti-Pattern: Locally Optimized Dynamic Finders Everywhere