Informatics at HTL Wien West and FH Technikum Wien, in Vienna.
raspisentry β a Raspberry Pi that turns its camera to follow your face and emails you the frame when it sees one. OpenCV for detection, a Pan-Tilt HAT for the servos, split across two processes: one on the Pi owning the camera and the motors, one serving the dashboard from anywhere on the network.
downforce β the F1 championship as a descent, where scroll distance between teams is the points gap, to scale. A 111-point deficit is a long fall through the dark. A one-point deficit is two pixels.
dateideas β a private date planner for two. GitHub Pages serves everything publicly, so the site is deliberately an empty shell; the data lives behind Firestore rules keyed to two UIDs.
press-it, swift-archive, nct-127 β auto-updating music archives on a shared static build. Discography, videos and news refresh on a schedule, so the sites stay current without anyone touching them.
SALURO β anonymous payments prototype for school use: Spring Boot and a JS front end behind Docker Compose. My diploma project, so the repo stays private.
Merged fixes, mostly found by reading the lists of known-broken tests that projects check into their own repos and working out why each one is broken.
prettier β the code formatter
- #19893 β
assigned = (a = c /* comment */)moved the comment every time you formatted it, so the file never settled. The fix needed the ancestor chain that the comment attacher already built and then threw away. - #19894 β the same instability in
sequence expressions. Babel starts a
SequenceExpressionat the parentheses of its first element, so dropping redundant parens moved the node's start past the comment. - #19880 β range formatting reached past the node you selected
- #19849 β escaped characters in markdown links
- #19878 β blockquote markers leaking into setext headings
jsdom β the DOM implementation a lot of JS testing runs on
- #4245 β attributes kept pointing at their old document after being moved. Fixed by implementing the steps the DOM spec actually gives for "append an attribute" and "replace an attribute", which jsdom was missing.
- #4246 β
getElementsByTagNamekept lowercasing after its root moved to an XML document, because the memoised collection outlived the document type it was built for
astro β the web framework
- #17742 β a trailing slash disappeared
when an injected
.htmlwas stripped, breaking routes



