Playfair with EchoSVG

Pie Chart

You may have noticed that the Playfair project started with the JFreeSVG library and has now switched to the EchoSVG library. Both libraries have their advantages and disadvantages, but JFreeSVG’s GPL 3.0 license in particular makes working with it difficult in many projects, often even impossible. With the next version 0.7.0, Playfair will switch to the Apache 2.0 license. This would be a little too little content for a blog post, so let’s take a look at one of EchoSVG’s weaknesses.

Playfair

While searching for a name for the new project, I looked up the inventor of charts for fun. I was amazed to find that this person actually existed. William Playfair (born September 22, 1759, near Dundee, Scotland; † February 11, 1823 in Covent Garden, London, England) is a pioneer of information graphics and is considered the inventor of bar and pie charts. What an unexpected opportunity to honor this man. The name also fits perfectly with an open source project that aims to provide simple charts without a lot of fuss. This article shows what has changed since the first bar chart and how much Java takes off our hands.

FreshMarker 2.3.0 Released

Just in time for Halloween there is a new FreshMarker release. Here is a list of the most important new features. the rest can be found in the release notes.

Unit Tests: Understanding False Positives and False Negatives

As a software developer, unit tests are an indispensable part of our daily work. They help us verify the correctness of our code and detect bugs early in the development cycle. However, like any testing system, unit tests can be flawed and lead to incorrect conclusions. In this article, I’ll explain the concepts of False Positives and False Negatives in the context of unit tests and illustrate these with truth tables.

Prospects for 2.3.0

After the release is before the release, so there are already some new features in the queue for FreshMarker 2.3.0. Since it is not always worth writing a separate article for a feature, here is a report on the new features planned so far.

Diagram As Code

Java Bibliotheken

I recently sat in a lecture about PlantUML and the advantages of Diagram As Code. Diagram As Code is a special variant of Documentation As Code. It is the possibility for software developers to create their documentation in the form of text files without the use of word processing systems. The advantage is obvious, the developer can use his documentation like his source code. Versioning, automatically creating comparisons, transforming, validating and much more. This gave me the idea of developing something similar.

The Knuth Plass Algorithm

Some algorithms are real classics and yet nobody really knows them. Day in, day out, everyone is happy about the beautiful wrapping of their text in the word processor, but why does the text actually look so beautiful spread across the lines?

Passage of Time Events

It’s not that often that a design pattern really blows my mind anymore, but recently I discovered the Passage of Time Pattern by Mathias Verraes. This pattern describes how to deal with time-dependent processes in event-based systems. What makes this pattern stand out is its elegance and simplicity.

From near misses on footpaths

If you have read this article, then you will know that I am a left-hander, or rather a left-turner. But you will also understand why we humans perceive some things completely differently and why simple math explains this.

REST endpoints with filters

Java Bibliotheken

This article is a slightly updated English version of the article “REST Endpunkte mit Filtern”.

In addition to sorting and pagination, filtering is a fairly common action on REST endpoints. In contrast to the first two, however, there is no adequate solution for filtering in the Spring Boot framework. With little effort, however, this can be elegantly implemented with the Spring Boot tools.

Of bridges and tunnels – agile system creation

Tunnel constructions are classic waterfall projects in which extensive planning is carried out and then construction can be completed without major changes. There are geological surprises from time to time, but a tunnel plan is, quite literally, set in stone.

Optimistic Locking mit dem ETag Header

Bild von Kerstin Riemer https://pixabay.com/de/users/kriemer-932379/

Wenn mehr als ein Beteiligter beim Speichern von Daten involviert ist, kann es zu ungewollten Überschreibungen kommen. Um solche Probleme zu umgehen, existieren drei Vorgehensweisen. Pessimistic Locking, Optimistic Locking und Ignore It!

FreshMarker 2.2.0 Released

The latest version of FreshMarker, the Java 21 template engine, is now available. Version 2.2.0 introduces several improvements and new features. Some internal improvements ensure even faster processing.

Partial Expression Reduction

The FreshMarker template engine has the Partial Template Reduction feature. This makes it possible to create a new Template from an existing Template by adding an incomplete model. Some constructs are simplified in the new Template because the data from the incomplete model could be evaluated there. Until now, this could only be used in directives and interpolations, so why not use the mechanism in expressions as well?

In Search Of Performance (2)

This article on performance was not actually intended to be a multi-part article. But if you take a closer look at your own code through performance glasses, you will quickly discover further bottlenecks. In this case, it’s an unclean modeling that FreshMarker has been carrying around since its early days. This article is about how this affects the performance of the template engine.

Bullseye Architecture

I call Hexagonal Architecture, Onion Skin Model and Clean Architecture the “Bullseye Architectures”, because they contain the domain logic as a central component in the middle of their structure.Currently they are popular again, so here is a short article on the topic.