JDriven Blog

The solo only a human can play

Posted on by  
Erik Pronk

If you have read my blogs before, you probably know about my passion for sports, and for Michael Jordan in particular. But there is a second passion I rarely write about, and that is music. Not just any music, but the kind that truly makes an impact, at least on me. And the more I think about it, the more I suspect these two passions are not so far apart after all.

Continue reading →

ArchUnit in the Age of Agentic Development

Posted on by  
Rob Brinkman

In our projects we have been using ArchUnit for years to write unit tests that fail when the code no longer follows the architecture we chose. Over the last year, we’ve written more and more of these tests. What changed? Our audience grew. These tests no longer just help fellow developers stick to the architecture; they help our coding agents too.

Coding agents are getting quite good at making larger changes to existing codebases. Give an agent a task, some context and a test suite, and it often finds its way surprisingly well. But one type of context is much harder to provide: the architecture we intended. That is exactly the gap ArchUnit fills.

In this blog post I explain why ArchUnit becomes more valuable when working with coding agents, and I show some rules that actually help to guide them. The list is far from complete, but I hope it inspires you to capture your own architecture in rules, whether you write them yourself or let your agent do it.

Continue reading →

Tell a Story

Posted on by  
Jacob van Lingen

As software engineers, we are constantly challenged to explain what we do and how we do it. This communication challenge becomes even more pronounced when we talk to non-technical stakeholders. Now that AI is enabling us to produce more than ever before, this problem has become even greater. But how do we effectively convey complex technical concepts to a non-technical audience?

Continue reading →

Just one more prompt

Posted on by  
Erik Pronk

It was two o’clock in the morning before I noticed the time.

Earlier that evening I had been building an application. I had written all the work in a backlog.md, a neat list of stories, and I let the AI pick them up one by one. It would finish a story, ask me to verify everything, and then close with a simple question: shall I pick up the next task?

And every single time, that question was the trigger. It would be a shame to stop now. Just this one more, and then I’ll go to bed.

Continue reading →

Contemplations

Posted on by  
Jacob van Lingen

The world is changed.
I feel it in the water.
I feel it in the earth.
I smell it in the air.
Much that once was is lost, for none now live who remember it.

— Galadriel (The Fellowship of the Ring)

Continue reading →

Kotlin Kandy: Get Text Before Or After A Delimiter

Posted on by  
Hubert Klein Ikkink

Kotlin adds the substringBefore, substringBeforeLast, substringAfter and substringAfterLast extension functions to the String class. Instead of using indices to get a substring you can use a string or character value. The functions without Last use the first occurrence of the delimiter and the methods with Last use the last occurrence. If the delimiter is not found the original string is returned. You can supply a value that should be returned when the delimiter is not found.

Continue reading →

shadow-left