Project Portfolio
Youtube Keyword Search
2023/03
The project allows its users to search youtube videos, playlist, channels for specific words or sentences. It does this by scraping the subtitles of the videos and then searching them for the query. It is limited to the newest 250 Videos of a playlist/channel to save on server costs. However there are also two subscription plans that allow to search for up to 10000 (plus) or 20000 (pro) videos at once. Additionally the subcription plans allow the users to precache 3 (plus) or (7) channels for faster search results. At the time of writing the serivce had an average of 4500 unique monthly active users with a peak of 10000 unique monthly active users.
The frontend of the application is written in typescript on top of NextJS and React. The site is hosted via Firebase. The project uses google cloud functions for any backend tasks and firestore as database. The database and cloud functions are protected by reCAPTCHA v3 via Firebase App Check.
Peer Guard - Hackatum 2023 Winning Team
2023/11
PeerGuard is a disaster warning systems prototype we designed and implemented in a 1 1/2 day hackathon at the Technical University of Munich. It is able to broadcast alerts or information when no cell service or internet is available. It achieves this by finding and forwarding all relevant notification it knows about to nearby peers which also run PeerGuard. This leads to a peer to peer chain which is able to function without any third party network. This is especially useful for densly populated areas where cell and internet service is temporarily unavailable or overburdened. It acts as an information bridge between the surrounding area where cell or internet service is still active and the affected area where no regular network is available.
The user interface of the android app is created with Jetpack Compose. The peer to peer functionality is using WiFi-Direct to benefit from its extended range of up to 400 meters compared to bluetooth. This range could be extended even further by using dedicated access points that could be mounted on fire engines or ambulances. The app could also easily be integrated with existing warning systems such as NINA or cell broadcast, to forward their notifications as well.
Webassembly particle game of life
2022/09
This project is a version of a "Game of life" firstly introduced by John Horton Conway in 1970. Other than the original it doesn't simulate the cells in a discrete tile based world but as particles in a continuous two dimensional world. There are also no rules which create or destroy particles but only rules that govern how each particle affects the other particles movement. These rules are not fixed and may be adjusted in real time.
The web assembly module is written in AssemblyScript and wrapped in a Javascript React Component. The web assembly module shares the memory containing the particle objects with the Javascript Wrapper and performs all calculations necessary for the simulation. Planned next steps for this project are: Reimplementing the Webassembly part in Rust, Implementing Multithreading, Sorting Particle Objects into Binary Space Tree for better performance
Peer to peer network size estimation module
2022/08
In this project I developed an network size estimation (NSE) module for peer to peer systems which can be used in combination with a "gossip" module to reliably estimate the size of the connected network. It is based on the GNUnet approach. The peers calculate the mean proximity with their neighbours and then infer the total network size with the help of heuristics.
The project is written in rust and relies on the tokio crate for asynchronous IO, the bitvec crate for bit manipulation and the ring, rand and the sha2 crate for their cryptographic primitives. The module exposes a local tcp API to accept and answer NSE requests by the user. Futhermore it connects to an expected tcp API from the required gossip module.
Telemedicine application
2021/07
The purpose of this application suite is to support sports medicine staff in monitoring their patients progress and activity in between clinic sessions. It consists of an iPhone App for the patients, an iPad App for the Staff, a web dashboard for administration and a backend server to bind them together. The iPhone app reads workout data of the patients, processes and stores it on the backend server. The iPad app allows staff to examine uploaded workouts of patients, view their progress over time and send training plans to patients via the iPad app.
Both the iPad and iPhone app are written in Swift. The UI is written with a combination of Swift UI and UIkit. The backend server is written in Python with Flask as web framework and is connected to a Postgres database with Sqlalchemy as its ORM. The admin dashboard is server side rendered by the flask server with the jinja2 template engine.
Planned work: Web application development combining and expanding on the features of the iPad and the admin web app.
AR robot karol
2022/07
This project is an app for Android which allows its users to write a program for a virtual robot, watch him execute the program in AR and solve challenges by programming the robot. It is heavily inspired by the learning software "Robot Karol". Like the original it is designed to be used by children to introduce and fascinate them for programming. To facilitate an easy understanding of programming concepts without requiring beginners to deal with syntax and learn commands, the app uses an intuitive code block editor optimized for mobile use. This makes creating syntactically incorrect code impossible, adding to the ease of use for beginners. After writing some code the user can view a virtual robot executing their instructions in their three dimensional augmented environment. Additionally there are some basic challenges included in the app, the users can try to solve.
The app is programmed in Kotlin and Java and uses Jetpack Compose as its UI Library. Additionally Arcore was used for tracking the environment and Google Filament was used for rendering. The code block editor compiles to a set of symbols which are then passed to the interpreter. The app was developed with a hybrid editor approach (both code block editor, and text code editor) in mind. This feature was dropped due to to time constraints, but the repository still contains a text compiler which compiles to the same set of symbols as the code block editor.
Further planned features for this project consist of an online platform create, edit, share and view challenges for the app as well as extending the instructions to include integer and boolean algebra and definable functions and finish implementing the half finished text code editor.
Secure aggregation framework for mobile applications
2022/03
As part of my bachelors thesis I developed a framework which allows the collection of aggregations of sensitive data from mobile devices while maintaining data privacy towards the data collecting entity and all other participants. The abstract of the thesis was published in the Congress for German Medical Science 2022. Maintaining data privacy is possible by calculating pairwise perturbations, where the perturbations of two partners cancel each other out, with all other participants. Then the perturbations get added to each partners payload and sent to the server. Since the perturbation pairs cancel each other out when combined, the resulting aggregation is correct. The framework additionally handles dropout of up to half of the participants at any time during the protocol.
The framework backend is written in python and exposes its api via the flask web framework. The webinterface which can be used to initiate the collection process is written in javascript and html and are serverside rendered via the jinja2 template engine. The application is dockerized and was deployed onto google cloud compute instances for a proof of concept test. The clientside of the framework is integrated into an android example app. The app is written in java and gets notified about new aggregation requests via firebase cloud messaging. It then connects to the backend and takes part in the secure aggregation protocol.
Portfolio website
2022/10
The website is built in typescript with nextjs, react, html, css and some Mantine components. It is dockerized and deployed onto an google cloud compute instance. The NextJS server is exposed via the reverse proxy nginx.The ssl certificates are acquired via Lets encrypt
Deep Learning based spine segmentation
2022/03
The objective of this project was to create a neural network capable of segmenting the vertebrae of a 3 dimensional MR scan. This network could then be used to assist medical personal in their diagnosis and treatment, by providing a possibility to create a digital model of the spine of a patient or hide irrelevant information of a MR scan.
An 3D UNet with 5 layers was used as the architecture for the network. The network was trained with the ADAM optimizer with a dataset split of 70% train, 20% validation and 10% test. The dataset used for the training originated from a paper on SpineParseNet and was recorded by the Southern Medical University of Guangzhou in China and contains contains a 172 samples. We augmented the dataset by flipping the scans, applying random rotation and applying gaussian noise.
Implementation of a boundary attack on a residual neural network
2021/04
This project is an implementation of the Decision-Based Adversarial Attack by Brendel et al. (2017). It allows an attacker to fool an image classification model into misidentifying any given image as a picture of any other or a specific other class. The attack is able to do this without any knowledge of the inner workings of the targeted model by adding a perturbation to the given image and then mutating this perturbation until it is minimized.
The project is written in python with heavy use of the numpy library. To measure its effectiveness I used it to attack a pretrained ResidualNet model by ONXX trying to classify pictures of ImageNet. My implementation also adds to the algorithm described by Brendel et al. by running multiple instances of the attack at the same time. Each instance starts with a different perturbation to circumvent falling into a suboptimal local minimum. It then schedules execution of the instances with the l2 distance of the perturbation to the original image as priority.
Development & operation of a GTA 5 roleplay server
2020/03-2021/03
During the Covid 19 pandemic I lead a small development team of 2-3 people working on multiplayer modification for the popular game "GTA 5". This modificaion allowed players to slip into roles of policemen, doctors, criminals and more in a simulated world and economy entirely populated by real players. During my involvement our server had an average of 100, up to a maximum of 250 simultaneous players each evening. There were over 2000 unique registered users each of which had to go through a one on one test with a member of our support team to ensure compliance with the rules of the server. Features implemented by us on top of the regular game include an ingame banking system, useable items, housing, wound- and medical system, plant growing and heists
The modification was built on top of the AltV multiplayer modding framework. Our modification is split into a C# backend module, a Javascript clientside module and a Javascipt/HTML UI module. The backend code handles interactions with the database and the serverside game logic while the execution of the game logic gets delegated to the clientside module which calls native game functions exposed by the modification framework. The UI module renders the Javascript/HTML UI via a chromium overlay.