Canteen Plan for Ulm University

Canteen Plan for Ulm University

PDF & HTML Scraper

When I started my M.Sc. in Computer Science at Ulm University in 2022, there were only PDF files for the canteen plan. I wanted to see the daily meals without having to download the PDF plan each time, so I decided to write a PDF parser in Python.

In late 2023, the university switched to a new system with server-side generated HTML code. This is parsed with BeautifulSoup4.

The scraped data is served via a REST API so that others are able to write their own frontends. For instance, my friend Lukas wrote a TUI that you can check out.

Canteen plan website

The latest canteen plan is accessible at https://mensaplan.anter.dev. After writing the initial version in Angular, I decided to rewrite the website in React as an exercise. By now, the plan is more than just a proof-of-concept and has features like:

  • See nutritional values and allergens per meal
  • Filter meals by meal type
  • Optimized for mobile use and PWA-enabled

Humanoid Robots

Humanoid Robots

Pepper

During high school, I worked with the humanoid robot Pepper made by Softbank Robotics. Together with my classmate, we prepared Pepper for several smaller events, programming several games and features from scratch, like:

  • A friendly debate/sketch between Pepper and the principal for an informational event for future students
  • A kickoff talk at a workshop about modernizing work environments
  • Games for Neu-Ulm spielt, a city-wide event about playing games

In 2019, the city of Neu-Ulm had its 150th anniversary (German newspaper article). Pepper attended several events during that year, entertaining visitors, posing for photos, and even becoming an honorary citizen of Neu-Ulm.

You can find more information in German on the school homepage.

Pepper at Neu-Ulm Spielt 2018

Books about NAO6

Together with three classmates, I wrote a guide about programming the humanoid robot NAO6 in a collaboration with Technik-LPE. The plan was to write two books: one about the fundamentals of programming NAO6 and another one for a range of scenarios where NAO6 could be used. We split into two teams to focus on our respective books, but we still supported each other when we needed help. By the end of 2019, we completed our books and sent them to Technik-LPE, who handled the typesetting and publishing.

You can buy a printed copy in German on the Technik-LPE store:

You can get the e-book for free on the official Softbank Robotics website.

There is an article about this project written by Ulrich Eberl in the German science magazine bild der wissenschaft: Robotik ist, wenn Schüler Lehrer bilden

My former classmate Melanie wrote an article (in German) that was published in a local newspaper: Pfuhler Schüler schreiben Lehrbuch

Printed NAO books

QR-Code to Notion Forwarder

QR-Code to Notion Forwarder

Inventory Management with Notion and QR Codes

I wanted to keep track of my tools with an inventory software where I can scan a QR code and the corresponding entry opens on my phone. However, all of the inventory software I found were too overkill for my personal use or didn’t meet all of my requirements. Thus, I decided to just use Notion.

As Notion URLs are pretty long and there is a possibility that I want to migrate my entries to another service, I decided to implement a forwarding service. This means that I can serve persistent URIs (that I can use on my QR codes) without being bound to the location where the data is stored. You can check out the forwarder here.

Projects

2048 Battle Royale

2048 Battle Royale

I programmed a 2048 Battle Royale game for Android as part of a group project in university. The frontend was built with Android Studio and Kotlin, the backend with TypeScript. Up to 48 players can play together in one lobby, and after some time, the bottom half gets kicked out. The last player standing wins!

You can get the source code from this GitHub Repository.