Image for post
Image for post
Rembrandt: Belshazzar’s Feast
After a scene from the Old Testament. The writing on the wall says “You have been weighed on the scales and found wanting”. Although a little bit exaggerated, I found it as good metaphor for the current reputation of web components.
https://commons.wikimedia.org/wiki/File:Rembrandt-Belsazar.jpg

Web Components do not deliver on their promises. I wrote this essay for Angular developers who are evaluating web components or are wondering what went wrong with the web components they already use. I will explain the reasons web components fail and pinpoint the few application types where web components make sense to use.

Web Components

If you visited a conference on Angular in the last two years, chances are quite high that you attended a talk about web components (WC).

In short, web components are a set of standards that let JavaScript run within an isolated DOM Node. In that way…


Image for post
Image for post
JavaScript and Object-Oriented Programming

This article is for students of JavaScript that don’t have any prior knowledge in object-oriented programming (OOP). I focus on the parts of OOP that are only relevant for JavaScript and not OOP in general. I skip polymorphism because it fits better with a static-typed language.

Why do you need to know this?

Have you picked JavaScript to be your first programming language? Do you want to be a hot-shot developer who works on giant enterprise systems spanning hundred-thousand lines of code or more?

Unless you learn to embrace Object-Oriented Programming fully, you will be well and truly lost.

Different Mindsets

In football, you can play from a safe…


Image for post
Image for post
Photo by Moto “Club4AG” Miwa on Flickr

This article is also available in Spanish.

In this article, I want to explain what a software developer, who uses JavaScript to write applications, should know about engines so that the written code executes properly.

You’ll see below a one-liner function that returns the property lastName of the passed argument. Just by adding a single property to each object, we end up with a performance drop of more than 700%!

As I will explain in detail, JavaScript’s lack of static types drives this behaviour. …


Image for post
Image for post

I have been programming for more than 20 years. During that time, I’ve had the pleasure to work with many people, from whom I learned a lot. I’ve also worked with many students, coming fresh from university, with whom I had to take on the role of a teacher or mentor.

Lately, I have been involved as a trainer in a program that teaches coding to absolute beginners.

Learning how to program is hard. I often find that university courses and bootcamps miss important aspects of programming and take poor approaches to teaching rookies.

I want to share the five…


Image for post
Image for post
Photo by christoph wesi on Unsplash

In this article, I will show how to ignore checked exceptions in Java. I will start by describing the rationale behind it and the common pattern to resolve this issue. Then I will present some libraries for that purpose.

Checked and Unchecked Exceptions

In Java, a method can force its caller to deal with the occurrence of potential exceptions. The caller can use the try/catch clause, where the try contains the actual code and catch contains the code to execute when the exception occurs.

Alternatively, the caller can pass on that burden to its parent caller. This can go upwards until the main method…


Are you tired of writing “catch-pseudo-code” for Java’s Checked Exceptions? And let’s not think about that annoying additional unit test.

Help is on the way.

Let me introduce you to SneakyThrow. Cut back the amount of code you need to write to catch Checked Exceptions thanks to this Java library.

It uses only “legal stuff” — no magic like bytecode manipulation. I am looking at you Project Lombok 😉

SneakyThrows wraps the Exception into a RuntimeException. And as we all know: We don’t have to catch these types of exceptions. We can leave them as Unchecked Exceptions.

Image for post
Image for post
SneakyThrow in Action

How can I get it?

Simply copy &…


Image for post
Image for post
Photo by Erlend Ekseth on Unsplash

As we all know, unit tests provide us with some kind of safety net. They give us a program we can use to validate that a system works the way it is supposed to — especially after we make modifications or extensions.

You are doing a lot of work up front by writing these tests. If you take the perspective that the real benefit comes during maintenance and extension work, then you will see testing as part of beautification or clearing up.

In this article I want to show that, in the context of a common web application, the typical…


Good practice demands that we show the user an error message when exceptions occur so they know what went wrong. I want to make the case that good design makes exceptions the exception — something so wrong that the user can not do anything about it. In most cases, the best approach will be to show the user a single, generic message when exceptions occur.

An Unexplainable Exception

As always, the context is a modern mainstream web application. So we will start out of the blocks with a simple registration form. We require a user’s email and a password that is exactly 4…


Image for post
Image for post

“The road to hell is paved with good intentions.”

This ancient proverb is just as true in software development as it is in life.

Take the following code as an example:

public List<Product> getProducts(String country) {
if (country == null) {
country = „at“;
}
List<Product> products =
database.getProductsForCountries(country);
if (products == null) {
return Collection.emptyList();
}
else {
return products;
}
}

Don’t sweep it under the carpet


After attending ReactiveConf two weeks ago where JavaScript was the main topic, I switched to the classical backend side of web development by visiting Devoxx in Antwerpen. It is widely seen as one of the best Java conferences.

Image for post
Image for post

Numbers speak for themselves: 6,570 proposals, 221 speakers and over 3,500 participants. The conference was held in a large cinema in Antwerpen and lasted 3 days. I looked out for talks specifically covering Java 9 and Spring and wasn’t disappointed at all.

What follows are summaries of my notes from selected talks.

Mark Reinhold: Moving Java forward faster

Reinhold, the Chief Architect of the Java Platform Group…

Rainer Hahnekamp

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store