Author: M. Dahm

  • Practical Code Sharing with Kotlin Multiplatform Part (2/3)

    by

    In the first part of this series we gave a brief overview of Kotlin Multiplatform (KMP). In part 2 and 3 we will discuss best practices and patterns for code sharing between different environments and languages. In our projects we are developing a cross-platform framework targeting Java/JVM as well as Kotlin and JavaScript/Web runtime environments.…

    read more

  • Practical Code Sharing with Kotlin Multiplatform Part (1/3)

    by

    A common code basis can be crucial to implement and maintain in large projects. Especially, if the components of the project are using different languages and platforms. In this series of blog articles we will describe our experiences and best practices with Kotlin Multiplatform and show how to to move common code into a framework/library.…

    read more

  • Exploring AI for developers: First impressions

    by

    In this article, we want to gather first impressions on the ubiquitous new AI tools that are supposed to render us programmers obsolete. First learnings are: Yes, AI can certainly save you some effort — for instance, by generating basic structures for unit tests and the like. It also can support you during development suggesting…

    read more

  • Handling and testing refresh token timeouts in KeyCloak

    by

    Handling (OAuth) refresh tokens can be quite complicated as there are a lot of parameters influencing the actual behaviour. In this article we show some best practices and how to test your actual configuration.

    read more

  • Dynamic container configuration (using KeyCloak as an example)

    by

    Docker images often are parameterized through startup arguments or environment variables. There are often situations however, where certain aspects cannot be configured this way. Instead, you either have to create images for all possible configurations, or implement an extended configuration strategy. In this article we show how to parameterize a KeyCloak container with dynamic redirect…

    read more

  • Descriptive names for column constraints in Hibernate

    by

    Hibernate (re-)generates names for database constraints such as foreign keys or unique columns when creating a schema. However, the names for indexes and unique keys are not very descriptive, since they are created from a hash string of the table and column name. Unreadable technical names may seem just to be an insignificant ugliness, but…

    read more

  • Extensible and configurable WebSocket messages

    by

    WebSockets provide a flexible bi-directional way to communicate between the web browser and the backend server. In particular, it allows the server to send push messages to the client in order to inform it about data updates and the like. However, the Java API only allows for static Object encoders and decoders, i.e. they cannot…

    read more

  • Conditional evaluation in Docker files

    by

    In general, a Docker build file (Dockerfile) should be usable on any Docker server. In some cases however, you would like to have something like a conditional ‘IF’ statement in your Dockerfile. To give an example: It is common usage to use apk/apt-get/curl or any other tool in your build that needs to download data…

    read more

  • Multi-target compilation with Kotlin

    by

    Kotlin allows to compile application code for different platforms, namely into JVM (byte code), JavaScript and native binaries. In one of our projects we were facing the challenge to use the same source code as well in a Java client as in a web application written in TypeScript/Angular. The main reason not to just copy…

    read more

  • Different JSON views from a single source

    by

    Getting data in JSON format via REST services from the backend server is common practice. In the simplest case a JSON provider like Jackson translates your Java objects into a JSON string and back into Java objects automatically. However, this does not cover cases where the data model (e.g., implemented as JPA entities) is different from…

    read more

Cookie Consent Banner by Real Cookie Banner