Digital Sovereignty, A Dutch company's dilemma in the age of US hyperscalers
If you run into a wall, don’t turn around and give up. Figure out how to climb it, go through it, or work around it." — Michael Jordan
The grip tightens
Dutch companies find themselves in an uncomfortable position. Their data flows through AWS, Azure, or Google Cloud. Their productivity tools are Microsoft 365 or Google Workspace. Their AI capabilities depend on OpenAI or Anthropic. The convenience is undeniable, but so is the dependency.
Digital sovereignty isn’t just a buzzword, it’s about control. Control over your data, your operations, and ultimately, your business continuity when geopolitical winds shift.
Running COBOL in IntelliJ
Within the JVM community, once in a while somebody jokes about getting old and therefore needing to start learning COBOL. Usually, someone responds that there are indeed some “precious older people” who wrote COBOL, or dare I say it, still write COBOL today. For me, COBOL has always sounded like a relic of the past. Something you read about, not something you seriously consider learning. But lately, I have been hearing rumours about companies starting to recruit new employees specifically to fill COBOL vacancies. That triggered me hard enough to start wondering. Can I actually run COBOL on my own laptop today, and if so, can I have a reasonably nice developer experience while doing so?
From Java to Kotlin – Part X: Virtual Threads and Coroutines
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 10: You need to do many things at once. Mostly waiting. Sometimes working.
From Java to Kotlin – Part IX: Statics and Companion Objects
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 9: You need something that belongs to the class. Not to an instance.
From Java to Kotlin – Part VIII: The Ternary operator vs the Elvis Operator
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 8: You want a sensible default.
If something is missing. Or null. Or both.
From Java to Kotlin – Part VII: Null Safety
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 7: Nulls exist.
Ignoring them doesn’t make them go away.
From Java to Kotlin – Part VI: Higher-Order Functions Without Fear
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 6: Passing functions around sounds scary.
Until you try it.
From Java to Kotlin – Part V: Switch vs When
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 5:
Java has switch.
Kotlin has when.
From Java to Kotlin – Part IV: Copying objects
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 4: Copying objects should be easy.
And safe. And boring.
From Java to Kotlin – Part III: Default Values and Named Arguments
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 3: Constructors are supposed to be simple.
Java sometimes seems to disagree.
From Java to Kotlin – Part II: Boring Data Classes
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 2: You need a simple object.
Just data. No behavior. No clever tricks.
And yet, Java somehow turns this into a small project.
From Java to Kotlin – Part I: String extensions without the boilerplate
Considering a move to Kotlin? Coming from a Java background? In this short series of blog posts, I’ll take a look at familiar, straightforward Java concepts and demonstrate how you can approach them in Kotlin. While many of these points have already been discussed in earlier posts by colleagues, my focus is simple: how you used to do it in Java, and how you do it in Kotlin.
Case 1:
You are working on an application in Java and you need a reusable way to modify a String.
Nothing fancy. No frameworks. Just a small helper.