Archive: 2025

Debugging Democracy: What political fragmentation can teach software teams

Posted on by  
Erik Pronk

In the lead-up to today’s Dutch parliamentary elections, we continually witness how political parties defend their own positions, often at the expense of constructive collaboration. This dynamic is surprisingly familiar to anyone who has worked in a large organization. The parallels between election campaigns and organizational silos are striking, and both can be damaging to the broader mission.

Just as political parties prioritize their own agendas over national unity, departments within organizations often pursue isolated goals, leading to fragmentation, inefficiency, and missed opportunities. In both cases, the absence of a shared vision undermines progress. The way forward lies in working together toward a shared goal, aligning diverse perspectives around a common purpose to create meaningful impact.

Continue reading →

Can AI be your security guard?

Posted on by  
Arjen Wiersma

I’ve seen a lot of articles online about AI and coding. Everyone seems to have a strong opinion, especially on LinkedIn, from the die-hard optimists to the deeply skeptical. But opinions don’t tell the whole story. I went looking for the data, and what the research shows paints a complicated, sometimes contradictory, picture.

Continue reading →

Developing in Java Without an IDE

Posted on by  
Quinton Weenink

In my journey away from the mouse and trackpad, I found Neovim recommended often. Having developed in Java for over 13 years, I’ve relied heavily on IDEs like IntelliJ or NetBeans for most of that time. I decided to step outside those walls to see what lay beyond.

Continue reading →

How Foosball improves my problem-solving skills

Posted on by  
Thomas de Groot

What does the intense, rapid-fire chaos of foosball have to do with being a good software developer? A lot, actually.

Ever since I started as a junior software developer I’ve been introduced to the game of Table football, also known as Foosball.

For those who don’t know the game, it is a tabletop game that has the same goal as football: scoring in the opponent’s goal, only the catch, however, is your players can only move sideways and spin the players back and forth (although uncontrolled spinning is frowned upon!). The game is played 1v1 or 2v2, and can be played during breaks or after work. It’s really enjoyable, especially with some 'friendly' banter.

In all those years I’ve improved quite a bit but every now and then I stumble upon a wall, which in time I will try to overcome and become a better slightly less worse player. This blog will be a fun story on how to deal with getting stuck.

Continue reading →

Groovy Goodness: Interleaving Elements From Collections

Posted on by  
Hubert Klein Ikkink

Groovy 5 adds the interleave method to the Iterable class. With this method you can interleave elements from two iterables. The result is a new List with elements where the first element is the first element of the first iterable and the second element the first element of the second iterable and so on. The size of the smallest collection is used to keep interleaving elements. Elements from the larger collection are ignored in the result.
If you want to have the items from the largest collection in the resulting list you can use the value true as second argument for the interleave method.

Continue reading →

The Agile Developer

Posted on by  
Ahmed Albaka

The Dutch are Europe’s champion sitters and we IT workers take the trophy. With an average of just over seven hours per day spent sitting, we’ve become exceptionally good at keeping our butts warm. Even after work. We all know it’s unhealthy, yet breaking a stubborn habit is, well, stubborn. Every time we sit down to log in, it gets a little worse. Sure, some of us are mindful. I often see sit-stand desks set to 'stand', slightly sweaty colleagues returning from an afternoon walk, and the boulderer rolling in with a gym bag. But it’s still nowhere near enough.

Continue reading →

Groovy Goodness: Get Next And Previous Characters

Posted on by  
Hubert Klein Ikkink

Since Groovy 1.8.2 the next and previous methods are added to the Character class. When you invoke the method next on a char or Character instance the next character the next character of the ASCII table is returned. And when you use the previous method the previous character is returned.
Groovy 5 adds an overloaded version of the next and previous method that accepts an int argument. With this argument you can specify the number of characters to skip before returning the next or previous character. For example 'a'.next(2) return 'c' and 'c'.previous(2) returns 'a'.

Continue reading →

The Home That Calls

Posted on by  
Jacob van Lingen

The waves crash upon Eilean Draoidheachd, the Island of Magic. From the mainland it is little more than a shadow, forever veiled in mist and salt-born fog. Sailors whisper that it is cursed, that the storm itself makes its home there. Others speak of endless wind and rain, bound to that shore by some forgotten spell.

But the islanders know better. They tell of An Naoimh, the Holy One, whose breath stirs the clouds and whose voice moves the sea. Some still name her An Cailleach, the ancient crone who weaves her will through storm and silence alike. And when the waves rise higher than the cliffs, they say she is speaking again, chanting her spells into the wind.

Continue reading →

Groovy Goodness: Grouping Iterables Using zip And zipAll

Posted on by  
Hubert Klein Ikkink

Groovy 5 adds the extension methods zip and zipAll for iterables and iterators. Using the method you can combine elements from two collections into a new collection. The new collection contains Tuple2 instances where the values come from the items at the same index from both collections. So the first item of the first collection is grouped with the first item of the second collection. The size of the resulting collection is determined by the size of the smallest collection that is zipped.
With the zipAll method you can combine iterables of different sizes and set default values for missing items. It is possible to set a default value if an item is missing from the first iterable or the second iterable.

Continue reading →

Team dynamics to the rescue!

Posted on by  
Erik Pronk

After 25 years in software engineering, I’ve witnessed many projects, from great success stories to those that never quite lived up to their promise. In our profession, success is not just about technology. Sure, we love our frameworks, CI/CD pipelines, and microservices. But the real power of a high-performing team lies in something much deeper: team dynamics.

In this blog I want to dive into the why, how and what of team dynamics and why it’s such a crucial element in the success of your project or organization.

Continue reading →

shadow-left