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.

Two Talks at the Singapore Elixir and Erlang Meetup Group

I will give two talks at the Singapore Elixir and Erlang Meetup Group on Monday, 14 May 2018. Kaligo is hosting the event. Their address is 298 Jalan Besar #03-01, Singapore 208959, Singapore. In order to attend, join the Meetup group and bring an ID document. There is a separate event page on Meetup.com.

Below you will find the event description in full.

Talks related to Distributed Data Analytics and Erlang in the Workplace

Gregor Ulm is an R&D Engineer from Sweden, working in industrial research. He is currently visiting Singapore and agreed to give two talks related to his work. One talk is on his current main project, an analytics platform for connected vehicles that has largely been implemented in Erlang. The other is on his experience with introducing Erlang in a mature organization.

• 6:45 pm: Snacks - Pizzas, drinks, mingling
• 7:10 pm: OODIDA: On-board/Off-board Distributed Data Analytics for Connected Vehicles
• 8:00 pm: Break
• 8:10 pm: Introducing Erlang in the Workplace: An Experience Report

Thanks for all the following volunteers:

Pizza Sponsor: Yojee.
Venue provider: Kaligo.
Anil Thaplar (@athaplar| anil.thaplar@gmail.com)
Grzegorz (@arnvald | witek.gregor@gmail.com)

Speaker: Gregor Ulm, Research and Development Engineer at the Fraunhofer-Chalmers Research Centre for Industrial Mathematics (FCC), Gothenburg, Sweden


1. OODIDA: On-board/Off-board Distributed Data Analytics for Connected Vehicles
A modern connected vehicle generates dozens of gigabytes of data per hour, which implies that central data processing (off-board) of a fleet of connected vehicles is not feasible. Instead, a large part of data processing has to happen locally on the client (on-board). The OODIDA platform facilitates concurrent distributed data analytics. Its key feature is the ability to concurrently execute multiple distributed data analytics tasks on overlapping subsets of client devices. This talk gives an overview of OODIDA, which is largely implemented in Erlang, discusses design considerations, and highlights various use cases, ranging from the simple, such as filtering, to the more complex, such as coordinating and executing distributed machine learning tasks with a large number of client devices. OODIDA is an ongoing research project at FCC. It is carried out in collaboration with industry partners.

2. Introducing Erlang in the Workplace: An Experience Report
The number of developers with an interest in functional programming seems to easily outnumber the number of industry jobs that entail using functional programming in practice. However, you don't have to only use functional programming languages in your spare time! One approach to get a job as a functional programmer would be to launch your own startup or join one of the comparably few companies that prominently use a functional programming language. A different approach is to introduce a functional programming language in your own workplace. In this talk, I discuss how I introduced Erlang at FCC in early 2017, and got it adopted for a major project. Since then, we filled several internship positions and, much more importantly, very recently hired two full-time Erlang developers and thus actively grew the local Erlang community.

About Yojee (Pizza Sponsor)
Agile startup in Singapore building logistics software utilizing Block-chain, AI and Machine Learning to optimize and manage fleets.

What to bring

Out now: Mastering CodingBat (Java), Vol. 1: Basics

For many years, people have shown great interest in my solutions to the entire CodingBat problem set. When I published my solutions, they were in fact the first complete set on the Internet, which might explain part of their popularity.

The solutions I have published on my websites are for the most part quite straightforward. They are not always the most elegant. Furthermore, there are no explanations provided. This was enough motivation for me to work on a series of books on CodingBat. The first volume is now available as a paperback on Amazon: Mastering Coding Bat (Java), Vol. 1: Basics.

Here’s the cover:

This book contains extensive discussions of the problems in the sections Warmup-1, String-1, Array-1, and Logic-1. This is a total of 121 problems, which I discuss on 326 pages, using 357 code listings.

On the product page on my blog you’ll also find a short PDF preview file, which includes the full table of contents and a sample chapter.

Internship Opportunity at the Fraunhofer-Chalmers Centre in Gothenburg, Sweden

The Systems and Data Analysis department at the Fraunhofer-Chalmers Centre for Industrial Mathematics intends to hire a student for an internship. The starting date is flexible, but the end date is firm, it’s the end of May 2018. You would be working under my supervision and contribute to algorithm development in the realm of big data analytics. This internship is related to our work on Contraction Clustering (RASTER).

Here is the job ad:

Internship at the Fraunhofer-Chalmers Centre for Industrial Mathematics

The Fraunhofer-Chalmers Research Centre for Industrial Mathematics (FCC)
offers software, services and contract research for a broad range of
industrial applications. Modelling, simulation and optimization of products
and processes can boost technical development, improve efficiency and cut
costs of both large and small businesses. Since 2001, our highly skilled team
of mathematicians and engineers has successfully solved problems for more than
170 clients. We combine consultancy services with innovative research and
development based on a wide spectrum of competences.

We are looking for an ambitious student with a background in computer science
or related fields to assist in an ongoing applied research project in the
Systems and Data Analysis department. You will contribute to research in data
stream processing that is conducted in the area of distributed data analytics.

Your task:
- Implement a stream processing algorithm, which was developed in-house
- Compare the implementation with other existing algorithms on a variety
of metrics

Required background:
- Functional programming in Scala or Haskell

- Experience implementing algorithms based on a mathematical specification
or pseudocode
- Algorithms/Machine Learning, in particular clustering
- Stream processing, in particular Apache Spark - Structured Streaming
- Data visualization, in particular Matplotlib

Your ideal profile:
- Chalmers student at the Master's level, preferably in the penultimate year
- Pursuing a degree in Computer Science or a similar field
- Previous work experience in the software industry or as a student research
- Ability to work independently

If you maintain a private code repository (Github, Gitlab, Bitbucket etc.),
then please highlight this in your application. If you have other samples of
work to show, such as a portfolio of projects on a blog or private website,
we would be keen to have a look.

This internship is a paid part-time (4h/week) fixed-term position until the
end of May 2018. The starting date is flexible.

Contact persons:

Mats Jirstrand, Head of Department
mats.jirstrand@fcc.chalmers.se, 031-772 42 50

Emil Gustavsson, Applied Researcher/Data Scientist
emil.gustavsson@fcc.chalmers.se, 031-772 42 92

Gregor Ulm, Research and Development Engineer
gregor.ulm@fcc.chalmers.se, 031-772 42 71

Please send your application, marked "Contracted Student / SYS (OODIDA)",
consisting of a cover letter, CV, and a current academic transcript, to

Interviews will be held continually. Please apply as soon as possible.


Contraction Clustering (RASTER) paper published

Our paper “Contraction Clustering (Raster): A Big Data Algorithm for Density-Based Clustering in Constant Memory and Linear Time” has been published in the Springer Lecture Notes in Computer Science series.

Here is the full citation with doi:

Ulm G., Gustavsson E., Jirstrand M. (2018) Contraction Clustering (Raster). In: Nicosia G., Pardalos P., Giuffrida G., Umeton R. (eds) Machine Learning, Optimization, and Big Data. MOD 2017. Lecture Notes in Computer Science, vol 10710. Springer, Cham

Alternatively, the submitted manuscript is available in my Gitlab repository: