NanoNet - simple Java neural network library

Using backpropagation and sigmoid activation function. | 4/14/2019

NanoNet is a very simple Java neural network library using backpropagation and sigmoid activation function. I wrote the code a while ago for educational purposes.

Java async/await nonblocking code library

Write sequential style nonblocking code using a fixed threadpool with Async-Complete for Java | 4/1/2019

Async-Complete (aka Async-Await) is a library for writing asynchronous code in a more sequential style. It provides executing async, background and event-based code using a bounded or unbounded thread pool, unchecked exception handling and easy scheduling and cancelling of (recurring) tasks.

Licensed under the Apache License, Version 2.0.

SDCLib/J contribution fork

Contributing to IEEE 11073 SDC Family java webservice stack | 2/2/2019

As former main author of the official project in my last job at SurgiTAIX AG, I will maintain this fork to implement the newest features and bugfixes for research and testing purposes. Via pull requests I will contribute my work to the official project.

For more information, please refer to

LambdaLink - Distributed INotifyPropertyChanged events for .NET

.NET webservice library | 2/2/2019

LambdaLink is a small library for propagating .NET INotifyPropertyChanged events over network connections. Licensed under The MIT License.

Version 1.0 is out, For source code and documentation refer to


Instantly backup your files on change | 3/21/2014

DocuCast is a real time file revision and backup system for use in professional and private environments. DocuCast stores important documents and other files quickly after they have changed!

You can read more here!

jReflect: lightweight java web-server & -framework


jReflect is a very small & lightweight java web-server and -framework for creating (distributed) pure java web applications.

It has been released as open source under the MIT license.

Go to the project page, or download diretlcy from sourceforge.


Get webpage contents with high-speed despite low bandwidth connection | 2/23/2014

RoadReader is an online proxy HTML-Reader with the goal of tranferring a minimal amount of data with high-speed while preserving most of the readable information. It can be used to surf the web using ultra-low bandwidth connections (e.g. bad mobile connections).


  • Requested webpages are read out on the RoadReader server using an HTTP client
  • Processing
    •  HTML is cleaned from any junk & media
    • Useful information is extracted & content is reformatted (optimized for common news pages)
    • All hyperlinks are adjusted to refer back to the RoadReader server
  • The final HTTP response is compressed using gzip with respect to RFC 2616


The server has been shut down for the time being.



Tiny C++ garbage collection helper library | 1/5/2014

SimpleRAII is a tiny garbage collection helper class that eases the use of the RAII idiom (Resource Acquisition Is Initialization).

I released it some time ago, find out more!



100% Java player for the soma fm web radio | 1/4/2014

jSomaPlayer has been released: it is an open source pure java player for the soma fm web radio.

I wrote it to build a WiFi radio using a Raspberry Pi, so the player software needed to be able to run in command-line mode. The plan was to get the radio casing a kind of retro look. Since a display (showing stream and title info) would just have looked bad, jSomaPlayer can be queried and controlled remotely from anywhere in the network - with a GUI of course.

If you like to know more about jSomaPlayer, click hereOr go directly to the sourceforge page.


Pictures of the WiFi radio

Link to soma fm

SomaFM commercial free internet radio

UIPSnap - Windows Forms "serialization" (C# / .NET)

Technologies: .NET (C #), Windows Forms, Reflection, XML

UIPSnap (User Interface Property Snap) is a software library for storing and restoring the state of .NET Forms user interfaces. With only a few lines of code, properties of all the controls contained in a form (eg position, size but also selections and much more) can be transferred into an XML format and stored, for example, in a file or database.

Especially extensive user interfaces, which are composed of many simple elements, are ideal for this purpose. By specifying the order and special properties filters, you can customize the serialization process.


To the product page


Example Code:

UIPSnap snap = new UIPSnap(); 
string xml = snap.toXML(this); 
File.WriteAllText("uistate.xml", xml);


Example GUI:



Simple and powerful timetracking for vtiger CRM


Technologies: .NET (C #), REST-based web service client

With the help of the "Timecontrol" module, the well-known open-source CRM ( ) system can easily be extended to include the possibility to record working hours and assign them to any objects in CRM. Unfortunately, the module is awkward to use and its functionality is immature. In addition, the operation is done in the browser and requires a login process.

Based on the previously developed vTiger Client Library and modeled on the Anuko Tracker ( ) I designed the Windows timetracker for vTiger. This runs inconspicuously and permanently during working hours, can be minimized if necessary in the task bar, from where he occasionally informed about running times or its status. Once provided with credentials, eliminates the cumbersome login process, or is automated.

Also automated is the intelligent synchronization process, which provides data in the absence of Internet connection (eg working on the road) offline, caches entries and transmits later. Data reconciliation for changes to data on the server (vTiger) or the client (Tracker) is easily possible in both directions. The tracker offers many more functions (eg warning messages when time quotas are exceeded) that are easy to use and fully configurable.


A product variant is available from the Open Source Modules Downloads UG .

Genetic algorithm for position determination in parallel kinematics


Technologies: .NET (C #), C ++

Identifying the position and orientation of an end effector relative to the robot base is called "direct kinematic problem" (DKP) in robotics. While this is very easy to determine in the case of serial kinematics, so-called closed kinematic chains, with a parallel arrangement of the mechanical components, lead to calculations becoming very complex. To circumvent this problem, approximate solutions are available that make use of the simple solvability of the reverse inverse kinematic problem (IKP). Description of the functions IKP and DKP for this case:

  • IKP (easily detachable)
    • Input: Spatial coordinates X, Y, Z, Roll, Pitch, Yaw
    • Output: Drive positions on the base platform
  • DKP (difficult to detach)
    • Input: Drive positions on the base platform
    • Output: Spatial coordinates X, Y, Z, Roll, Pitch, Yaw

The calculation of the DKP coordinate vector (6 values) using a so-called real-coded genetic algorithm with the aid of the IKP proceeds as follows:

  • Rate a lot of random space co-ordinates with meaningful delimitation of the solution space. This is the initial population of the genetic algorithm.
  • The initial population, together with a weighting function (Euclidean distance of two vectors), is the input for the sequence, which is repeated until the accuracy of the best candidate is sufficient, or a maximum number of iterations is achieved:
    • Select two good candidates x times random (calculation IKP, comparison with drive positions and rating) from the population, where x is the number of candidates. Form a progeny x times by merging the two candidates (joining 12 coordinates to 6 coordinates with random crossover .
    • Mutate the values ​​of the offspring (decision randomly) and put this into a new candidate list.
    • Check the result (abort criterion) and use the new list gfs. for the next iteration.

One particular enhancement is the different mutation of coordinates in each iteration, a heuristic technique known as simulated annealing . The algorithm calculates a set of coordinates consisting of 6 values ​​with an accuracy of at least 6 decimal places (nm) in well below 100ms (2.5 GHz CPU).

Service Based Assembly Control (SACO)


Technologies: .NET (C #), GUI, Network Programming (WCF, UDP Unicast / Multicast), XML

SACO ( Service-Based Assembly Control) is a distributed software package that facilitates the creation and use of services based on Windows Communication Foundation (WCF) technology. Services created for SACO focus on providing interfaces for using PC-controlled devices or low-level machines connected to different computers on a local area network (LAN). Simply put, devices connected to a PC can be shared with other PCs.

SACO was developed with the objective of forming the basis for a distributed production control system in the future.

SACO consists of three components:

  1. The SACO platform manages services that are integrated as plugins.
  2. The SACO Client Library enables easy localization and instantiation of a service.
  3. The SACO User Auth Library performs an authorization check to protect against unauthorized control.

Techniques and Features:

  • Advantages over WCF
    • Very easy configurability of the services with XML: Usual settings required in WCF (eg address, behavior and binding) are completely eliminated.
    • Automatic service resolution : The location of a service can be resolved by a unique name without knowing its IP address (client-server or multicast mode).
    • User authentication security mechanisms: No Windows credentials are required and no validator needs to be implemented. It is possible to carry out an authorization on the methodological level of the service (flexibility).
    • Controlled hosting with a clear user interface.
  • Dynamically enable and disable the services
  • Integration and exchange of (new) services (plugins) during program runtime (extensibility).
  • Automatic version control of client and service.
  • Automatic concurrent client access synchronization
  • Open architecture and modular design.
  • In principle, no limitation in the number of simultaneously running and networked platforms (scalability).
  • Dummy services for the "offline" use of services: Even if devices are not connected, the services worked and can thus be used for simulations.
  • Detailed logging (GUI, File).

SACO was developed under my lead at the Fraunhofer IPT and is used there in the Production Machines (Automation) department.

Screenshot of the SACO platform:

Screenshot of a page of the API Documentation of a robot control service (created with Doxygen ):

eLearning platforms


Within the scope of a consulting contract, the aim was to deliver a product recommendation for a learning content management system (LCMS) within a short time for a customer project that is as close as possible to customer requirements. The challenge was that the market for LCMS systems is generally highly competitive and very confusing with a large number of products.

Since requirements can not be directly compared with product properties, a rating system with categories and special selection criteria had to be developed first. By using weighting factors, different scenarios could be compared at the end by changing the weighting.


  • Analysis and completion of customer requirements
  • Development of a category list with selection criteria and a rating system
  • Creation of a market overview and a rough selection of providers
  • Defining a set of candidates and evaluating each criterion
  • Preparation of a project report with a product recommendation

For the first orientation, a use case diagram has been created for LCMS functions and their user groups:

Detail of selection criteria table (Excel):

Result with special emphasis: The winners were the systems CLIX and ILIAS:

The ILIAS system (Integrated Learning, Information and Cooperation System) under GPL has been developed by the University of Cologne since 1997/1998. The LMS CLIX is offered by IMC AG (founded in 1996 as a spin-off of the University of Saarland) and exists in the variants CLIX Enterprise, CLIX Campus and CLIX Start.

Vtiger .NET webservice client library


Technologien: .NET (C#), HTTP Client, MD5, Json

Nach dem Vorbild der vtiger webservice library ( wurde in diesem Projekt (VTNetClient) eine Bilbliothek zur Kommunikation mit der REST-basierten vtiger-API für .NET entwickelt. Technisch werden dabei Webservice-Methoden über HTTP-POST und -GET Anfragen aufgerufen. Die Übersetzung dieser Methoden in eine übersichtliche und gut strukturierte .NET-API erleichtert das Zusammenführen von .NET Anwendungen mit dem vtiger CRM.

Techniken und Features:

  • Methoden zur Manipulation von Daten in vtiger Modulen (z.B. create, retrieve, update, delete [CRUD], query).
  • Generelle Invoke Methode, mit der alle REST Methoden verwendet werden können (auch zukünftige).
  • Umfangreiche API- und Entwicklerdokumentation mit Beispielen zur Verwendung.


Prinzip der Verwendung: Eine Anwendungsklasse (app class) referenziert die VTNetClient Bibliothek, die Methodenaufrufe in HTTP GET/POST Anfragen übersetzt:


Screenshot der HTML API Dokumentation (erstellt mit Doxygen):


Screenshot einer Seite der Entwicklerdokumentation (Methoden mit Beispiel Quellcode):


NanoNet - simple Java neural network library
Using backpropagation and sigmoid activation function. | 4/14/2019

NanoNet is a very simple Java neural network library using backpropagation and sigmoid ... Read More

Java async/await nonblocking code library
Write sequential style nonblocking code using a fixed threadpool with Async-Complete for Java | 4/1/2019

Async-Complete (aka Async-Await) is a library for writing asynchronous code in a more ... Read More

SDCLib/J contribution fork
Contributing to IEEE 11073 SDC Family java webservice stack | 2/2/2019

As former main author of the official project in my last job at SurgiTAIX AG, I will maintain ... Read More

More Blog Entries