These are the people behind the AmbientTalk project of the Software Languages Lab.
In the past, I have been active in the design and formalisation of prototype-based object-oriented programming languages. After a small detour in AOP (where I introduced monads in AOP and identified the need for cflow with jumping aspects), I’m currently working with the ambient group on the design and implementation of ambient-oriented programming languages. My current mission is to come up with language constructs that make writing software for loosely coupled (mobile) distributed systems as much fun as writing sequential programs in languages like Scheme, Smalltalk or Haskell. This is done by inventing new programming language abstractions and by hiding the technical burden as much as possible in the interpreter of those languages. Keywords are repls, interpreters, dynamic typing, higher-order, first-class, reflection, object, actor and above all: simplicity!
As usual, the professor is not the one doing the real work. Please read on for more details on our research. It has received international recognition by the fact that Wolfgang has won the Dahl-Nygaard Award in 2008.
My PhD research focused on investigating programming language support to deal with the effects engendered by partial failures in mobile ad hoc networks (MANETs). In MANETs many partial failures are the result of temporary network partitions due to the intermittent connectivity of mobile devices. Some of these failures will be permanent and require application-level failure handling. However, it is impossible to distinguish a permanent from a transient failure. Leasing provides a solution to this problem based on the temporal restriction of resources.
This research identified a number of criteria for a leasing model specially designed for MANETs and proposes the leased object references model which exhibits such criteria. Leased object references combine leasing with asynchronous communication into one coherent language abstraction that deals with both transient and permanent disconnections. We explored a language approach where dedicated language support is provided such that low-level leasing management concerns (e.g. lease renewal) can be abstracted away, and enables both lease holders (clients) and lease grantors (services) to deal with permanent failures.
Current-day applications for mobile phones and PDAs are often limited to miniature versions of standard desktop applications such as browsers, calendar and word processing applications. Only a fraction of the available applications allows the mobile devices to interact directly with their environment. One of the reasons for this is that even for the simplest interactions between mobile devices, the implementation needs to deal with a lot of problems that are inherent to a pervasive computing environment (e.g. frequent disconnections, dynamic discovery, etc.)
Last year, I have been involved in the development of (a concrete implementation of) the Fact Space Model, an extension to the tuple space model which provides fine-grained control over the effects of disconnections. Using a declarative language, every device can specify how it will adjust its behaviour in response to dynamic changes in its environment. Currently, I am working on an extension of this model that allows applications to work on shared and replicated data. The use of weak data replication in a mobile environment ensures that there is no need to stop an ongoing application when certain data cannot be synchronized.
Our everyday environment will soon be pervaded with RFID tags, tiny chips that can be integrated into any physical object. The tags can store and distribute information about the object or its environment. RFID technology is a key technology in developing pervasive context-aware applications.
I am investigating new programming abstractions to develop mobile RFID-enabled applications. These are applications running on mobile devices such as smartphones or PDAs that spontaneously interact with the [objects in the] user’s environment using by communicating with tagged objects. Mobile RFID-enabled applications both disperse application-specific data to and process contextual data from tagged physical objects. The programmer must dispose of adequate tools to deal with RFID hardware characteristics.
Currently programming such applications is problematic. Communicating with RFID tags is prone to many failures as the connections with tags are extremely volatile and RFID tags have a small range of operation. State-of-the-art RFID applications heavily rely on infrastructure and merely employ RFID tags as digital barcodes, not exploiting the writable memory on the tags. As a consequence mobile RFID-enabled applications have to be developed in an ad hoc way, building upon low-level hardware abstractions leaving the developer to deal with RFID hardware characteristics manually.
You can find more information about my work here.
Thanks to the work of the other people on this page, programming applications for mobile devices is now as easy as, say, writing a blog. However, research so far has focused on one-to-one communication and how the properties of MANETs disrupt it.
In the Real World™ we do group communication without giving it a second thought, changing conversation topics as people leave and rejoin the group. Likewise, we effortlessly do service composition: comparing prices for stuff we want to buy or finding interesting activities for a trip. Doing these things with current technology requires a lot of “bookkeeping code” because it can only track the connectivity of one link at a time.
My research intends to provide abstractions that bind a number of services residing on different mobile devices into coherent entities. Programmers can then use these abstractions to communicate with groups of services as easily as with single services.
My research focuses on investigating programming language support to deal with the massive amount of concurrent events generated by various input devices. By providing adequate software abstractions for correlating multiple input devices we try to encourage multimodal gestural interaction and ease their implementations.
The relation of my research and AmOP is the spontaneous collaborative manipulation of digital information. One scenario is that multiple people can interact using their laptop or mobile device with a shared virtual smart-board over a wireless network. Another scenario is the peer-to-peer data exchange where one users ‘throws’ (gesture 1) data and another users ‘catches’ (gesture 2) it. This type of interaction is both distributed in the actions they perform (correlate the ‘throw’ and ‘catch’ from different devices) and in the data that is exchanged.
My current research topic revolves around collaborative ambient-oriented programming abstractions. This involves abstractions for expressive coordination of groups of ambient objects. In this context I am also investigating replication strategies suitable for disconnected operation.
Apart from my research on AmOP I also have a general interest in dynamic object-oriented programming languages, concurrency and distribution.
Specific to my PhD thesis, my research lied in uncovering novel referencing and communication abstractions for mobile ad hoc networks. More specifically, I am currently investigating ambient references, which are a set of object-oriented service discovery abstractions.
Within the research track of ambient-oriented programming, I am also particularly interested in the adaptation and application of meta-level architectures and reflection to the AmOP paradigm. Apart from AmOP, my general research interests include dynamic object-oriented programming languages (reuse/composition/object models) and reflection. I am especially intrigued by composition techniques such as traits and delegation.
In the past, I have contributed to the formulation of the ambient-oriented programming paradigm and have co-designed the current incarnation of AmbientTalk. Currently, my research focus is the study of elegant mechanisms to allow applications to respond to dynamic changes in their environment.
A first element of the solution I propose is the use of pattern matching rules to succinctly describe which changes to the environment are relevant. Applying such rules over a federated fact space – which transparently combines the information provided by all reachable devices – proves to be a declarative means to coordinate and contextualize the behavior of distributed applications.
The second element of the proposed solution is the use of reactive programming: a programming model centered on the use of time-varying reactive values. Their unique contagion semantics allow building event-driven software without any event handlers, thus avoiding the problems engendered by inversion of control.
The approach that combines and integrates these elements is the reactive context-aware programming paradigm, an extension of the ambient-oriented programming paradigm which is tailored for the Internet of Things.
The focus of my PhD research is to investigate the context-awareness property in the field of Ambient Intelligence. My particular interest is to explore the ways in which the computational context surrounding mobile applications, may influence their behaviour. For further information about my work please visit the Context-Dependent Behaviour Adaptations section of this site.
The dynamic nature of ambient oriented applications makes it impossible to structure them as monolithic programs with a fixed input and output. Instead, a distributed event-driven architecture is required. Current event-driven architectures require distributed application components to react to events via a carefully crafted network of observers, event handlers or callback mechanisms which are scattered throughout the application code and can be triggered at any point in time. Such architectures are hard to develop, understand and maintain in all but the most trivial cases.
This poses a problem when we look at the new generation of disposable processing hardware, such as RFID tags. Ubiquitous applications will not only consist of peer-to-peer interactions, but will have to deal with clouds of volatile information disseminated in the network by omnipresent devices such as RFID tags or sensors.
In my Phd dissertation, I investigated programming abstractions that allow to specify which events to capture by distributed application components in a mobile ad hoc network. Furthermore, I am trying to come up with mechanisms that allow reacting to these events without relying on event handlers or other callback mechanisms. Finally, low level events should be processed (e.g. by combining them) such that they are on the semantic level of the application.
Nomadic networks fill the gap between fixed networks and mobile ad hoc networks (MANETs) as they consist of a group of mobile devices that can move around dynamically while trying to maintain a connection with a fixed infrastructure. My research focusses on the coordination of nomadic services by making use of workflows as they provide an additional layer of abstraction such that interactions among application components can be specified on a higher level and be reused because of their loose coupling with the fine-grained application logic. Unfortunately, current workflow systems do not meet all the requirements for the kinds of applications that we envision in nomadic networks, like connection volatility.
AmbientTalk is a programming language which treats disconnections at the very heart of its computational model. Moreover, the language supports dynamic service discovery which is opportune for nomadic networks. Although this language is suited for writing applications for MANETs, the orchestration of these applications is still programmed in an ad hoc manner. Complex nomadic applications that consist of asynchronously executing distributed services become hard to develop, understand and reuse. I am currently working on the addition of an abstraction layer on top of AmbientTalk which implements workflow patterns. I am investigating which new patterns for nomadic networks can be added to this abstraction layer. Concretely, I want support for intensional descriptions of services, group communication, compensating actions and more advanced synchronisation.