Research
My research topics include:
- ExaScale Computing: Exascale computers are the future generation of high-performace computers that will break the exaflop barrier. They are expected around 2018 and will consist of millions of processor cores executing software consisting of billions of threads. Other challenges in this area are runtime hardware variability (such as processors with fluctuating execution speeds or memory bandwidths varying), frequent hardware failures, and reducing energy consumption. In the ExaScience Lab we are exploring solutions to these issues, mainly through an advanced middleware layer that can shield these problems and closely cooperates with numerical toolkits and scientific simulation software.
- Adaptive Runtime Resource Management: Software developers increasingly need to take advantage of heterogeneous hardware resources, like GPUs and DSPs, while coping with dynamic events and quality of service requirements. Moreover devices are increasingly becoming networked and applications need to take advantage of this. We are working on an adaptive runtime resource manager to explore resource assignment strategies such that applications can take full advantage of local and networked resources.
- Declarative Meta-Programming. I continue to be involved in the development of Soul, and in applying Soul to express software architectures (and other high-level information) in such a way that they can be synchronized with source code.
- Language Symbiosis: I am still very interested in the ways that symbiosis between languages can be obtained, and more specifically between languages of different paradigms. Currently I am looking into using new forms of reflection, meta-object protocols, and mirrors.
- Components and Composition: I find the whole evolution from object-oriented programming to components a very interesting research field. It is first of all important from a language point of view (what would a true component language look like?), but also from a reengineering and program understanding point of view (how can one understand an object-oriented system and migrate it to a component-based system?). I co-started and participated in the work on Traits (a method composition mechanism) and on Classboxes (a module system for object-oriented languages) to address some composition problems.
- Development Environments: My interests in program understanding and static analysis in source code are partially motivated by ameliorating development environments. At the very beginning of my research I looked into customizable browsers, and I was involved in the work on Software Classifications. Combining these two resulted in the StarBrowser for VisualWorks and Squeak. At IMEC I was one of the prime responsibles of the Electron d'Or award-winning CleanC, a tool for analyzing C code and integrated in the Eclipse environment.
I am especially interested in all kinds of dynamic languages (primarily in Smalltalk, Self, Scheme and Prolog). Since I strongly believe that the various dynamic language communities should know what happens in each other's communities I chaired a well-attended Dynamic Languages Symposium, co-located with OOPSLA. Dynamic Languages Unite!
What I did Previously
The first two years as postdoc at SCG I mainly worked on the PECOS project. We developed a component model for a particular kind of small embedded devices (called field devices). Special about this component model is that allows component compositions to be checked for timing, memory and scheduling requirements.
The topic of my Ph.D. research was to support the co-evolutionary changes between design and implementation (and synchronizing these changes). The basic mechanism to support the synchronization of changes was declarative meta-programming (see the Declarative Meta-Programming pages for more information). The validation of the research was done with Soul, a logic programming language implemented in the object-oriented language Smalltalk. Special about Soul is that it features reflection with Smalltalk. More information about the freely available Soul (including download locations) can be found on the Soul pages (at: http://prog.vub.ac.be/SOUL/index.html) or on my Tools page.