The projects are sorted in a chronological order. Please get in touch if you are interested in further details on any of the projects.

Technologies: LIBSVM, jAudio, JavaFX 8
Type: educational, closed source
Date: 06/2015 – present
Contributors: Leo Liebig
My tasks: Concept, code and graphic design
Link: Download Beta

Mick Tagger is a Java application that leverages machine learning to classify music automatically. It uses a Support Vector Machine (SVM) and is based on LIBSVM and jAudio. The application provides a graphical user interface and is highly parallelized for speeding up the audio content analysis and the SVM training. It comes with four different classifiers to classify music by genre, mood, decade and chart position (top 10 capability). Furthermore it provides a semantic sorting feature for convenient analysis and interpretation of single features. There is still one essential feature missing in Mick Tagger. At the moment it is not possible to create a new classifier with custom classes. I am currently working on it.

Main menu Music classification Semantic sorting

The application was developed in context of my Master’s thesis, which examines the process of automatic music classification with a Support Vector Machine (SVM). It gives a theoretical introduction to the mechanics of the SVM algorithm and describes the principles of audio content analysis. Furthermore, general machine learning aspects like hyperparameter optimization and feature selection are considered. In a variety of experiments, the best parameters for the SVM and the audio analysis are investigated on four different classification problems (see above). The chosen process produces competitive results for the first three classification problems. However, the prediction for the top 10 capability of a song is very vague and cannot be derived solely from the audio signal. For the evaluation of the classifiers, confusion matrices and the deduced metrics precision and recall are used.

PS: Please don’t sue me Mick. ;)


Technologies: Android, SQLite, NFC
Type: educational, closed source
Date: 03/2015
Contributors: Leo Liebig
My tasks: Concept, code and graphic design
Link: Download Beta

NFC Profiles is an Android application that allows you to create multiple settings profiles and link them to NFC tags. Once a linked NFC tag is discovered, the settings are applied. Optionally the changes can be undone if the tag disappears. For instance, you could place an NFC tag in your car and let NFC profiles automatically open a navigation app and turn on Bluetooth for your headset.

I have developed this app for a term paper about NFC as part of my Master’s studies. NFC Profiles is supposed to fill the gap in which location-based apps fail because GPS and cell tower identification are not accurate enough. The app can read and write all NFC Forum compatible tags and implements polling to discover the loss of a tag. The settings profiles are stored in a SQLite database on the Android device. Each profile has a unique identifier which can be written on multiple NFC tags. NFC Profiles will be integrated into Smart Places in the future and not released independently.


Technologies: Play Framework, Ebean, Nginx, PostgreSQL
Type: educational, closed source
Date: 10/2014 – 02/2015
Contributors: Sarah M., Sarah S., Malte B., Stefan S., Roland C., Leo Liebig
My tasks: Backend code and graphic design
Links: Website, Google Play, Teaser video

Planet C is an augmented reality geocaching game for Android devices. It is a mix of a role-playing game and an adventure game. Planet C encourages the player to go outside and explore a parallel world full of creatures and items. The goal is to collect creatures, train them and compete against other players in turn-based matches.

The game was developed during a two semester-long project as part of my Master’s studies. The team consisted of six students overall and accomplished the following tasks: client development, backend development, website & tool development, design of 3D and 2D assets, sound design and server administration. The project was presented during the IMI Showtime 14/15. As part of the backend team, my task was to design and implement scalable web services for processing game data, invitations and turn-based matches. The backend consists of multiple microservices which are masked by a reverse proxy.

Planet C - Backend architecture

The services were developed in Java with the Play Framework and the data is stored in a PostgreSQL database. Ebean is used as ORM tool to map the data. The RESTful web service provides an API with 38 methods for user management, management of creatures and items, purchase of items, location-based delivery of nearby world objects and initiation of invitations and matches. The Push Handler instances are implementing match invitations and use WebSockets for pushing data to the clients. The Match Handler instances are also using WebSockets and orchestrate the turn-based matches, calculate turn effects, handle disconnects and persist match results. All Handler instances are managed by a minimalistic service to facilitate horizontal scaling.


Technologies: Node.js, Express, MongoDB
Type: educational, closed source
Date: 10/2013 – 02/2014
Contributors: Sarah M., Leo Liebig
My tasks: Concept, backend code and graphic design
Link: Final presentation (German/PDF)

JogLog is a simple web-based running diary and allows the user to store various information about runs. It provides a configurable visualization of run data on a monthly or yearly basis.

This project was created together with another student during the first semester of my Master’s studies. She implemented the front-end and I was responsible for developing a RESTful web service. It was my first encounter with backend development. The Node.js based service provides an API with CRUD operations for run data and a simple user management. The data is exchanged in the JSON format and stored into a MongoDB database. JogLog was intented as project-based learning and therefore never released.


Technologies: Android
Type: educational, closed source
Date: 06/2013
Contributors: Leo Liebig
My tasks: Concept, code and graphic design
Link: APK on request

S-Bahn Alarm is an Android application that notifies about service disruptions of the S-Bahn Berlin (commuter trains). You can configure up to three alarms each day to receive notifications about service disruptions exactly when you need them (e.g. after getting up or before leaving work). With the configurable line filter it is assured that you only get notified if a line of your interest is affected.

This app was a small part of my Bachelor’s thesis. I have created it to demonstrate some architectural differences in the application layer of Android in comparison to desktop operating systems. At the time of the development, the S-Bahn did not provide a puplic API. Hence the app utilizes the provided web-widgets to query disruption information. S-Bahn Berlin is not feature complete yet and I want to extend the app before launching it in Google Play (e.g. ignoring long-term disruptions, fetching disruption information from the official twitter account of the S-Bahn, etc.).


Technologies: Android
Type: educational, open source
Date: 04/2013 – 06/2013 (prototype)
Contributors: Dmitrij I., Jose M. G., Leo Liebig
My tasks: Concept, code and graphic design
Link: Source code

OpenCellDroid is a free and open-source Android client for the OpenCellId project. OpenCellId is an extensive database of mobile cell towers and their GPS coordinates. With using OpenCellDroid you can contribute to the OpenCellId project and submit the coordinates of cell towers around you. Furthermore you can browse through the cell id database conveniently via a map and check out the cell towers near you.

OpenCellDroid was developed during the Open Data class in the last semester of my Bachelor’s studies. The task was to create an application that uses open data in any way. I came up with idea to create a simple OpenCellId client after some requests from Smart Places customers. They asked if it’s possible to figure out the location of cell towers around them. My main tasks were to implement the location related code (GPS/cell identification) and the graphic design of the application. For time reasons the development was discontinued after the presentation of a working prototype.


Technologies: Windows .Net, Kinect SDK
Type: educational, closed source
Date: 10/2012 – 02/2013
Contributors: Sarah S., Ramin P., Leo Liebig
My tasks: Code and graphic design
Links: Final presentation (PDF/German), Showtime handout (PDF/German)

KinBox uses Microsoft’s depth camera Kinect to detect people in front of the camera and replaces the background in real time. It works like a green box, just without the green. Even dynamic backgrounds can be replaced with any picture of your choice. The software detects single persons or groups automatically. KinBox provides a variety of filters to optimize the segmentation result and can also filter small, disturbing objects that are at the same depth level as the people in front of the camera. Once you are happy with the segmentation, you can use gestures to create a screenshot.

KinBox was a semester project during the 5th term of my Bachelor’s studies at the Hochschule für Wirtschaft und Technik Berlin (University of Applied Sciences). The basic idea for the project was given by the supervising professor. However; the feature set and the design of the application were up to us. The KinBox team consisted of Sarah S., Ramin P. and me. Sarah and I were responsible for the software development and Ramin built the web site. The project was presented to professors and students during the IMI Showtime 12/13.

Screenshot Showtime booth


Technologies: Android
Type: commercial, closed source
Date: 2011 – 2016
Contributors: Moritz S., Leo Liebig
My tasks: Concept, code and graphic design
Link: Website, Google Play

Smart Places provides location-based profiles for Android. It toggles WiFi, Bluetooth and sound in dependence of your location. Simply create a place and configure its toggling behaviour. Smart Places remembers the location (based on mobile cells or GPS) and will automatically apply the configured profile.

I have started this project together with a friend during the first semester break of my Bachelor’s studies in order to learn about Android and programming for mobile devices.