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
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
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 onlineMusic 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 repositoryScreenshot 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 versionScreenshot 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 repositoryThis 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 repositoryScreenshot 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 repositoryScreenshot 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 postAdblock 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 repositoryGitHub 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 WebsiteScreenshot 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 repositoryA 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.
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 repositoryVSCode 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 MarketplaceUsing 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 profilePolitics 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 profileFirefox 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 repositoryThe tab switch animation
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 repositoryF-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 repositoryHackathons
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 SubmissionA demonstration of how the site can be used
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 SubmissionA screenshot of our website
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 SubmissionA 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. |