Yesterday we had our next project event – the local elections in Nordrhein-Westfalen, dated on 13.09.2020 and yesterday, 27.09.2020.

Our company was responsible for the graphics shown by the local WDR public broadcaster (and in their “Lokalzeiten”), calculating the result for predictions and projections for Nordrhein-Westfalen, Köln and Dortmund.
In parallel to all the stuff we did for television, we were responsible for programming a result portal (and offering an input system for results) used in the Internet.
The “Internet”-oriented system is based on Gemstone/S, an object oriented database made by GemtalkSystems.
Within the project several languages were used (Python for the “Glue”-logic, Sencha ExtJS for all UI stuff and Smalltalk (in the database)).
PUM – our modelling tool – generates all the interface code and classes for languages used here externally and the model code needed for the database itself.
In contrast to other election project our customer wanted to enter the result by themselves, so they got a special input/viewer tool with different content for all eleven TV studios available in the WDR. This tool is written in Sencha ExtJS and communicates via an API directly with the Gemstone/S database:

Entering the results into the database triggers several job to be done:
- Check the results for correctness
- Put the result to the RenderService (a Unity/3D server) and produce professional graphics like the one forthe TV broadcaster.
- Export all needed results to a nodejs-script producing static HTML pages for sharing and presentation for the users out there.
The television system is written in .NET/C# and communicates with the Gemstone/S system via simple file based commands. That’s strange isn’t it – no direct IP connection, but transfers via the file system. We used simple files for the last 20 years and this simple data structure is very valuable when doing debugging lightly coupled systems.
One of the most interesting part is the Unity/3D render server. The raw data for a picture contains not only the election results (with additional informations like the name of the region, the header and that stuff), but also information for the animation needed for the TV studio.
For the Internet we do not need all these animation, but only a photo of the end-screen of the animation:

Pingback: Election Reporting System written in Smalltalk (Gemstone/S) – Joachims Small World