Projects I worked on
-
bHere
bHere helps you put your phone away, whether you are with friends or focusing on your own work. Group games add playful stakes to phone use, while solo sessions help you stay on task.
-
Speislist
Model Context Protocol Server for managing shopping lists and inventories, demonstrating the potential of AI-agent-friendly everyday applications.
-
Geschmeckt
Geschmeckt makes shopping easier by showing you exactly which products your family and friends love. Scan, rate, and share favorites in groups so you always bring home the right choice.
-
MoveMates
MoveMates turns running with friends into a live competition. Runners earn points for their speed and for staying in their personal heart rate zone, while a shared leaderboard updates in real time.
-
QR Reader for Mac
A native macOS app that captures QR codes via the Mac's webcam, handles URLs and vCards, and stores a history of scans.
-
Recipe Scanner
A web application that uses vision LLMs to extract structured recipe information from photos of printed or handwritten recipes, demonstrating the potential of AI for digitizing and organizing personal data.
-
Zoo-Sponsorship
Turning symbolic animal adoptions into verifiable NFTs, Zoo-Sponsorship bridges decentralized tech with real-world impact.
-
Qr Haystack
Have you ever searched for the proverbial needle in a haystack? Turn it into a bit of fun and play “Qr Haystack”!
-
Angehörigendialog
This project focused on the digital transformation of an interview guide for caregivers of people with dementia. It also included the design of visualizations to support the evaluation and interpretation of responses.
-
Greenovate
As part of a student team, I worked closely with a project partner to build a website about urban greening in Krems, including an interactive data visualisation.
Posts
2026
-
A LaTeX setup which sparks joy
Improve the ergonomics of working with LaTeX documents using Dev Containers in VS Code
-
Adapting Websites Based on the User's Input Method
How to detect and adapt to a user's input method (touch, mouse, or other) in 2026 — and why there's still no perfect solution.
-
Enable Vue DevTools in a Vue application in production
If you need to debug a Vue application in production, you can enable the Vue DevTools by running a simple script in the browser console. This will allow you to inspect the Vue components and their state, even in a production environment.
-
Starting with WebMCP
A practical introduction to WebMCP: what it is, how it compares to MCP, how to try it today, and a curated collection of implementation resources.
2025
-
Architecture of large frontend applications
Practical lessons for keeping large frontend applications maintainable with modularization, SOLID principles, and feature flags.
-
[GER] TypeScript: Kinderleichte und sichere Interaktion mit LocalStorage, SessionStorage, etc.
Wie man eine typisierte Storage-Abstraktion mit TypeScript baut und Storage-Keys mit ihren Value-Typen verbindet.
-
Generating an API client for an Angular Ionic App
Learn how to automatically generate a type-safe API client for your Ionic/Angular frontend from OpenAPI/Swagger documentation. Includes a practical solution for integrating Capacitor's native HTTP client using dependency injection.
2021
-
A modern aspect ratio hack
Until Safari supports the aspect-ratio property the struggle with hacky replacements continues. This article examines a new and flexible solution for enforcing an aspect ratio on an element.
-
The sliding sidewalk: preventing a dropdown element from exceeding the screen
A CSS pattern that keeps an absolutely positioned element inside the viewport.
-
CSS Layout: Multi-line horizontal list with separators between items
Learn how we can add separators between horizontal list items and how to make them responsive.
-
Use Eleventy to compile your Sass files!
Read how Eleventy can handle the compilation of your Sass files.
2020
-
Firefox prints the triangle border hack incorrectly
The CSS hack for creating triangles is cool but there are two problems. It is hard to wrap your head around it and it is printed incorrectly by Firefox. Here is an alternative for us.
-
Increasing the clickable area of chip buttons
What to do if the buttons are too small for human fingers? Let's evaluate our options.
-
How to prevent scrolling triggered by the space key
Read how to prevent the space key from scrolling the page. And that you probably shouldn't.
-
Wrapping slot items in Vue.js 2
Sometimes you have to wrap a component's slot children. Accordions or sliders are good examples of such situations. I thought about this a little bit too much and came up with four different solutions.
-
Firefox bug: when background-clip and animation-fill-mode are used together
Read how I discovered a Firefox bug and learn how to fix it.