An immutable Mastodon handle. | Continue reading


@blog.frankel.ch | 1 year ago

Discuss the Problem, Not the Solution

Continue reading


@blog.frankel.ch | 1 year ago

WASM Nginx Module: How to Implement Plugins in API Gateway with Rust?

Continue reading


@blog.frankel.ch | 1 year ago

Back to basics: accessing Kubernetes pods

Continue reading


@blog.frankel.ch | 1 year ago

On Cosmetics vs. Intrinsics in Programming

Continue reading


@blog.frankel.ch | 1 year ago

Hard Things in Computer Science

Continue reading


@blog.frankel.ch | 1 year ago

What I miss in Java, the perspective of a Kotlin developer

Continue reading


@blog.frankel.ch | 1 year ago

Show HN: Chopping the Monolith – The Demo

Continue reading


@blog.frankel.ch | 1 year ago

Chopping the Monolith

Continue reading


@blog.frankel.ch | 2 years ago

Hacking third-party APIs on the JVM

Continue reading


@blog.frankel.ch | 2 years ago

Error handling across different programming languages

Continue reading


@blog.frankel.ch | 2 years ago

Treat Security as a Risk

Continue reading


@blog.frankel.ch | 2 years ago

The Gilded Rose Kata in Rust

Continue reading


@blog.frankel.ch | 2 years ago

Faster Maven Builds

Continue reading


@blog.frankel.ch | 2 years ago

Updating data files, commits vs. pull requests

Continue reading


@blog.frankel.ch | 2 years ago

Gitlab as your Continuous Deployment one-stop shop

Continue reading


@blog.frankel.ch | 2 years ago

Rust and the JVM, Stronger Together

Continue reading


@blog.frankel.ch | 2 years ago

Rust on the Front-End

Continue reading


@blog.frankel.ch | 2 years ago

Teeing, a hidden gem in the Java API

Last week, I described a use-case for a custom Stream Collector. I received a intriguing comment on Twitter: Interesting article. For completness' sake this specific problem could also be solved using the standard teeing collector— Miguel Martins (@Miguucm) May 3, 2021 Hats off t … | Continue reading


@blog.frankel.ch | 2 years ago

Goodbye Minikube

I’ve been using minikube as my local cluster since I started to learn Kubernetes. But I’ve decided to let it go in favor of kind. Here’s the story. A couple of weeks ago, I gave my talk on Zero Downtime on Kubernetes. A demo is included in the talk, as with most of my presentatio … | Continue reading


@blog.frankel.ch | 3 years ago

The Cost and Value of Knowledge

I was a student in France when I discovered the Internet and the World Wide Web. At that time, I didn’t realize the value of the thing, even though I taught myself HTML from what was available at the time (even if I don’t remember the sites - they probably have disappeared into L … | Continue reading


@blog.frankel.ch | 3 years ago

From Spring Boot to Micronaut

In the last couple of years, I’ve been playing a bit with a generation of tools in the Java world, namely Micronaut, Quarkus and GraalVM. While I’m a Spring Boot fan since its beginning, I believe this quite an eye-opening opportunity. In this post, I’d like to see how easy, or h … | Continue reading


@blog.frankel.ch | 3 years ago

From Reactor to Coroutines

Last September, I wrote how to migrate from an Imperative Programming codebase to a Reactive Programming one in a step-by-step process. Because of its popularity, I illustrated the post with a Spring Boot demo. The final result uses Mono and Flux from Project Reactor. I also made … | Continue reading


@blog.frankel.ch | 3 years ago

Do's and don'ts for conference organizers, a speaker's point-of-view

My job requires me to speak at conferences. Despite the current situation, this hasn’t changed much. At the time of this writing, I submitted 439 different proposals to 215 unique conferences in 2020. I already wrote some advice for junior conference speakers. As a follow-up, I’d … | Continue reading


@blog.frankel.ch | 3 years ago

On learning a new programming language

When I started my career, books with titles such as 'Teach Yourself C in 21 Days', and 'Learn Java in 7 Days' were pretty popular. I was impressed that people could read such books. I never thought I could learn a new language in such a small amount of time myself. Time has passe … | Continue reading


@blog.frankel.ch | 3 years ago

In Defense of XML

When I started my career, XML was ubiquitous. The meta-information in a Java JAR file - the manifest - follows a proprietary format. But Java EE designers built it from the ground up on XML: meta-information of all artifacts is in XML format e.g. web.xml, ejb-jar.xml, application … | Continue reading


@blog.frankel.ch | 3 years ago

On Open Source, licenses and changes

The subject of Open Source and OS licenses has been waxing and waning over time. Recently, it became hot again. In this post, I’d like to do a quick recap to set the stage. Then, I’ll analyze reasons for license changes. The rise of Open Source Before I actually started my career … | Continue reading


@blog.frankel.ch | 3 years ago

On Project Loom, the Reactive model and coroutines

Java 15 will see the first release of Project Loom. I believe this will be a game-changer for the JVM. In this post, I’d like to dive a bit into the reasons that lead me to believe that. First, we need to understand the core problem. Then, I will try to describe how previous tech … | Continue reading


@blog.frankel.ch | 3 years ago

I (Still) Love Vaadin

It’s funny how things come in sequences. Recently, on three separate occasions, I stumbled upon questions asking what people used for front-end technologies. Every time, my answer was Vaadin. Unfortunately, some places, e.g. Twitter, are too limiting to explain my answer in depth … | Continue reading


@blog.frankel.ch | 3 years ago

An introductory guide to annotations and annotation processors

In Java, annotations and annotation processors are surrounded by a shroud of mystery for most. They seem like a subject reserved for 'experts''. On top of that, I believe there’s also some FUD around them. This post aims to dig into the subject, in the most neutral way possible. … | Continue reading


@blog.frankel.ch | 4 years ago

Logging Additional Metadata

In February, before the lockdown, I presented my Fast logs talk at ConFoo. At the end, I had an interesting question I had to cut short because of the timing. This blog post aims to describe the relevant points of the talk, the question, as well as some possible answer. One impro … | Continue reading


@blog.frankel.ch | 4 years ago

On Teaching Remotely

I started teaching in higher education organizations when I was still a student. That was more than 20 years ago. I’ve never stopped since then. I’ve taught in different kind of organizations (i.e. engineering schools, universities, and applied science schools) and two different … | Continue reading


@blog.frankel.ch | 4 years ago

Coping with incompatible code in Graal VM AOT compilation

The last two blog posts were focused on how to write a custom Kubernetes controller in Java. As usual, I’m writing a demo along with the posts: that allows me to face real issues, and be able to detail them. In this context, I had to handle a couple of them when implementing the … | Continue reading


@blog.frankel.ch | 4 years ago

Developing your own Kubernetes controller in Java

In the previous post, we laid out the foundations to create our own custom Kubernetes controller. We detailed what a controller was, and that its only requirement is to be able to communicate with HTTP/JSON. In this post, we are going to finally start developing it. The technolog … | Continue reading


@blog.frankel.ch | 4 years ago

Own Kubernetes controller – Laying out the work

It’s hard nowadays to ignore Kubernetes. It has become the ubiquitous platform of choice to deploy containerized applications. In a few years, Kubernetes has entrenched itself deeply in the DevOps landscape under the tutelage of the Cloud Native Computing Foundation. One could sp … | Continue reading


@blog.frankel.ch | 4 years ago

Stream Processing for Computing Approximations

This is the 2nd post in the Stream Processing focus series. Last week, we had a look at what is stream processing. In this post, I’d like to address one possible use-case for stream processing: the computation of mathematical approximations. | Continue reading


@blog.frankel.ch | 4 years ago

Tricky Servlet Mappings

Last week, I wrote about the creative use one can make of Filters by grading assignments of students. About, there’s another recurring issue that warrants a blog post: servlet mappings. While servlet mappings seem easy on the surface, they sometimes can be the cause of huge heada … | Continue reading


@blog.frankel.ch | 4 years ago

Inserting a new commit in the Git history

Most tutorials about Git history rewriting state that history should never ever be rewritten. Like all principles, it depends mostly on the exact context. The principle should probably be updated like this: Public Git history should not be rewritten The reason is that once the Gi … | Continue reading


@blog.frankel.ch | 4 years ago

On Developers' Productivity

In this post, I’d like to tackle some widespread thought found in software development’s circles: the magical creatures known as 10x developers. If you’ve been working in a software development team, even for a short period of time, you probably came to the conclusion that some d … | Continue reading


@blog.frankel.ch | 4 years ago

Even more readable code without if-else

A couple of years ago, I wrote a post focused on how to avoid sequences of if-else statements. In that post, I demo several alternatives: the usage of proper OOP designmapswhen there’s no return, switch statements in a case. Recently, I stumbled upon a slightly more complex use-c … | Continue reading


@blog.frankel.ch | 4 years ago

Interesting Features in Programming Languages

Java is the first language that I learned and used professionally. It has been my bread and butter for about a decade and half years. And yet, it’s not the only language I’ve learned nor used in all my years: for example, a long time ago, I’ve had to develop JavaScript code to im … | Continue reading


@blog.frankel.ch | 4 years ago

Composition over Inheritance Applied to Docker

This post is neither a recommendation, nor even a suggestion. It’s just me toying with an idea: Implement it at your own risk! The main benefit of Docker containers is that they are self-contained. For developers, that means one just needs to inherit from the desired Docker image … | Continue reading


@blog.frankel.ch | 4 years ago

Advices for Junior Conference Speakers

Some years ago, I started my journey on the conference circuit. I did that on my own, in my free time. Without mentorship on how to do that, and with my gut feeling as the only guidance, I made plenty of mistakes…​ and I still regularly do. However, I now have a couple of hard-ea … | Continue reading


@blog.frankel.ch | 4 years ago

Exercises in MapReduce Style

This is the 19th post in the Exercises in Programming Style focus series. In the last episode of Exercises in Programming Style, we solved the word frequency problem with the Hazelcast library. This time, we are going to use MapReduce for that. MapReduce is a process consisting o … | Continue reading


@blog.frankel.ch | 4 years ago

Exercises in Programming Style: sharing data among threads

This is the 17th post in the Exercises in Programming Style focus series. Last week, we solved the word count problem using the Actor model: objects running on different threads and communicating through messages. This week, we will drop objects, and use data structures that are … | Continue reading


@blog.frankel.ch | 4 years ago

Exercises in Aspect-Oriented Programming Style

This is the 12th post in the Exercises in Programming Style focus series. This week, we will focus on Aspect-Oriented Programming, a powerful programming technique: In computing, Aspect-Oriented Programming is a programming paradigm that aims to increase modularity by allowing th … | Continue reading


@blog.frankel.ch | 4 years ago

Reflecting over Exercises in Programming Style

This is the 11th post in the Exercises in Programming Style focus series. This week's post is dedicated to reflection: In computer science, reflection is the ability of a process to examine, introspect, and modify its own structure and behavior. The original Python solution is ha … | Continue reading


@blog.frankel.ch | 4 years ago

Exercises in Programming Style and the Event Bus

This is the 10th post in the Exercises in Programming Style focus series. In last week's post, we solved the now familiar top-25-word-frequencies-in-a-text-file problem by using Event-Driven Programming. When the number of observer-subject pairs grows, an alternative is to migrat … | Continue reading


@blog.frankel.ch | 4 years ago