The Problem Nobody Talks About 
 
 
 AI assistants are remarkably good at understanding what you mean. Ask Claude to 'find that contract we discussed last quarter,' and it knows you want a document search. But then what? The assistant has no documents. It has no index. It has a language model and your conversation history — and that’s it. 
 
 
 The typical answer is…

 Voice control is becoming increasingly important for smart home systems. However, most available solutions come with significant privacy concerns and hardware requirements. In this post, we’ll explore how to build a private voice satellite for HomeAssistant using iOS devices, focusing on local processing to maximize privacy and security. 
 
 
 Current Challenges with Voice…

 Core Software Engineering Fundamentals 
 
 
 These foundational books will help you build a strong base in software engineering principles and practices. 
 
 
 Project Management & Process 
 
 
 
 The Mythical Man-Month . Essays on Software Engineering. Frederick P. Brooks 
 
 
 The Deadline : A Novel About Project Management. Tom DeMarco…

 Section 1: Developer Tooling & Testing 
 
 
 Tools and frameworks that support the development and testing process 
 
 
 Adopt 
 
 
 
 
 IntelliJ IDEA IntelliJ IDEA, the one and only IDE you will ever need! 
 
 
 Playwright Industry standard for end-to-end testing, offering superior reliability and features compared to alternatives…

 As someone who’s been writing about technology for over two decades, I’ve seen my fair share of both brilliant innovations and spectacular failures. Today, let’s take a tongue-in-cheek look at some absolutely absurd technical ideas that - knowing our industry - are probably already being implemented somewhere in a VC-funded startup. This is meant to be satirical, but with just enough…

 These posts cover key areas that I think remain crucial in 2024 and the future: 
 
 
 
 
 Microservices and distributed systems 
 
 
 Application modernization 
 
 
 WebAssembly and modern web development 
 
 
 Testing and quality assurance 
 
 
 AI integration 
 
 
 IoT and robotics 
 
 
…

 Introduction 
 
 
 Maintaining a technical blog requires constant attention to quality, readability, and SEO optimization. While creating fresh content is important, enhancing existing posts can be equally valuable. This guide explores how to
leverage Anthropic’s Claude API to automatically improve your Hugo blog posts while preserving their core message and authenticity. In…

 How to calibrate a 2D magnetometer with ellipsoid fitting 
 
 
 Step 1: Load uncalibrated magnetometer data as CSV 
 
 The data was recorded by logging data from the magnetometer. 
 
 
 Take care! This calibration process should be done while all systems of
your robot or solution are running, so in a real life environment. This
will make sure we take…

 Standing on the shoulders of giants 
 
 
 My custom Roomba vacuum uses a lot of free available open source software. Without it, it wouldn’t be possible to create
and compose a complex system such as an autonomous robot in a reasonable amount of time. 
 
 
 The core ingredients are: 
 
 
 
 
 Raspberry Pi Zero 2 W 
 
 
 Ubuntu 64bit…

 Maybe too much time 
 
 
 I found an outdated Roomba 581 vacuum robot in the attic. I just couldn’t throw it away, so
I decided to pimp it a little. 
 
 
 A new hobby project was born! 
 
 
 
 
 Prototype:
 
Release version:
 
 
 
 
 
 After all, the Roomba hardware is a good vacuum, and it offers a serial…

 A story of two worlds 
 
 
 Java Swing is part of the Java Runtime since version 1.2. Swing is also part of the Java Foundation Classes, which are the library for creating component bases, modular, portable, and cross-platform graphical user interfaces. Being part of the core runtime, Java Swing is a valid choice for a lot of projects running in a different environment, starting…

 Self-Contained-Cystem, what is it? 
 
 
 Self-Contained-System, referred to the following short SCS, is an architectural approach. The idea is to map requirements using individual,
functionally independent systems. These systems include everything for mapping the necessary requirements, starting with data management,
the actual business logic and finally a complete user…

 Packaging Java applications for the Desktop has never been an easy task. In this blog post I want to look at the past
to show where we are coming from, look at the present to see what we have now and finally try to take a look into the
future to get a glimpse of what might be coming. 
 
 
 The Past of Java Packaging 
 
 
 Before Java 5.0 there was no built-in…

 State of the union 
 
 
 WebAssembly for starters is a standard for high-performance, size-optimized executable code for the Web.
It was released in March 2017 by the WebAssembly working group as version 1.0, which is basically a MVP
(Minimum Viable Product), but the initial development started in June 2017. WebAssembly is the successor
 asm.js and the Google Native…

 An office fairy tale 
 
 
 Once upon a time in an office far far away worked four very nice IT people very hard
in their office cubicles. Their names were Alice, Bob, Carol and Dave. 
 
 
 They worked very hard each day. They started work at 9 o’clock, and finished often
after sunset. They were very happy in their business, but they were very lonely
in…

 Today, I want to write a little bit about object orientation and WebAssembly. For starters, what is WebAssembly?
WebAssembly is a new portable, size and load-time efficient format suitable for compilation to the web. It is an open
standard by a W3C community group and is currently integrated into all major browsers such as Firefox, Chrome, Edge and
WebKit. WebAssembly aims to…

 Apache Solr is a very powerful and mature enterprise search server. It comes with a lot of handy
and useful features. One of its features is the query API. 
 
 
 Now, what is the query API? This API is used to search thru the indexed documents, as the name suggests.
But how are the documents searched? Well, the search is based on a search query. Basically the search…

 The Idea 
 
 
 JavaScript is everywhere! Almost every device we use today is connected to the Internet and supports JavaScript by its runtime environment. But in the same way new devices arrive on the market, old software written in plain old Java is still alive and useful. The idea is now to bridge the gap between this shiny new JavaScript world and our old but still useful…

 Microservices everywhere 
 
 
 Today, Microservices are a common software modeling technique. This style
is based on the principles behind Domain-driven Design , where every
bounded context is equivalent to a service. If we also take the Twelve-Factor App manifesto into
consideration, we able to create scalable and cloud ready systems. 
 
 
 But this…

 A very common problem 
 
 
 Unit testing is a today must have. Together with Test-driven Development 
and Frameworks such as JUnit we can easily prove that our code fulfills a set of requirements and business invariants. We use metrics
like 'Test coverage' to get insight about the completeness of our tests. A very common assumption taken from a test coverage of 80…

 The Beginning 
 
 
 This Blog started its life a few years ago. At the beginning, I was using DokuWiki for writing
and editing. This was good, but I was very limited by the provided editors and markup. So I came to the point that I needed
something else. And you will of course ask 'what else'? Well, for a Blog, there is a very popular answer: Use Wordpress ! 
 
…

 Spring Boot is a very cool framework for building modern, cloud-ready software. It also comes with a set of production ready endpoints which allow to administrate and monitor running applications. Unfortunately there is no admin user interface included in Spring Boot. 
 
 
 The good people at Codecentric recently released a very nice one, which is also available at GitHub. Here…

 A good method implementation validates all of its preconditions before it continues. Luckily there are different frameworks such as Project Lombok, JSR 303 Bean Validation API and JSR 308 Java Type Annotations available for this job. All of them are based on Java Annotations at method arguments, but they differ in runtime and compile time behavior. Here are some examples. 
 
 
…

 Some years ago I wrote a JavaFX based Game authoring system . It was also written to be ported to different run time environments by using transpiler technologies such as GWT or TeaVM. While TeaVM was heavily improved over time, I haven’t seen a new GWT release in the wild. Now, GWT 2.8.0 is released, and the question arises: Is the compiler still as slow as in 2.7? Well, lets take a look!…

 Sometimes we use Maven “war” packaging and add the RPM Plugin to create a rpm which contains the project primary artifact. When this rpm needs to be published to the Maven repository, it can be added as a secondary artifact to the build. Here is an example of the plugin configuration in pom.xml: 
 
 
 
…

 Web Components are a very amazing new feature of HTML5. Google released its Polymer project which adds Web Components support to modern Web Browsers. Using Web Components, we can create very complex custom HTML Tags which are based on a very powerful templating engine, pretty cool JavaScript bindings, data model abstractions and also JavaScript and CSS encapsulation. Polymer comes with a set…

 Often we need to schedule Jobs. Standard Java CDI does not have a build in Job Scheduler feature. But this functionality can be easily implemented by using the CDI extension mechanism. 
 
 
 I wrote a simple CDI extension for Job scheduling backed by the Quartz Framework. It is hosted at Github . 
 
 
 To schedule a Job, we basically need to do the following things:…

 Starting with Maven 3.1, Sonatype Aether( github.com/sonatype/sonatype-aether ) was replaced with Eclipse Eather( www.eclipse.org/aether ). Now, sometimes we need do download additional Artifacts from Maven repositories during execution time of custom Maven plugins. As the Maven and Aether documentation is not very handsome, here is a short example about how to programmatically download and…

 One of my favorite projects is my JavaFX based Gameengine . It has a flexible entity component system, supports WYSIWYG game design and also has multiplayer network support. The entity component system is backed by a LUA based scripting system, the game designer can react freely on game events and script entity behaviors with the wonderful LUA scripting engine.
Now, the game designer…

 Two years ago I wrote a Java based GameEngine . I used technologies such as GWT and TeaVM to transpile the Java source code to JavaScript. The Game Engine used the HTML5 Canvas to render the current game state representation to the user. For the past few weeks I had some time to implement new features for this cool engine. I also did some profiling to see if there are bottlenecks in the…

 Last year I wrote a cross platform game engine . It used a JavaFX based Game Authoring System and had a Java based Game Runtime, which was transpiled to different platforms such as Android, JavaScript over GWT and JavaFX. 
 
 
 Here is a screenshot of a simple platform game based on the GameEngine, some physics stuff and a lot of Java code: 
 
 
 
 
 
…

 Sometimes we have to set the HTML base Tag from within a JSP page. For this purpose, we have to compute the correct URL, because the JSP API does not fully expose it. The following shipped shows how it can be cone: 
 
 
 
 <%@ page contentType='text/html;charset=UTF-8' language='java' %>
<%@ taglib prefix='fn' uri='http://java.sun.com/jsp/jstl/functions' %>
<c:set…

 Often we are writing logs files for our program execution. The logs are sometimes hard to parse, we have to look twice at them to detect error patterns. But it is possible to create a log file layout that is very fast human scannable. Using such kind of log file layout, we can easier scan for common error patterns. 
 
 
 This can easily be achieved using Log4J and some custom…

 A few weeks ago I decided to enhance my knowledge in game coding, so I bought two very interesting books: “Real-Time Rendering, Third Edition by Thomas Akenine-Möller, Eric Haines and Nety Hoffmann” and “Game Coding Complete, Fourth Edition by Mike McShaffry and David “Rez” Graham”. After some insightful moments, hundreds of pages read and sleepless nights, I wanted to create my own game. So…

 Recently i stumbled across the Owner Library( owner.aeonbits.org ). Using this small piece of technology, usage of Java property files can be reinvented! Now we can access properties using a refactoring safe interface the following way: 
 
 
 
 public interface ServerConfig extends Config {
 @Key('server.http.port')
 int port();


…

 Lets check a very simple example: we want to fill a multi-dimensional array with values. What is the fastest way to do so? The following piece of code gives us surprising results: 
 
 
 
 public class CacheTest {

 final int SIZE = 256;

 void rowOrderTest() {
 int theArray[][][] = new int[SIZE][SIZE][SIZE];
 long theTime =…

 Java CDI(Context and Dependency Injection) JSR-299 is available on Java EE application servers, but CDI(Weld is the reference implementation) is also embeddable in Java SE standard edition. Unfortunately Java EE functionalities like security or transaction support are not available here, for instance the following code just does not work as expected when running on CDI SE: 
 
 
…

 JUnit is a cool and powerful framework for unit test creation. But there is a drawback: we need to create a lot of assertions! Without assertions, we can create a very good path coverage, but it is not guaranteed that the code works correctly. This can be really cumbersome while we are working with big JavaBeans or Entities. Check for instance the following piece of code: 
 
 
…

 Based on my previous post about Domain-driven Design Architecture i want to offer some implementation details about how to build a DDD-style application based on JSF2, PrettyFaces, EJB and CDI. I will give some code samples to give you an idea about how to start with this topic. Everything else is up to you :-). Also please note that most of the ideas in this example is inspired by the…

 It is possible to use CDI and Weld in a Java command line program. There are several options to bootstrap the CDI container. Weld offers a special Main class that does the job for us. But sometimes we just want to shield the CDI dependencies and provide our own main method. Now comes the tricky part: how do we pass command line arguments to the container, or even boot managed beans by…

 The last days i fiddled a bit with OpenGL 2 on Android. The Android OpenGL tutorials are a bit outdated, so i had to do some API research by myself and copy and merge the provided examples together. Here is a screenshot of the running OpenGL App: 
 
 
 
 
 
 It supports touch events to rotate a triangle around and render the animation. 
 
 
 To run OpenGL,…

 Often we need to iterate over a String. Java gives use several options. We can either use a simple loop with an index using the following style: 
 
 
 
 for (int i=0;i<theLine.length();i++) {
 char theCurrentChar = theLine.charAt(i);
 // Do something with the character
} 
 
 
 
 Or we can use the advanced for style using a character array the…

 There is a cool computer vision library called OpenCV available. Using OpenCV, we can do stuff like object detection, feature extraction and other computer vision tasks. OpenCV is a native library, but it also comes with JNI Wrappers for Java and the Android platform. 
 
 
 For the beginning, i want to implement real time face detection on my Samsung Galaxy S3 with OpenCV and…

 For one of my Android Apps Leas Painting App i needed to implement a sketching and handwriting functionality. The user must be able to draw with his fingers on the canvas and sketch something. This is a screenshot of my App: 
 
 
 
 
 
 But on my way i had to tweak with Android to make the App responsive even on slower devices. Here are my findings about how to keep…

 Hibernate Validator since version 4.2 supports method validation. For instance consider the following Java code: 
 
 
 
 package de.mirkosertic.aspectj;

import javax.validation.constraints.NotNull;

public class Example {

 public void doNothing(String aValue) {
 }

 public String getString(String aValue) {
 return aValue;
…

 Once i tried to figure out the difference between JAXB XML and JSON Java Object serialization performance. I wanted to know which one has the better run time performance and thus scales better. Here are the results! 
 
 
 The test setup is a Windows 7 64bit machine with Intel Core2 Quad Q9450 CPU @2,66GHz. Java Runtime is 1.7.0_07(quite old, i know) 
 
 
 The…

 Often we need to integrate different applications. This can be done at different integration levels, like integration using the database, integration using services and sometimes integration at user interface level. 
 
 
 Different solutions are available for user interface level application integration. The most famous are Portlets. A Portlet requires a Portlet Container to…

 Often we need to visualize complex data in a fancy way. The core JavaFX controls are sometimes capable to do it, but most of the time they are not. So the question is: do we need to write a custom control? 
 
 
 The answer is: depends! Since JavaFX supports the famous WebView, we can also use some embedded HTML5 with JavaScript libraries like D3.js to visualize data driven…

 Microsoft Windows search is not fast, and it also does not give us good search results. So i thought about writing my own Search Engine for the Desktop. It should crawl the file system, extract the content and meta data and finally should give the same results as Google. 
 
 
 I also wanted to test some new technologies like JavaFX with embedded HTML5, Apache Lucene as a full…