Projects
This website is currently being reworked. Some content is not yet complete or up to date.
Over the course of the last years I was designing and developing quite a few applications using Microsoft technologies. This page describes some of the more interesting projects I was working on and only work that is public available. Most of the projects described here I have done for Theobald Software and Peakboard, two software companies based in Stuttgart, Germany.
The Peakboard platform, developed by Peakboard GmbH, 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 smart industrial applications on the shop floor.
Theobald Software GmbH develops interfaces that unlock SAP data for other systems. Products such as Xtract Universal, Xtract IS, and ERPConnect move SAP data into databases, BI and analytics tools, and cloud platforms and 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.
Customer: Peakboard
Technologies: .NET, C#, WPF, Lua Scripting
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.
Customer: Peakboard
Technologies: .NET, C#, WPF
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.
Customer: Peakboard
Technologies: .NET, C#, WPF, Lua
Peakboard Extension Kit
2020-2025
In 2020 I designed and developed the Peakboard Extension Kit, a NuGet package with a handful of interfaces. You implement one interface, ship a DLL, and your own 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
Customer: Peakboard
Technologies: .NET, C#, IPC, .NET Remoting
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.
Your first steps with Dataflows
Customer: Peakboard
Technologies: .NET, C#, WPF
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.
Customer: Peakboard
Technologies: .NET, C#, WPF
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 scripting documentation
Customer: Peakboard
Technologies: .NET, C#, Lua, MoonSharp
Peakboard Digital Signage Platform
2015-2018
In the autumn of 2015 I started designing and developing the Peakboard digital Signage platform. The system comprises of two parts: A WPF designer and the Universal Windows Platform (UWP) runtime application.
For the runtime I have developed a custom web server and administration website to upload and manage Peakboard packages containing the board and all of it's screen definitions and resource files. Each board can be directly deployed from the Peakboard designer application.
Customer: Theobald Software / Peakboard
Technologies: .NET, C#, UWP, WPF, Lua Scripting
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. The component allows to visually design table join queries 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 is processing the join defintion by generating a dynamic SAP Open SQL statement (INNER and OUTER JOINS).
Customer: Theobald Software
Technologies: .NET, C#, WPF, WinForms, SAP, ABAP
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) to provide enterprise-wide, SAP-related REST and OData based web services.
Customer: Theobald Software
Technologies: .NET, C#, ASP.NET MVC, Web API, ERPConnect, Azure
ERPConnect Services Web Service Designer
2013
In 2013 I developed the Web Service Designer application as part of the ERPConnect Services product suite, a suite which allow you the complete range of data integration between SharePoint and SAP.
The designer is a fantastic tool to visually design and deploy no-code SOAP or OData web services for SharePoint by using a workflow designer surface. Also, C# expressions are supported to fine tune each data mapping.
Customer: Theobald Software
Technologies: .NET, C#, WPF, SharePoint
SAP HTML5 Sample Web Applications
2012
In 2012 I created two HTML5 sample web applications with stunning visual effects. The demos are displaying SAP customer and stock quantity data in real time. The SAP/.NET connectivity is handled by the ERPConnect library from Theobald Software.
You may check out the videos (links) below I have created to show the jQuery effects I used:
YouTube video of the stock quantity demo
YouTube video of the customer information demo
Customer: Theobald Software
Technologies: .NET, C#, ASP.NET MVC, Web API, jQuery, ERPConnect
XQL - Xtract Query Language
2012
A few years ago I developed XQL, the Xtract Query Language (XtractQL), which got integrated in various Theobald products in the meatime in order to dynamically retrieve SAP business data by using a simple query language. The syntax is inspired by SQL and SAP ABAP language statements.
Customer: Theobald Software
Technologies: .NET, C#, Compiler Techniques
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 allows you to connect SharePoint lists with SAP objects or tables – completely without programming knowledge.
Customer: Theobald Software
Technologies: .NET, C#, WPF, SharePoint
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 tools gives .NET developers the opportunity to use SharePoint as a SAP data hub.
An optional plugin for Visual Studio (see screenshot) allows to design SAP interfaces with the help of a sophisticated graphical designer.
ERPConnect Services videoERPConnect Services product page
Customer: Theobald Software
Technologies: .NET, C#, ASP.NET, Visual Studio Extension, SharePoint
Mindbak - Online Mind Mapping
2010
In 2010 I got the chance to develop a prototype of an online mind mapping tool in Silverlight. It’s only a test and proof-of-concept project and somewhat buggy, but basic functions are working.
You can edit the maps using the keyboard and mouse. You can also move topics using drag and drop.
Give it a try: Mindbak.com.
Technologies: .NET, C#, Silverlight
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 code generator to automatically generate the SAP access layer code for C# and VB.NET.
The SAP objects (BAPI, Table, Query, etc.) are simply dragged and dropped into the designer work area. Complex BAPIs can be simplified so that only the elements that should be filled remain to be addressed in the code generated by the Visual Studio Designer.
Customer: Theobald Software
Technologies: .NET, C#, Visual Studio Extension, ERPConnect, DSL Tools (Modeling SDK for Visual Studio)
Stock Quote Add-In For Excel
2007-2018
A few years ago Microsoft was providing the MSN MoneyCentral Stock Quotes Add-In for Excel 2002 and it was a really neat tool, but all of a sudden this tool was not avaiable anymore. My Stock Quote Add-In For Excel is the replacement of the MSN Add-In, based on the fantastic Excel-DNA library to retrieve stock data and FX rates from the Yahoo! Finance site using new Excel functions.
Technologies: .NET, C#, Office Development
