I work as a PhD student in the Programming Languages Research Group at TU Delft since May 2016, under supervision of Dr. Sebastian Erdweg. I received my Master’s degree at TU Darmstadt in 2015.
My PhD topic is to evolve legacy software systems to domain-specific languages (DSL). Legacy code bases become harder to maintain the larger the size and the more technical debt that has been accumulated over the years. The use of DSLs can mitigate this problem, but manually refactoring the legacy code base to DSLs is a huge effort and an error-prone process. To this end, I will develop a tool that uses DSL definitions to automatically detect possible refactoring sites and refactor legacy code to DSL code.
The semantics of DSLs is often defined by a transformation of the abstract syntax tree (AST) of a DSL to the AST of a host language. A language for describing these transformations, which is particularly suitable for this project, is Stratego, a term-rewriting language. Given a DSL definition as a Stratego program, the goal is to derive a refactoring, that translates code of the host language to code of the DSL.
The IDE Portability Problem and its Solution in Monto
Sven Keidel, Wulf Pfeiffer, Sebastian Erdweg.
In Proceedings of Software Language Engineering (SLE). ACM, 2016 [pdf]
As my master thesis project, I worked on Monto. Modern IDEs support multiple programming languages via plug-ins, but developing a high-quality language plug-in is a huge development effort and individual plug-ins are not reusable in other IDEs. This problem is called the IDE portability problem.
Monto provides a solution to the IDE portability problem based on a language-independent and IDE-independent intermediate representation (IR) for editor-service products. This IR enables IDE-independent language services to provide editor services for arbitrary IDEs, using language-independent IDE plug-ins.
Monto combines the IR with a service-oriented architecture to facilitate the modular addition of language services, the decomposition of language services into smaller interdependent services, and the use of arbitrary implementation languages for services.
I am the creator of HSynth, a sound-synthesis library in Haskell. In this library synthesizers are defined with Haskell arrows. The library facilitates an optimizing compiler, that translates the high-level synthesizer code to low-level code. With this optimization, the library is suitable for live audio-synthesis at 48kHz.
Since Fall 2016 till now I am teaching an internal seminar for the members of my research group about Category Theory. With this seminar, I want to make the topic of Category Theory more accessible to computer scientists by providing examples of categorical concepts in computer science. So far I have covered all topics in the book Category Theory by Steve Awodey and I am eager to present more advanced topics out of Mac Lane's book Categories for the working Mathematician.
In Summer 2016 I taught the seminar CS4130 for master students at TU Delft about Meta-Programming. As part of each session, all students had to read a scientific paper, write a short summary and discuss the contents of the paper under my moderation. The goals of this seminar, besides teaching about Meta-Programming, were to enable students to access scientific information in form of papers.
In Winter 2016 I assisted in the course CS4106 Language-Based Software Security at TU Delft. I was responsible for creating the exercises accompanying the course. Topic of the course were programming language-based countermeasures to avoid security vulnerabilities.
Interactive services in a disintegrated development environment
Hans Becker. Master thesis. [pdf]
File dependencies in a disintegrated development environment
Stefan Kockmann. Bachelor thesis. Co-supervised with Sebastian Erdweg and Mira Mezini. [pdf]
Office: HB 8.260
Phone: +31 15 27 81935
2628 CD Delft