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 Designer 2026

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.

Client: Peakboard
Technologies: .NET, C#, WPF, Lua Scripting

Peakboard Flows

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.

Client: Peakboard
Technologies: .NET, C#, WPF

Peakboard Building Blocks

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.

Client: Peakboard
Technologies: .NET, C#, WPF, Lua

Peakboard Extension Kit

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.

Client: Peakboard
Technologies: .NET, C#, IPC, .NET Remoting

Peakboard Dataflows

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.

Client: Peakboard
Technologies: .NET, C#, WPF

Peakboard Control Grouping

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.

Client: Peakboard
Technologies: .NET, C#, WPF

Peakboard Script Editor

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.

Client: Peakboard
Technologies: .NET, C#, Lua, MoonSharp

Peakboard Designer

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.

Client: Theobald Software / Peakboard
Technologies: .NET, C#, UWP, WPF, Lua Scripting

Xtract IS Table Join Query Builder

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).

Client: Theobald Software
Technologies: .NET, C#, WPF, WinForms, SAP, ABAP

The ECS Core management site

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.

Client: Theobald Software
Technologies: .NET, C#, ASP.NET MVC, Web API, ERPConnect, Azure

A service workflow in the Web Service Designer

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.

Client: Theobald Software
Technologies: .NET, C#, WPF, SharePoint

The two SAP HTML5 demos

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.

Client: Theobald Software
Technologies: .NET, C#, ASP.NET MVC, Web API, jQuery, ERPConnect

The XtractQL Explorer

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.

Client: Theobald Software
Technologies: .NET, C#, Compiler Techniques

The BCS Connector main window

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.

Client: Theobald Software
Technologies: .NET, C#, WPF, SharePoint

The ERPConnect Services Designer in Visual Studio

ERPConnect Services for SharePoint

2010

In 2010 I started designing and developing ERPConnect Services Runtime, the first component of the ERPConnect Services product suite. The tool gives .NET developers the opportunity to use SharePoint as an SAP data hub.

An optional plugin for Visual Studio (see screenshot) lets developers design SAP interfaces with a graphical designer.

Client: Theobald Software
Technologies: .NET, C#, ASP.NET, Visual Studio Extension, SharePoint

A mind map in Mindbak

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.

Technologies: .NET, C#, Silverlight

The LINQ to SAP designer in Visual Studio

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.

Client: Theobald Software
Technologies: .NET, C#, Visual Studio Extension, ERPConnect, DSL Tools (Modeling SDK for Visual Studio)

The Stock Quote Add-In in Excel 2013

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.

Technologies: .NET, C#, Office Development