Monthly Archives: June 2018

Upcoming talk at Trends in Functional Programming 2018

As part of my work at the Fraunhofer-Chalmers Research Centre for Industrial Mathematics, I have been working on a platform for distributed data analytics. I will present one facet of it, updating code on client devices without restarting them, at the upcoming conference Trends in Functional Programming 2018, which will take place from June 11 to June 13 at Chalmers University of Technology in Gothenburg, Sweden.

The abstract is reproduced below. Note that this is a work-in-progress paper or an extended abstract, depending on how you want to call it.


Active-Code Reloading in the OODIDA Platform
Gregor Ulm, Emil Gustavsson, Mats Jirstrand
Fraunhofer-Chalmers Research Centre for Industrial Mathematics, Sweden

The OODIDA (On-board/Off-board Distributed Data Analytics) Platform has been designed for distributing concurrent data analysis tasks to a network edge devices that are connected to a central server. It has been implemented in Erlang and Python. Its focus is the automotive industry, even though it is, in principle, a general solution. The heavy lifting is performed by edge devices. In contrast, the central server mostly performs supplementary tasks. One practical issue is that some data analytics tasks, for instance explorations of machine learning algorithms, do not lend itself well to the paradigm of deploying a new software installation to the edge device as it is both more time-consuming and inconvenient, due to the necessity of having to restart the applications that are executed on an edge device. As a response to this problem, we developed a solution for reloading active code on the client, which means that a data analyst using the OODIDA platform can define a custom function in Python and use it for local aggregations on the affected edge devices. This makes OODIDA even more flexible. It also enables new use cases such A/B testing of algorithms or experimental explorations. In particular the latter would have been inconvenient when relying on the standard deployment model of updating the software run on client devices.