I am a PhD student and research assistant at the faculty of informatics of TU Wien. I am part of the Interactive Programming & Analysis Lab of the research unit Software Engineering. My PhD advisor is Jürgen Cito. My office is located in room HD0209.
If you want to hire me, you might be interested in my CV.
If not, you might be interested in my Twitter.
michael.schroeder@tuwien.ac.at
I am interested in programming languages, software engineering, human-computer interaction, and the intersection of these disciplines.
Below is a selection of my academic work. You can find more of my publications on Google Scholar and dblp.
A parser without a grammar is like a function without a type signature: we can only know if it goes wrong after we have run it. If we knew the grammar beforehand, we could determine valid inputs ahead of time. Unfortunately, most parsers used in practice are written ad hoc, using common string functions like split
, trim
or slice
, without explicitly defining an input grammar.
In my ongoing PhD research, I aim to statically infer input string grammars from unannotated ad hoc parser source code. To this end, I am developing Panini, a system for automatic end-to-end grammar inference using program slicing, refinement type inference, abstract interpretation, and SMT solving.
Feature flags are a popular method to control functionality in released code, but they can quickly accumulate technical debt. Unknown dependencies between flags are a source of serious bugs, but testing all possible flag combinations is infeasible in large systems like Microsoft Office, which has about 12 000 active feature flags at any given moment.
During an internship at Microsoft Research in Cambridge, I developed a probabilistic inference method based on patterns in telemetry data that is able to automatically discover causal relationships between feature flags with over 90% precision.
Personal software configurations, in the form of .dotfiles, can provide insights into the environments of software professionals and the tasks they perform. I was involved in a number of studies analysing publicly shared .dotfiles, e.g., to characterize the use of shell aliases.
To enable large-scale mining of personal configurations (and other unusual source files), I developed github-searcher, a Python tool to exhaustively sample GitHub Code Search results, as part of a research visit to MIT CSAIL.
Research visit partially funded by the Christiana Hörbiger award for the mobility of young scientists.
Software Transactional Memory (STM) immensely simplifies concurrent programming by allowing memory operations to be grouped together into atomic blocks. For my master's thesis, I investigated safe ways to combine STM transactions with (limited) side-effects.
During a research practicum at UNSW Sydney, I developed transactional memory with finalizers, an extension to Haskell's STM implementation, allowing the programmer to safely execute arbitrary I/O during the commit-phase of a transaction.
I also developed a new contention-free STM data structure, the transactional trie, which uses localized side-effects to eliminate unnecessary conflicts while preserving transactional safety.
Partially funded by a stipend from TU Wien.
Dynamically typed languages spend a significant amount of execution time on type checks, yet most programs are actually overwhelmingly monomorphically typed. To remove this unnecessary typechecking overhead, I implemented a portable optimization scheme for the Lua language that rewrites Lua VM instructions at run-time.
I am currently involved in teaching the following classes at TU Wien:
If you are interested in a bachelor's or master's thesis, or a project in computer science, here is an (incomplete) list of offered topics:
You can find more topics at the IPA Lab. If you have any other idea that you think would align with my areas of interest, feel free to contact me!
Previously:
I am on the junior program committee for MSR 2024 and the artifact evaluation committees for ISSTA 2024, PLDI 2024, ESOP/FASE/FoSSaCS 2024, and The Programming Journal (Volume 9).
I have previously served on the junior program committee for MSR (2023), the extended review committees for ECOOP (2023, 2022), the artifact evaluation committees for PLDI (2023), ECOOP (2023, 2022), ISSTA (2023, 2022), and The Programming Journal (Volumes 7 & 8), the program committee of the CIKM 2020 resource track, and was an additional reviewer for the ICSE 2021 Demonstrations track.
I was a beginner's mentor at ZuriHac (2015) and served as a student volunteer at the Vienna Summer of Logic (2014) and HiPEAC (2014).
I maintain the ctrie package, a non-blocking concurrent hashmap for Haskell, and the ttrie package, a contention-free STM hashmap.
Since 2014, I have collaborated with the Berlin-based artist collective and design studio Refrakt on a number of artistic, educational, and commercial mixed reality experiences.
I co-founded Auctionist, an online auction house for fine art and collectibles, and served as CTO from 2016–2017.
Queerbot was a cocktail robot that aimed to get people drunk and challenge popular misconceptions about genotype and phenotypic expression, especially as it relates to gender and sexuality. Collaboration with Miss Peggy and Zwax for Roboexotica 2015. (code)
I host the annual Landjäger Kürzestfilm Festspiele, the world's shortest film festival, where every film has to be exactly 12 seconds long.