Small Projects & Code Snippets
On this page you can find some code snippets to demonstrate my coding & engeneering skills.
Some of them were created during my studies and others developed as private projects.
Latest Git Projects
Private Project (all Languages)
List of latest Projects, publicly available on Gitlab:


Private Project (Dart, C++, Android, IOS)
The lensshift project demonstrates, how the photogrammetry capture workflow can be simplified.
While a photogrammetry expert usually captures a lot of images without being able to review them on set, the lennsshift app gives direct feedback during the capture process.

The photogrammetry app uses real-time SLAM tracking to automatically capture a new image, whenever the camera moves for a certain distance. In contrast to continuous capturing with 24 FPS, this reduces the amount of redundant images tremendously. In particular, if the camera is not moved, no images are captured. On the other hand, the SLAM tracking makes sure, that every part of the scene is captured. Thus, the app guarantees that the captured images are well suited for any photogrammetry software, e.g. Capturing Reality, Meshroom, ...

Besides supporting the capturing process, 3D models can also be reviewed, directly on the smartphone.
I have to point out, that the app does not directly create the 3D model. 3D reconstruction is done by a photogrammetry software.

Implementation details:
  • Flutter based UI
  • C++ multithreading backend
  • openGL for additional parallel processing and visualization
  • gPhoto2 port, to control external DSLR via smartphone
  • cross platform: Android, IOS, PC
  • babylonJS for 3D rendering.

  • Android Game-Framework & Prototype Game
    Private Project (Java; Android; OOP)
    I started this project during my undergraduates CS program. Due to I was always interested in computer games, I wanted to build one by myself. The upcoming smartphone hype and the freely available Android platform build the perfect foundations for my purpose. Unfortunately, during that time, there was no free game library available. As a motivated CS student with the ability to learn new concepts, this was less a problem but more an opportunity. For this reason, I decided to create a reusable game framework including a prototype game to show its abilities.

    The main focus was on developing a general, abstract and reusable framework, with an additional focus on memory efficiency (the first Android smartphones suffered from little storage and a Garbage Collector slowing down real-time applications). Furthermore, I restricted myself to 2D games because producing fancy graphics takes a lot of time.


    What I learned with this project:
  • creating real-time applications, especially games (game-loop, efficient concurrent programming)
  • efficient Java programming (avoid the creation of many java-objects, which cause many GC runs)
  • rendering with openGL
  • animation of 2D graphics
  • multithreading (game-engine, input-engine, graphic-engine)
  • having fun in creating software


  • Web-Framework/Service for (sports) Clubs
    Private Project (HTML; Javascript; PHP; SQL)
    still under development, but currently paused.
    Due to my hobby of playing table-tennis, I was asked to create a website for our sports club. However, simply building a web-site did not catch much of my interest. Thus, creating a framework such that every club can register and have a website for themselves was a more enthusiastic goal.

    The main idea was to create a Facebook-like service, for (sports) clubs instead of real persons. To not limit the clubs to a URL like:
    http://myservice.com/club_id,
    they have the possibility to use their own URL. For example, one club is reachable with the URL
    http://www.ttv-hasborn.de
    while another can be reached by:
    http://p-pyrosis.de
    Utilizing this approach, enables clubs to have a professional looking website without any coding knowledge. Especially in Germany, you can find many small sports clubs which can not afford to hire a web designer and consequently have only a rubbishy looking homepage or none at all.

    The main features are:
  • usage of own URL for a professional looking web page
  • creating user profiles with different privileges
  • create teams and assign players/users
  • news system (create, delete, edit news)
  • store and display images in an efficient way
  • database backend including encrypted password storage
  • Masterthesis Code Snippets
    University Project (C++, Python, Matlab, Unix-Shell)
    Sensor-Logging Framework for Android (including web interface)
    University Project (Android, HTML, javascript, php)
    Android Seminar
    Smartphones come with a variety of sensors, e.g., accelerometer, proximity sensor, light sensor, magnetic compass, GPS, gyroscope, microphone and so forth. These can bu utilized to reason about the a user's situation/activity. For example, it is possible to determine the transportation mode (by train, car, bike, ... ) using the data from a smartphone's accelerometer [1].
    Besides interpreting data, it's acquisition is also one of the primary concerns. In the context of a university seminar, in collaboration with a fellow student (Kai-Dominik Kuhn), we had to develop a system to record and store the data from an Android phone.
    In addition to the android app, we decided to use an SQL-database and display the data, together with a time stamp on a website. Thus, we had to implement a network infrastructure to get the data from the smartphone to a server as well as retrieving it from the server again. To finish the acquisition process, the data can be tagged and is ready for further processing.

    The main features of our system are:
  • recording data from different sensors
  • display sensor data in a diagram
  • tag recorded data to identify your situation/activity
  • delete recorded data
  • send all the data to a database
  • Web interface to get easy access to your recorded activities
  • Ray-Tracer
    University Project (C++)
    Lecture: Computer Graphics
    Together with Dominik Steiger, in the context of the computer graphics course at Saarland University, we had to build a basic ray-tracing rendering engine. The ray-tracer's functionalities were incrementally built in several steps by working on weekly assignments. At the end of the course, we had to design our own scene and render it with our ray-tracer implementation.

    The main features of our ray-tracer are:
  • ray-primitive intersections
  • reflective & refractive materials
  • acceleration structures (Bounding Boxes, KD-Tree)
  • textures & interpolation
  • distributed materials
  • bump mapping
  • multithreading
  • Framework for EgoCentric Salience Prediction
    University Project (C++, Matlab)
    Seminar: EgoCentric Computer-Vision (at Max-Planck Insitute for Informatics)
    In this seminar, we were (riu xu & me) encouraged to do some research on the current, state of the art systems in Ego-Centric computer-vision and come up with an own research topic as well as an prototype implementation.
    We decided to concentrate on saliency detection as in [2] and put it into an ego-centric context. While current saliency models are evaluated by putting a user in front of a PC screen, this does not mimic real-life situations. In our scenario, we used an eye-tracker [3] and recorded persons freely looking around in a real work scene.
    We created a toolkit to evaluate saliency models as in [2], but with the eye-tracking data obtained from real-world scenes using the pupil-tracker.
    Geometric Modelling Programming Assignments
    University Project (C++; CMake)
    Lecture: Geometric Modelling (at Max-Planck Institute for Informatics)
    In this course, we gained knowledge of theoretical and practical methods for solving geometric modeling problems. The weekly assignments were solved in groups of 3 students (Bernhard Lang & Christian Baldus & me) and focused on the following topics:

  • Differential Geometry Fundamentals
  • Interpolation and Approximation
  • Polynomial Curves
  • Bezier and Rational Bezier Curves
  • B-splines, NURBS
  • Spline Surfaces
  • Subdivision and Multiresolution Modeling
  • Mesh processing
  • Approximation of differentail operators
  • Shape Analysis and Geometry Processing
  • Debugger
    University Project (Python, OOP)
    Lecture: Automated Debugging
    Part of the automated debugging course was the Udacity course 'Software Debugging' (https://www.udacity.com/courses/cs259) of Prof. Zeller, who also teaches at Saarland University. Besides weekly Python assignments we had to come up with own ideas for debugging tools in a final project.
    Together with my teammate Dominik Steiger, we decided to combine several approaches learned in the lecture to automatically create breakpoints as well as watchpoints for error-prone variables. This should speed up the debugging and testing process, which can take up to 50%-80% of the total software development cost, according to [4].
    References:
    [1] Samuli Hemminki, Petteri Nurmi, and Sasu Tarkoma. 2013. Accelerometer-based transportation mode detection on smartphones. In Proceedings of the 11th ACM Conference on Embedded Networked Sensor Systems (SenSys '13). ACM, New York, NY, USA, , Article 13 , 14 pages. DOI=http://dx.doi.org/10.1145/2517351.2517367

    [2] Zoya Bylinskii and Tilke Judd and Ali Borji and Laurent Itti and Fredo Durand and Aude Oliva and Antonio Torralba; "MIT Saliency Benchmark"; http://saliency.mit.edu

    [3] Pupil Eye-Tracker; https://pupil-labs.com/pupil

    [4] Boris Beizer, System Testing and Software Quality Assurance, Boris Beizer, International Thomson Computer Press, 1996