xarantolus

Hi, I'm Philipp.

I study Informatics (M.Sc.) at the Technical University of Munich (TUM).

Interests and activities:

I have participated in five hackathons so far, you can find more info below.

Download my CV in English or German:


Student Club Experience

Munich Orbital Verification Experiment

As member of MOVE, part of the WARR e.V. Student Club, I build satellite software and do public relations work.

Software

A radiation-tolerant STM32 bootloader for reliable embedded software updates.

In the MOVE software team, we develop software for all levels of the satellite technology stack.

Bootloader

I contributed to the development of a bootloader in Rust that enables on-orbit satellite firmware updates. It is resilient against power failures at any point, and uses hardware features to detect radiation damage/bit flips.

One of my contributions is the handling of radiation damage, for which I developed a tool that intentionally corrupts flash memory. Additionally, I improved reliability through model checking and introducing hardware-in-the-loop (HIL) test scripts.

Other contributions

  • Software contributions for stratospheric balloon launch, including software for down-link communication that successfully transmitted data over ~100 km using a LoRa® module
  • Smaller changes to MOVE's real-time operating system (RTOS) for satellites, written in C++.
  • Tools that assist with operations, such as Python tools related to time tracking.
Sun sensor calibration for the board that will carry the bootloader to orbit

Sun sensor calibration for the board that will carry the bootloader to orbit


Public Relations

Create videos, host livestreams and reach out to new members.

As a member of the PR team for MOVE, I support outreach efforts for WARR by coordinating initiatives to gain new members, such as presenting our work in lectures to attract potential members.

I also film and edit content for our social media platforms. Additionally, I help to organize and host live streams for launch events.

Moment after launch of a stratospheric ballon captured by my camera

Moment after launch of a stratospheric ballon captured by my camera


Programming Projects

x86 Emulator

AX can run real machine code right in your browser.

This x86-64 emulator written in Rust decodes machine code using the iced-x86 crate and then emulates the execution of these instructions. It supports some of the the most common x86-64 instructions, allowing it to execute some ELF/Linux binaries in your browser without modification.

This emulator is also used in the MemeAssembly Playground, which allows you to run a meme programming language that compiles to x86-64 instructions right in your browser.

Thousands of tests ensure the accuracy of the emulator. To get these test cases, a script runs instructions on real hardware and extracts the change of processor state into ready-to-use test cases.

GitHub repository Try online

Music Server

sensibleHub is a self-hosted music management server.

It allows managing your music collection from any device and syncing using external programs. That way, you'll always have the latest files on all your devices.

The server backend is written in Go, the front-end uses normal JavaScript and is mostly styled using the Bulma CSS framework. The server provides live updates via WebSockets, so any changes will show up on all connected clients as soon as they happen.

There's also a provided Docker container hosted on GitHub Packages for easier deployment. An automated GitHub Actions workflow builds and deploys these images for the popular x86-64, ARMv7 and ARM64 architectures.

GitHub repository
sensibleHub project image showing the screen where you can edit a song

Screenshot of the song edit page in light and dark mode


Space News App

Rock It! is an app that helps you stay informed on all things space.

This app shows the latest rocket launches, events and space news curated by the Space Devs . It also switches between light and dark mode.

The app is written in Dart and uses the Flutter framework. This makes it possible to build a web version too; however it's not as good as the Android version. For this project I also created an interesting loading animation using Rive.

GitHub repository Web version
rockit project image showing a list of rocket launches

Screenshot of the launch listing page in dark mode


Event Sync Server

Mysti syncs clipboard content and custom events between devices.

It can be used to sync clipboard contents (including images) between different Windows and Linux devices, turn computers on and off via the network and more.

Additionally, clients can define shell commands that can be executed via the daemon.

All parts of this software (server, daemon, CLI) are written in Rust and have been tested on Linux and Windows.

GitHub repository
mysti project image showing the general architecture

This diagram shows the general architecture and communication


Web Archive Server

Collect is a self-hosted web archive.

Your personal web archive that supports downloading normal websites and videos. When a webpage goes offline or is deleted, you can still view it.

The server backend is written in TypeScript and runs using Node.JS, the front-end is a single-page application written in vanilla JavaScript. It is styled using the UIkit CSS framework. The server provides live updates via WebSockets, which means that any change will be propagated to all connected clients.

GitHub repository
Collect project image showing the main archive listing page

Screenshot of the main archive listing page


Note Taking App

Notality is a note taking app for Android.

It's a quite basic note taking app that allows you to create, edit and delete notes. It switches to light or dark mode depending on the system settings and is localized for English and German.

The app is written in Dart and uses the Flutter framework. One could build it for iOS from the same source code, but I haven't done that.

GitHub repository
notality project image showing a list of note cards

Screenshot of the note listing page in dark mode


Android Customizations

backtap makes your phone's fingerprint sensor more useful.

The Magisk module starts a custom program when booting an Android device. This program listens for taps on the fingerprint sensor and converts them to clicks on a specific region of the screen.

To write signals to the screen, I needed to know how the Linux multitouch protocol works. I also wrote a blog post with my findings.

GitHub repository Read the blog post

Adblock Filter Lists

filtrite is a fully automated AdBlock filter list generator for Bromite.

The browser Bromite for Android allows custom AdBlock rules in a specific format. This program generates this type of file from an input of online blocklists. It is possible to find other filters from forks of the repository above using a search tool I built with VueJS.

In order to keep the generator up to date, I needed to compile parts of the Chromium project. This now happens every week on GitHub Actions in the fully automated subresource_filter_tools repository.

GitHub repository

GitHub Release Stats

Get a quick overview on your GitHub release statistics.

This page shows statistics for releases of GitHub repositories. There's also a summary for all releases.

It is written with VueJS and TypeScript, for styling I used the Bulma CSS framework.

GitHub repository Website
Screenshot showing statistics for one of my repositories

Screenshot of the statistics page


JSON Extraction

Web scraping tools often break because they depend on the structure of scraped pages, which can easily be changed to counteract scrapers. Some (mostly modern) pages contain JSON blobs in their source code, which makes it possible to extract this data from them. However, most methods of extracting these blobs are prone to errors. This is why, as outlined in my blog post, scraping tools must not depend on the structure of the pages or JSON data, but instead use more declarative approaches.

This is a library for Go and there's also a command-line program you can try out, but the concept is more general and can be implemented in any language.

GitHub repository Read the blog post Downloads
$ jsonx "https://www.youtube.com/watch?v=-Oox2w5sMcA" videoId title channelId | jq
{
	"videoId": "-Oox2w5sMcA",
	"title": "Starship Animation",
	"lengthSeconds": "310",
	"channelId": "UCtI0Hodo5o5dUb67FeUjDeA",
	"isOwnerViewing": false,
	"shortDescription": "",
	"isCrawlable": true,
	"thumbnail": {
	"thumbnails": [
		{
			"url": "https://i.ytimg.com/vi/-Oox2w5sMcA/hqdefault.jpg",
			"width": 168,
			"height": 94
		}
		...
	],
	"allowRatings": true,
	"viewCount": "1421951",
	"author": "SpaceX",
	"isPrivate": false,
	"isUnpluggedCorpus": false,
	"isLiveContent": false
}

RC Rover

gover is a remote-controlled rover powered by a Raspberry Pi.

This Raspberry Pi powered rover can be controlled either via a keyboard, an Xbox controller or simply by tilting a phone. It avoids frontal collisions using the ultrasonic sensor.

I learned a lot about electronics, e.g. how to solder or wire stuff to the motor controller board. And writing software that actually affects the real world is really cool.

GitHub repository
A photo of my rover

A photo of the rover


Sorting Images

ImageSort is a desktop application for sorting images faster.

The program makes it easy to sort a large number of images and copy them wherever you want. It also allows you to rotate and thus fix images with incorrect orientation.
This WPF application is written in C# and runs on Windows.

GitHub repository

File Server

upduck makes it easy to share files beyond your local network.

It allows instant and secure sharing of files from your network to anyone in the world. It accomplishes that by integrating the dynamic DNS service DuckDNS and the Let's Encrypt certificate authority, which means that others can connect to a custom domain via HTTPS connections.

GitHub repository

VSCode Extension

Supporting increased productivity in MemeAssembly.

While more of a fun project, writing an extension taught me how to define syntax highlighting, snippets, hover cards, "jump to definition" providers and other developer productivity features in a single extension.

GitHub repository VS Marketplace
An animation showing how I programmed a small program in MemeAssembly

Using the extension to write a simple alphabet program


Starship Twitter Bot

wenhopbot is a Twitter bot for Starship news.

This Twitter bot used different methods to find tweets, news and other information about the SpaceX Starship. Additionally, it used to watch tweets around the launch and build site locations that are tagged with a location. The bot is no longer active due to Twitter API restrictions.

GitHub repository Twitter profile

Politics Twitter Bot

poliwiki highlights edits made to wiki articles about politicians.

The bot used to post screenshots of interesting edits to Wikipedia articles of German politicians. It did this by watching a stream of all changes of Wikipedia articles and filtering accordingly. The bot is no longer active due to Twitter API restrictions.

GitHub repository Twitter profile

Firefox Customizations

userchrome.css enhances the Firefox user interface.

Firefox lets the user customize its user interface. That way, I could fix small annoyances and implement a few animations along the way.

GitHub repository
A video showing how the tab switch looks like in action

The tab switch animation

A video showing how URL bar buttons only show when hovered

The search bar buttons are only displayed when hovering


Brainfuck Interpreter

abf is a brainfuck interpreter written in x86-64 Assembly

This Brainfuck interpreter is written in Assembly. The part for reading input files, parsing command-line arguments etc. is written in C.

GitHub repository

F-Droid Repository

This repo allows you to install my apps and get update notifications.

This repository automatically stays up to date with all my app repositories and thus makes it easy to install my apps.

GitHub repository

Hackathons

November 2023

hackaTUM 2023 👑

My team won the Check24 challenge in hackaTUM 2023, the official hackathon of the Department of Computer Science of the Technical University of Munich.

Our team of three developed a frontend and a blazingly fast geospatial search backend for a craftsmen comparison site. Since achieving high performance was crucial, we opted for a data structure tailored to the problem over a more conventional database approach.

Devpost Submission
A demonstration of how the site can be used

A demonstration of how the site can be used


November 2022

hackaTUM 2022

I participated in the in-person hackaTUM 2022.

In a team of four people, we developed a web app that helps people find movies and shows they are both interested in. Once users share an invite link with a friend, the app will show them movies and shows they will both like. No more infinite scrolling through endless choices, just send the link and get started!

We used Vue.js for the frontend and wrote a custom Go backend using PocketBase.

Devpost Submission
A screenshot of our website

A screenshot of our website


November 2021

hackaTUM 2021

I also participated in the online hackaTUM 2021.

Our team of four people developed a quiz app using Flutter, including a backend and other tools to analyze data from the City of Munich Open Data portal. This took about 40 hours of working together and having fun!

Devpost Submission
A screenshot of our app

A photo showing our app


Other Stuff

URL Redirects

Here are some easy to remember redirects:

Abbreviation Description
gh.010.one / x.010.one Two different links to my GitHub profile.
fh.010.one Video of the dual booster landing during the first flight of the Falcon Heavy rocket.
s.010.one Video of the Starship SN15 prototype landing during a test flight.
r.010.one A surprise video. You've probably seen this one before.