I work in the field of programming languages and software engineering. More specifically in the area of advanced forms of modularization and domain-specific languages. The overall focus of my work is guided by the following observation: In my experience, we as programming language researchers easily fall in the pit of making ever more powerful languages, with cool, powerful and complex features. This however comes at the cost that the programmer needs to be able to understand and apply these features correctly.
My first research work was applied in the domain of distributed systems, trying to achieve a better modularization of cross-cutting concerns. I focused not on middleware but either on client applications that use middleware, or settings where the services are not provided by the middleware. For the former, the example case is the use of advanced transaction management and aspects. For the latter, an example I investigated is support for network disconnection and disconnection in an ambient intelligence setting, using generative programming. The ultimate goals were domain-specific languages or language extensions that provided a relatively easy way for the programmer to specify the above.
Secondly, I worked on the design and implementation of Domain-Specific Aspect Languages (DSALs). As the first incarnation of AOP, they provided a straightforward way to deal with the complexity of cross-cutting concerns and hence such languages have always interested me. The goals here were to help the language/weaver developer in creating such languages. This included finding guidelines or methodologies for DSAL design and facilitating reuse of parts of DSAL specifications, amongst others. By using domain abstracions I believe that DSALs are an important solution strategy to tackle the problem of aspect composition and interaction, and can contribute positively to the discussion on the ever-controversial concept of obliviousness in AOSD.
Thirdly, I provided a visualisation for AOP programs: AspectMaps, which provides valuable information to the programmer about the cross-cutting nature of the AOP code.
Fourthly, I have focused on the step from design to implementation: when implementing an application and using aspects, how can the design document give maximum guidance to the developer? This such that the programmer is not faced with significant ambiguities on how to implement the aspectual nature of the software, and that the design document uses as much the specific features of the aspect language as possible. As a result the programmer should not need to improvise, and external traceability can be maintained.
I am a founding member of the DCC robotics lab. First I am focusing on helping the robot developer to specify the overall behavior of the robot. This is done through LRP a live programming language for robotics behavior programming. Second I am working on studying the ROS software ecosystem, around the de-facto standard robotics middleware ROS, to find areas of low code quality and means to improve this code.