Projects
Over the course of the last years I designed and developed quite a few applications using Microsoft technologies. This page describes some of the more interesting projects I worked on, and only work that is publicly available. Most of the projects described here I did for Theobald Software GmbH → and Peakboard GmbH →, two software companies based in Stuttgart, Germany.
The Peakboard platform brings low-code and AI to manufacturing and logistics. It connects real-time data from machines, sensors and IT systems such as SAP and turns it into industrial applications on the shop floor. Theobald Software develops solutions for integrating and delivering SAP data to cloud, BI, analytics, databases and other enterprise systems. Products such as Xtract Universal, Xtract IS and ERPConnect are used by companies worldwide.

Peakboard Platform Today
2026
Peakboard started in 2015 as a digital signage tool and has grown into a platform for industrial applications. I have been part of the project since the first line of code. Applications are built in the Designer, they run on screens, panels and mobile devices on the shop floor, and the Peakboard Hub keeps devices and central data under control. Today the platform connects live data from SAP, machines, databases and IT systems and turns it into interactive applications.
The next entries describe some of the newer platform features I have worked on.

Peakboard Flows
2024 – 2025
In the summer of 2024 I started to design and implement Flows, the part of a board that decides when things happen. The feature shipped in 2025. A flow defines which data source reloads, in which order, and what runs afterwards. A trigger starts the flow. It can run periodically, at a fixed time of day, when data in a list changes, or when a function is called. Each step reloads a data source or a dataflow, runs a function, or writes a result into a list.
I kept the model small on purpose. A step that runs a function decides how the flow continues. More complex logic belongs in a function, because there it can be tested. With Hub Flows a flow no longer needs a board. A nightly job that reloads a list and stores a result needs neither a screen nor a device on a wall.

Peakboard Building Blocks
2021 – 2025
I architected and built Building Blocks, the visual script editor of the Peakboard Designer and a second way to write logic besides Lua. Users snap graphical blocks together and the editor generates the matching Lua code while they build. It uses the same script engine and the same events as normal scripts. Local variables have types, so the editor can refuse combinations that would fail at runtime.
There are generic blocks for logic, loops, math, text, date and color. Other block families wrap the Peakboard data layer, for example SQL, MQTT, Azure, Hub lists, dataflows, timers and custom functions. The first version started in 2021 under the name Visual Coding and shipped in 2022. In 2025 I reworked the editor and added comments, block search and other aids for boards with hundreds of blocks.

Peakboard Extension Kit
2020 – 2025
In 2020 I designed and developed the Peakboard Extension Kit, a NuGet package with a handful of interfaces. A developer implements one interface and ships a DLL, and the new data source shows up in the Peakboard Designer next to the built-in ones. Extensions are foreign code, so they do not run in the runtime process. Each extension runs in its own host process and talks to the runtime over an IPC channel. An extension that leaks memory, blocks a thread or crashes on startup cannot take a board down.
Extensions exist for Dynamics 365, Microsoft Graph, OData, DB2, MySQL, PostgreSQL, Philips Hue, SICK RFID readers and more. They are installed from a gallery dialog in the designer. The kit started on .NET Framework with Remoting and System.AddIn, and I ported it to .NET 8 in 2025.
Peakboard.ExtensionKit on NuGet →Sample extensions on GitHub →Peakboard Templates →

Peakboard Dataflows
2018
In 2018 I developed Dataflows to shape data before it reaches the screen. A dataflow takes a data source and puts an ordered list of steps on top of it. A step can filter, rename, change a type, join or look something up. The result is a new list that behaves like any other data source, and nobody has to write a line of Lua. A preview shows the data as it looks after the selected step, so the effect of every step is visible right away.
The steps cover column operations, type changes, filter, sort, duplicates, row ranges, aggregation, union and the four usual join types. The step people asked for most is the lookup column. A machine reports an ID, the readable text lives somewhere else, and the lookup fills it in. A dataflow can also build on another dataflow, so a long chain can be split into smaller parts.

Peakboard Control Grouping
2018 – 2024
In 2018 I implemented control grouping in the Peakboard Designer. A group combines several controls on a screen so that they can be moved, copied, fixed, shown or hidden together. Groups have names, they can be nested, and a group can get conditional formatting, for example to hide it when a value changes.
Groups are also available in scripts and Building Blocks. A script can show or hide a group, print it, or send a screenshot of it by email, to OneDrive, to SharePoint or to the Peakboard Hub. In 2024 I reworked the arrangement logic.

Peakboard Lua Scripting & Script Editor
2016 – 2024
Peakboard boards are scripted in Lua, and the runtime is a .NET application. In 2016 I implemented the bridge between the two with MoonSharp, a Lua interpreter written in C#. Scripts run in the same process as the runtime, without a native library and without a separate process. .NET objects are not exposed automatically. Every type a script may use gets a descriptor class, and every member is made visible one at a time, so nothing leaks by accident.
Much of the work went into the conversions between the two type systems. Lua has one number type while .NET has many, so collections have to be normalised. Data rows have no fixed shape at all, because their columns come from the query the board author wrote. A missing column returns nil instead of stopping the board. In 2024 I reworked this scripting layer.

Peakboard Digital Signage Platform
2015 – 2018
In the autumn of 2015 I started designing and developing the Peakboard digital signage platform. The system has two parts: a WPF designer and the Universal Windows Platform (UWP) runtime application.
For the runtime I developed a custom web server and an administration website to upload and manage Peakboard packages containing the board and all of its screen definitions and resource files. Each board can be deployed directly from the Peakboard Designer application.

Xtract IS Table Join Query Builder
2015
In 2015 I developed a visual table join query builder as part of the Xtract IS product suite. With the component, table join queries are designed visually by selecting SAP tables, defining the relationships, adding output fields and limiting criteria. The builder also contains a criteria designer to visually define the WHERE and HAVING clause for the final join statement.
For the SAP side I developed a custom BAPI function module (Z_XTRACT_IS_TABLE_JOIN) that processes the join definition by generating a dynamic SAP Open SQL statement (INNER and OUTER JOINS).

ERPConnect Services Core Platform
2014
In 2014 I finished the work on the first version of ERPConnect Services Core. ECS Core is a service-oriented, claims-based and cloud-aware (Azure) web application platform (SOA) that provides enterprise-wide, SAP-related REST and OData based web services.

ERPConnect Services Web Service Designer
2013
In 2013 I developed the Web Service Designer application as part of the ERPConnect Services product suite, which covers the complete range of data integration between SharePoint and SAP.
With the designer, no-code SOAP or OData web services for SharePoint are designed and deployed on a workflow designer surface. C# expressions are supported to fine-tune each data mapping.

SAP HTML5 Sample Web Applications
2012
In 2012 I created two HTML5 sample web applications with animated visual effects. The demos display SAP customer and stock quantity data in real time. The SAP/.NET connectivity is handled by the ERPConnect library from Theobald Software.
A YouTube video shows the jQuery effects I used.

XQL – Xtract Query Language
2012
A few years ago I developed XQL, the Xtract Query Language (XtractQL). It has since been integrated into various Theobald products to retrieve SAP business data dynamically with a simple query language. The syntax is inspired by SQL and SAP ABAP language statements.

BCS Connector for SharePoint
2010
In 2010 I started designing and developing the BCS Connector for SharePoint. The application is a component of the ERPConnect Services product suite and connects SharePoint lists with SAP objects or tables, completely without programming knowledge.

Mindbak – Online Mind Mapping
2010
In 2010 I got the chance to develop a prototype of an online mind mapping tool in Silverlight. It is only a test and proof-of-concept project and somewhat buggy, but the basic functions work.
The maps are edited with keyboard and mouse, and topics can be moved by drag and drop.

LINQ to SAP for Visual Studio
2008
In 2008 I developed LINQ to SAP, a LINQ provider for SAP data sources and a Visual Studio plugin for ERPConnect to visually design SAP interfaces. The plugin provides a designer and a code generator that generates the SAP access layer code for C# and VB.NET.
The SAP objects (BAPI, table, query and others) are dragged and dropped into the designer work area. Complex BAPIs can be simplified so that only the elements that should be filled remain in the code generated by the Visual Studio designer.

Stock Quote Add-In for Excel
2007 – 2018
A few years ago Microsoft provided the MSN MoneyCentral Stock Quotes Add-In for Excel 2002. It was a neat tool, but all of a sudden it was no longer available. My Stock Quote Add-In for Excel is the replacement of the MSN add-in. It is based on the Excel-DNA library and retrieves stock data and FX rates from the Yahoo! Finance site with new Excel functions.
