Vedea Martin Calsyn recently unveiled the second project we are working on at the Computational Science Laboratory at Microsoft Research in Cambridge,  UK. The Microsoft Visualization Language codenamed Vedea is an experimental language for creating interactive infographics and data visualizations. The language initially targets non-programmers, however, Vedea also provides sophisticated features such as LINQ for experienced developers as Martin demonstrates in his post. 

Vedea was demoed the first time at PDC09 to the public. The demo shown there visualizes global IP traffic monitored during a 24h time span. The data is organized in a standard CSV file and contains source, destination, geographical coordinates, IP numbers and the time and some more statistical information. 

Example Source Data

The data itself is rather unspectacular and the most useful for some statistical analysis. However, with Vedea is is relatively easy to visualize the data in a handsome manner. Before you go on, please be aware that the language is still under development and the given example just represents the state of development at the time of PDC09.

  1: img = LoadImage("world.png");
  2: Scene.Add(new Vedea.Image(img, 0, 0));
  3: 
  4: for (i=0; i<len; i=i+1) {
  5: 
  6:     b = Noise(i*255);
  7:     Stroke(20, 0, 0, b);
  8: 
  9:     x1 = csv.SourceLon[i];
 10:     y1 = cvs.SourceLat[i];
 11:     x2 = cvs.DestLon[i];
 12:     y2 = csv.DestLat[i];
 13: 
 14:     c = new Vedea.Curve(x1-10, y1-b, x1, y1, x2, y2, x2, y2-b);
 15:     Scene.Add(c);
 16: }

The fist two lines of code are used to load background image. after loading, the image is added to the current scene. The Scene object describes the standard canvas, the programmer draws on. This demonstrates the object oriented capabilities of Vedea. As Vedea is a  dynamic language which is based on the DLR, there is no need  to declare the type of the image object.

At the next lines we find a simple for-loop that iterates through all lines of the source data. The data file has been loaded similar to the image beforehand into an data file called csv and len is a value of roughly 100.000. So yes, we draw an manage about 100.000 primitives here. Most of the language features in Vedea can be used in a imperative or declarative way. Noise for example is a built-in language features that returns a random number (between 0.0 an 1.0) based on a one-dimensional Perlin noise function. This function is used to create a smooth color gradient with a alpha channel of 20 for our visualization.

Vedea Curve Stroke is used in a declarative way to set the stroke color for all primitives drawn afterwards. The next four lines simply read the x- and y-coordinates Finally, a curve is drawn and added to the current scene. The fist and the last point specified are control points that determine the curve’s flexure while the second and third point describe the actual start and endpoint of the curve. Of course the Curve primitive can be used in an imperative or declarative style (or both) as well:

  1: Stroke(255, 0, 0);
  2: Scene.Add(new Vedea.Curve(5, 26, 5, 26, 73, 24, 73, 61));
  3: Stroke(0, 0, 0); 
  4: Curve(5, 26, 73, 24, 73, 61, 15, 65); 
  5: Stroke(255, 0, 0);
  6: Curve(73, 24, 73, 61, 15, 65, 15, 65);

In the original example we use the previously generated random value b also to vary the curves control points corresponding with the color. Once we run (remember, we are based on the DLR and thus we don’t compile) the example, we finally get our visualization.

Vedea Vizualization 

In his post Nick Eaton stated that

Users of Vedea obviously need to have some background in coding.

This is not necessarily true as the example above should show. Using the declarative style of the language it is relatively easy to create appealing visualizations with only little knowledge about programming structures and technologies such as DirectX, GDI+ or WPF. As seen in the example above its within the nature of Vedea to forgive various mistakes which makes it easy to use from the very beginning.

Vedea is a research project of the Computational Science Laboratory of Microsoft Research in Cambridge, UK. The project and still under development. The example shown here represents the state of the project at the time of PDC09 as it was presented to the public. As this is an ongoing project the language might evolve, new features will be developed and others might become obsolete.

Posted at Friday, December 04, 2009 6:20:09 PM (W. Europe Standard Time, UTC+01:00) 
Comments [4] #      | 

One disadvantage working for Microsoft Research is that you cannot talk about your current work all the time. For two years now we were working on two exiting projects. However, there was not a lot to talk about since now…

The very first time we have shown Microsoft Computational Science Studio was at TechFest 2008 at that time codenamed ‘Discovery’. There we showed it to the public the first time to visualize, simulate and predict future development of global forest growth based on a novel scientific model developed by scientist Drew Purves.

Microsoft Research U.K. Science Studio Team At the Advanced Developers Conference Keynote in Bonn, Germany I already talked about the unique collaboration within the Computational Science Laboratory within Microsoft Research in Cambridge, UK. A unique setup of brilliant scientists from various fields and a group of great software engineers work together creating next-generation software solutions to address future challenges in computational science. The team includes Martin Calsyn (Architect), Alexander Brändle (Head of Technology), Drew Purves (Scientist), Matthew Smith (Post-Doctoral Researcher), Stephen Emmott (Head of Computational Science Laboratory within Microsoft Research and Professor of Computational Science at Oxford University), Vassily Lyutsarev (Manager Scientific Computing), Benjamin Schröter (Software Engineer), Eric Hellmich (Systems Engineer), Shawn Barrett (Quality Assurance and Software Engineer) and myself.

As part of his College Tour, Craig Mundie presented our work, the Microsoft Computational Science Studio (MSCSS), to the public at University of Washington, University of Illinois, Harvard University and Cornell University. Among he said about MSCSS:

Now, the way that this is actually built is it's a bit like having Visual Studio, which is a toolkit for people writing programs -- these guys call this the Science Studio, because the goal is to allow people not to write programs in the traditional sense but to compose large scale models together for scientific purposes.

Indeed, he showed the large scale model we worked no the weeks before with our scientists:

The whole talk at University of Washington is available as webcast from UWTV. Further articles are available from CNET, TechFlash and The Seattle Times where later says

A guy who is a climate scientist or a tree biologist can make a direct contribution without having to understand everything else or becoming a computer wizard in the process," Mundie said. "I tell people this is sort of doing for scientists and policymakers what Excel did for the average business guy 20 years ago

Further posts on MSCSS and our second project called Vedea, being currently demoed at PDC09, will follow soon. Until then you might want to read an overview of MSCSS at Martin’s blog.

Posted at Thursday, November 19, 2009 7:17:29 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

Since Photosynth was announced the very first time, I was keen to try out this technology. Finally, Photosynth became public and you can create your own synths.

After installing the Browser plug-in you select "Create your Synth" on the Photosynth Web site.

Microsoft Live Labs - Photosynth

To sign in you'll need a Windows Live account - probably you have a messenger account. You'll start a synth by selecting a set of photos.

Photosynth - Start new synth dialog

The dialog is quite self-evident. Don't forget to select the license you want to use for the synth. That's quite important as each and every synth is public available.

Photosynth - Create synth dialog

Select "Synth" and then just wait... 

Photosynth - Generating synth dialog

You'll probably get a good "synthy" rate.

Photosynth - Synth completed dialog

And that's what you finally get:

Source: http://www.photosynth.net/

Posted at Monday, August 25, 2008 12:52:41 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

[rdf]Today, I spent some minutes to perform an experiment on linked data. The D2R server at L3S - University of Hannover publishes a weekly update version of the DBLP bibliography. The URIs from the Hannover server can thus be used to to set RDF links to DBLP data.

The FOAF profile is quite meaningless when used in a stand-alone to the machine-readable Web, similar to HTML pages without any links. With additional links to other machine-readable Web - and there are quite a lot resources available right now on the Web but you still have to find them. I was told a very visual metaphor where you could understand the Semantic Web as it is today as a country with hundreds or thousands of train stations but no tracks between those stations. As long as there are no tracks build, the train stations do not provide any added value. Similar it is to the Semantic Web. Unfortunately, establishing the links between the resources is still a very manual and time intensive job that must be accomplished by the human user.

Once linked, it becomes interesting when using the appropriate tools to browse these information. The best (even when experimental) tools therefore are the following Semantic Browsers:

To link myself to the DBLP database URI, I simply have to add an owl:sameAs tag to my FOAF profile. This allows to follow Semantic Web Browsers the links to the DBLP database. The different kinds of links you can add to your profile can are explained in a tutorial at FU Berlin.

As adding these links is still a manual process, I now think of creating a small component that will update publications in my FOAF file in the future based on a XML input file. That will allow me to semi-automate the process of updating the FOAF file. Some good reasons are

  • It's easier to write down pure XML rather than RDF.
  • I can reuse the XML on other places, such as the publication list on my Web site
  • The links to the corresponding DBLP entries will be searched automatically.

Comments are warmly welcomed.

Posted at Sunday, August 17, 2008 10:10:10 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

In a previous post I told about my master plan after gaining my new root server:

  1. Got root
  2. Install VMware
  3. Install a Windows Server 2008
  4. Move my existing site to the new server

After almost 16 hours my request for my own RIPE subnet was approved. Now I can concentrate on the next point: Installing VMware. Since I want to set up this machine for virtualization I have to perform a few steps first. That way, this post will be mostly about my fight with Debian Linux which is the host system.

After logging in, I just realize that updating the package database might not the worst idea. Consequently I do so and install some Norton Commander like tool for real men

apt-get update 
apt-get install mc  

This actually makes things much easier.

Now, I have to activate IP forwarding in /etc/sysctl.conf by the adding

net.ipv4.ip_forward=1

and bringing the additional IP on the host system by adding

up ip add 192.168.1.1/29 dev eth0

to /etc/network/interfaces. Additionally, I have to add some host-route (by using my gateway 192.168.0.1) so my new subnet is reachable by adding

pointopoint 192.168.0.1

to eth0 in /etc/network/interfaces. Installing iproute by a

apt-get install iproute

restarting the interface by calling

/etc/init.d/network restart

finally makes my IP ping-able. Quite a fight so far if you don't do this on a regular base. Additionally I installed the powersaved package and reconfigured several settings to increase the performance in /etc/powersave.

I just got the tip to put my virtual machines to the separate disc. Since I have one spare 400GB disc. I have to create some partition and to format it.

cfdisk /dev/sdb
mkfs -t ext3 /dev/sdb1

Let's create some directory for the virtual machines and mount the disc

mkdir VMs
mount -t ext3 /dev/sdb1 /Vms

Now some final tweak at /etc/fstab by adding

/dev/sdb1 /VMs et3 defaults 0 0

and I am done.

Finally I start installing the VM. I was pointed to some German How-To written by Till Brehm which is includes quite detailed instructions.

Some prerequisites are required before I start. I do the required 220 MB update by

apt-get install linux-headers-`uname -r` libx11-6 libx11-dev x-window-system-core x-window-system xspecs libxtst6 psmisc build-essential

VMware can be downloaded from http://www.vmware.com/download/server/. I skip the management console since I will use it on my Windows workstation and focus only on the server and management interface binaries using:

wget http://download3.vmware.com/...
tar xvz VMware-server-*.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Now, I simply accept the defaults for the following installation. only at one point I had to tell the script that my virtual machines will be located at /VMs. No I have to continuing with the management interface

tar xvfz VMware-mui-*.tar.gz
cd vmware-mui-distrib
./vmware-install.pl

The Web-based managmeent interface seems to work perfectly after installing.

VMware Management Interface

After installing the management console on Windows I run into some trouble. During compilation of the corresponding modules, the VMware script was not able to start the inetd service. Therefore, I was not able to connect to the VMware server. After restarting the service manually it worked perfectly and I set up my virtual machine.

VMware Management Console

So far, I've reached the next level of my master plan.

  • Got root
  • Install VMware
  • Install a Windows Server 2008
  • Move my existing site to the new server

    Now I have to copy the installation files for the Windows Server 2008.

  • Posted at Thursday, April 10, 2008 10:22:18 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    "The Visual Linq query builder is a Visual Studio 2008 addin. It's a designer that helps you create Linq to Sql queries in your application. Both C# and VB projects are supported."

    It was developed during an internship at Microsoft by Simon Ferquel and Johanna Piou.

    Read more on here and get the bits from there.

    Posted at Thursday, April 10, 2008 8:25:09 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [1] #      | 

    I am going to implementing a publish/subscribe mechanisms for our recent Web-based research prototype. Therefore, I am interested what others already thought about this pattern. Looking for the  pub/sub paradigm, Google returns the corresponding Wikipedia article on the first place. Screening the article, there are a few starting points worth to be remembered:

    • Pub/sub is a sibling of the message queue paradigm
    • Subscribers typically receive only a sub-set of the total messages published; selecting messages for reception is called filtering
    • In topic-based systems messages are published to topics or named logical channels
    • In content-based systems, attributes or the content of messages must match constraints defined by the subscriber
    • In hybrid systems, publishers post messages to topics; subscribers only receive content-based subscriptions on a particular topic
    • Brokers might be used to maintain subscriptions, store and forward messages and perform the filtering
    • The first time a pub/sub mechanism was described was in Exploiting Virtual Synchrony in Distributed Systems [pdf] by K. Birman and T. Joseph.
    • Publishers and subscribers remain ignorant of the system topology; publishers don't know about the existence of any subscribers; this allows to create a loosely-coupled system
    • Scalability for pub/sub under high load in large deployments currently remains a research question

    Looking for more information on the Web I cam across the Publish/Subscribe integration pattern from Microsoft's patterns & practices. The problem statement seems reasonable:

    • How can an application in an integration architecture only send messages to the applications that are interested in receiving the messages without knowing the identities of the receivers?

    In the context description, the following communication infrastructures are mentioned:

    • Bus
    • Broker
    • Point-to-Point

    In contrast to to the Wikipedia article, we learn about three different types of mechanisms:

    • List-based Publish/Subscribe
    • Broadcast-based Publish/Subscribe
    • Content-based Publish/Subscribe

    Having a closer look, the List-based Publish/Subscribe mechanism maintains a list of subscribers, similar to the Observer pattern. Attach() and Detach() operations allow to modify the list of subscribers while a Notify() operation is used to send updates to the subscribers. Seems to be well suited if you have one publisher and many subscribers, but does not look suitable if subscribers watch many subjects. The core functionality of List-based Publish/Subscribe can thus be identified as

    • The publisher maintains a list of all subscribers
    • The publisher notifies each one individually

    If we understand subscription lists as named channels, the List-based Publish/Subscribe represents a topic-based subscription mechanism.

    The Broadcast-bases Publish/Subscribe mechanism simply dumps messages to the local are network. Each subscriber is responsible for listening and inspecting the subject line of the message. If the subject line matches, the subscriber processes the message. This approach seems to be a optimum in decoupling the system. Clearly, this can be identified as some kind of a topic-based system. If the publisher needs to know about subscribers to a particular topic, a hybrid approach can be chosen, where a additional process requests information about interested subscribers. To establish the hybrid system, however, every subscriber must respond to the request. Another name mentioned in the article is publish/subscribe channel with reactive filtering due to the responsibility of each subscriber to filter the messages on its own.

    In difference to the Wikipedia article, in this article the author differentiates between topic-based and content-based mechanisms. In this context, both, List-based Publish/Subscribe and Broadcast-based Publish/Subscribe are understood as topic-based mechanisms.

    While topics are considered as a pre-defined set of subjects, each message in a content-based system can be understood as a  single dynamic logical channel. This idea was proposed in The Evolution of Publish/Subscribe Communication Systems [pdf]. We will come back to this paper later.

    Where to implement the pub/sub functionality depends on your underlying communication structure:

    • Bus: Implement the subscription mechanism in the bus interface
    • Broker: Implement the mechanism through subscription lists to the broker
    • Point-to-Point: Implement the mechanism through subscription lists in the publisher

    The article also differentiates between fixed subscriptions and dynamic subscriptions. While applications cannot control their subscriptions, dynamic subscriptions allow to modify subscriptions through certain control messages.

    Some more keywords are listed in the article:

    • Initial subscription: How communicate subscribers their subscription to the communication infrastructure when they are initially added
    • Wildcard subscription: If supported, subscribers can subscribe to multiple topics through one subscription
    • Topic discovery: How can subscribers discover available topics if dynamic subscriptions are supported

    How to implement a dynamic list-based publish-subscribe pattern is illustrated in the MSDN library.

    I found also some article about the way EDA (event-driven architecture) extends SOA including a nice depiction of the idea behind EDA. There, EDA is proposed for a publish/subscribe mechanism rather than a command/control mechanism as provided by SOA. EDA seems especially suitable when you are facing

    • Workflow type of processes and
    • Processes that cross functional organizations borders.

    It is also mentions that some good support for the EDA pub/sub pattern would be a declarative model.

    I also came along this article giving a brief overview of Publish-Subscribe Channel pattern from the book Enterprise Integration Patterns by G. Hohpe and B. Woolf. It basically tells that the channel delivers a copy of the message to each of the output channels where each output channels has only one subscriber. After the message is consumed, it is removed from the channel.

    Having a look into Exploiting Virtual Synchrony in Distributed Systems, mentioned in the beginning, gives you an insight into several issues in distributed systems. One interesting fact to bear in mind is about synchrony vs. asynchrony. If your publisher requires responses this could be 0, 1 or n for n subscribers. If you expect 0 responses you actually run a asynchronous system. For so-called process groups an interface is provided, allowing to join or leave a group but also to receive updates on the group memberships. Sounds similar? The Observer pattern, I see here. In the described news service, one already realizes the common concepts described before: "Each subscriber receives a copy of any message having a 'subject' for which it has enrolled on the order they were posted.". The overall description is rather abstract, but gives a interesting insight into the development of the mechanism.

    Afterwards I ended up directly with The Evolution of Publish/Subscribe Communication Systems, providing a well written summary of the publish/subscribe paradigm. Especially the decoupling fact has been structured into

    • Anonymity: parties do not need to know each other,
    • Decoupling in time: interacting parties do not need to be up at the same time,
    • Decoupling in flow: sending and receipt does not block parties.

    Again, we see content-based and topic-based mechanisms which makes me think twice of the classification proposed in the Wikipedia article. Back to the paper, the authors state that content-based pub/sub systems cannot rely on

    • Centralized architectures based on
    • Network level solutions.

    A single server simply cannot deal with a high number of subscribers and the limited number of IP multicast addresses does not fit the large number of logical channels. Rather they propose a application-level realization through a set of event-brokers, exchanging information on a point-to-point basis. For broker interaction the following issues are pointed out:

    • Subscription and information routing: I.e. creating a mapping between subscriptions and subscribers and the matching and forwarding  of operations.

    Maybe its worth to mention, that both papers address communication systems on network and overlay network infrastructure-levels than on application-level. However, the concepts are the same.

    Baldoni comes up with the concept of ad-hoc subscription languages, compared to SQL for databases. This, however, requires a-priori knowledge of the structure of the information space. At least, the idea of selecting subscriptions or topics using a query language sounds quite appealing. As future research direction, a potential formal specification of the subscription service, provided by a pub/sub system is proposed.

    • Notification semantics would provide the conditions if, when and how many times an information is delivered to a subscriber. This is pointed out as a mandatory feature if the pub/sub mechanisms would be applied to mission-critical or dependable applications.
    • Publishing semantics should allow to define the lifetime of information. I an pub/sub-based system, the subscriber has no rights to remove elements from a queue. To avoid overflow, the information must be removed from the queue. This, however, is clearly publisher dependent.

    Another often cited paper I have a look at is The Many Faces of Publish/Subscribe [pdf]. Similar to the paper before, the three decoupling dimensions time, space and synchronization are considered to extract the common concepts of different variants of the pub/sub paradigm. We learn that individual point-to-point and synchronous communication leads to rigid and static applications. Three types of pub/sub mechanisms are introduced:

    • Topic-based
    • Content-based
    • Type-based

    The basic terms for sending and receiving messages through a software bus/event used here are

    • Event for the message to be delivered and
    • Notification for the act of delivering this event.

    The core system should provide a

    • Event notification service providing
    • Storage and management for subscriptions and
    • Efficient delivering of events.

    The events used here are called subscribe(), unsubscribe() and publish() - not that different from the ones we know from the Observer pattern. Some new operation is called advertise() to advertise the nature of future events of an publisher. That way, the event service can adjust to the expected event flows and subscribers can learn when new types of information come available. We also learn about alternative communication paradigms here:

    • Message passing is just about sending and receiving messages through communication channels. For the sender, the process is asynchronous, while the receiver must act synchronous. Both parties must be active at the same time and the sender must know its receivers. Consequently, the parties a coupled both, in space and time.
    • RPC (mentioned the first time in Implementing Remote Procedure Calls [pdf] and A Survey of Remote Procedure Calls [pdf]) makes remote interactions appear the same way as local ones. Here we have a strong space and time coupling since the the invoking object hold a reference to the invoked one. One attempt for removing synchrony was e.g. applied by CORBA using one-way modifiers. In this context, the authors mention the expression fire-and-forget.
    • Notifications allow a decoupling of synchronization by performing two independent invocations. The first (sent from client to server) provides a callback reference used by the server to notify the client about changes. This is mentioned to be a limited version of pub/sub mechanism and directly related to the Observer pattern we already learned before.
    • Shared spaces are definitely not what I am going to use, however it is interesting to read the summary. All communication between parties takes place using tuple spaces (e.g. known from Linda) using three operations in(), out() and read(). This approach is both, time and space decoupled but remains synchronized and is thus somewhat limited in scalability. 
    • Message queuing often uses some pub/sub mechanism.In difference to tuple spaces, message queues provide some transactional, timing and ordering guarantees. In difference to the pub/sub mechanism we learned before, messages are concurrently pulled by the consumer. 

    For the three pub/sub forms we find some more detailed information:

    • Topic-based pub/sub is based on the notion of topics or subjects, extending the notion of channels. Subscribers can subscribe topics, identified by keywords and are related to the concept of groups and group communication. When you think now of the paper we discussed before: The Isis system, described in Exploiting Virtual Synchrony in Distributed Systems is also mentioned as the one introducing the pub/sub concept the first time. Some nice expression I read in the related section was the concept of event space. In topic-based systems, the event space can be addressed hierarchically, while groups usually offer only a flat structure.
    • Content-based pub/sub (aka property-based) should introduce a subscription scheme based on the particular event. Some properties events to be used for structuring could be: internal attributes of data structures or meta-data associated to events. Here again, we read about subscription languages but more in detail about filters on form of name-value pairs combined with simple operators (=, <, >, <=, >=) resulting in so-called subscription patterns.
    • Type-based pub/sub is meant to replace the name-based classification of topics by a scheme according to the type of events.

    Having a closer look at events we learn about the classification into messages (delivery through a single operation e.g. notify) and invocations (event triggers some specific operation on the subscriber). Furthermore, invocations are directed to a certain kind of objects and provide some well-known semantics. You can also differentiate between on-way invocations (COM+ or CORBA Event Service) and those requiring some return value.

    We see different kinds of architectures there:

    • Centralized architectures are using a centralized component for storing and forwarding events. Consequently, this component is a single source of failure.
    • Distributed architectures omit this centralized component and are well suited for efficient delivery of messages.
    • Hybrid approaches provide a decentralized notification and storage service.

    Dissemination of messages is also discussed but relies a lot on the underlying concepts. Efficient multicast in content-based pub/sub systems, however, is pointed out to be still an issue.

    Some more points to be considered are related to QoS:

    • Since the publisher does not know about when and if the sent messages are processed some mechanism is required to ensure persistence of the information.
    • More QoS features deal with priorities (only relevant for messages in transit) and transaction if multiple messages are combined to atomic operations.
    • Reliability is finally pointed out as one of the most important features in distributed information systems.

    Bearing this information in mind, I now have a look into the Publish-Subscribe Notification for Web Services [pdf] whitepaper as part of the WS-Notification family. The document deals with the notification pattern for notification-based or event-driven systems in the Web service context. Here we see the same pattern as learned before:

    • Subscribers  register dynamically with the publisher
    • Multiple subscribers can register with a publisher
    • The distributing Web service sends one separate copy to each of the subscriber

    The spec defines (among others) some interesting requirements:

    • Support of resource-constrained devices
    • Support both, direct and brokered notification
    • Transformation and aggregation of brokered topics
    • Publishing of runtime meta-data (for discovering available elements)
    • Allow federation of brokers

    In the terminology section we find another interesting statement saying "a Subscription is a WS-Resource" where a WS-Resource is defined as follows:

    "A Web service having an association with a stateful resource, where the stateful resource is defined by a resource properties document type and the association is expressed by annotating a WSDL portType with the type definition of the resource properties document"

    Got it? At least let us think of subscriptions as resources. This idea lines up well with my current research.

    Also the fact of hierarchically structured topics is considered: Especially topic trees are hierarchically structured topics and topic spaces are a set of topic trees grouped together into the same namespace (obviously due to administrative reasons).

    It is actually the first document dealing with security aspect, listing the following classes of attacks:

    • Message alteration
    • Message disclosure aka confidentiality
    • Key integrity
    • Authentication
    • Accountability, i.e. a function of the type and string of the key/algorithm used
    • Availability, e.g. DoS attacks
    • Replay of messages

    Finally, I found the Distributed Publish/Subscribe Event System on CodePlex: In the whitepaper, the various types of pub/sub are characterized by

    • Coupling
    • Brokered subscriptions
    • Persistent vs. transient subscriptions
    • Delivery of events and
    • Routing.

    The Web Solutions Platform (WSP) is designed as a distributed pub/sub system and works both, intra-machine and inter-machine. Applications here subscribe to event types, so it looks like an event-based pub/sub system. The document provides some more descriptions on the system itself but no more  information on publish/subscribe mechanism in general.

    That's a lot of stuff and now I have to spend some time in reflecting all these information for my design.

    Posted at Wednesday, April 02, 2008 4:18:37 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    N3 Validator
    Posted in Research | VSR | Web 2.0

    W3C While dealing a lot with RDF and Notation3 (N3),  I was looking for a way to check my N3 expressions. At W3C's site you can find a N3 validator that allows you to validate your statements against Notation3 grammar.

    Posted at Tuesday, March 25, 2008 5:40:08 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    acm_logo I recently got accepted a paper at the REALWSN'08 workshop that is in conjunction with ACM EuroSys 2008 in Glasgow, Scotland. The paper deals with a project performed by Microsoft Research Cambridge using a wireless sensor network deployed on Skomer island in the UK, monitoring the Manx Shearwater seabird.

    Posted at Wednesday, March 12, 2008 5:07:19 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    2020 Science Last week I spend at Microsoft's TechFest presenting the work done at Microsoft Research Cambridge over the lat 12 months. Rob Knies gives a overall insight into our research at the community sites of Microsoft Research. I just surfed onto another article written by Briony Smith for itWorldCanada telling about what we showed there, well as the official press statement about our research.

    Posted at Tuesday, March 11, 2008 4:08:43 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Autonomous Monitoring of Vulnerable Habitats One reason I recently don't blog too much is the fact that I am a bit restricted in what I can tell. Being involved in some exciting projects, the confidentiality of these projects does not allow much publicity.

    Finally, one of the projects was revealed to public. Today I was pointed to a BBC news article on the web. Last season, Robin Freeman, post-doc in the Computational Ecology and Environmental Science group at Microsoft Research Cambridge did a great project in monitoring vulnerable habitats of the manx shearwater species at Skomer Island, UK.

    Being affiliated to the European Science Initiative at MSR Cambridge, I was part of the team developing several pieces of software deployed on the island together with an wireless sensor network. The project was in close collaboration with Freie Universität Berlin, Germany and Oxford University, UK. Some more information on the project can be found on its website.

    Posted at Friday, February 22, 2008 8:22:37 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 
    RDF
    Posted in Research | Web 2.0

    I was told, Ivan Herman [1] is on of the exceptional speakers for RDF. So one of the "must reads" for RDF is his tutorial [2[pdf] held at the WWW 2006 and another tutorial [3] available wt the W3C page. Of course I should not forget to mention the RDF Primer [4]. Finally, I was pointed to the SemWeb C# RDF Library [5] by Joshua Tauberer [6].

    [1] http://ivanherman.wordpress.com/
    [2] http://www.research.att.com/~chen/...
    [3] http://www.w3.org/Consortium/Offices/Presentations/RDFTutorial/
    [4] http://www.w3.org/TR/rdf-primer/
    [5] http://razor.occams.info/code/semweb/
    [6] http://razor.occams.info/

    Posted at Sunday, September 02, 2007 9:33:16 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    The current issue of Communications of the ACM features an interesting article about the philosophies behind the two approaches covering components and services [1]. Both topics have been major parts of my studies in computer science and it's definitely worth thinking about since too often decisions about these kinds of architectures and which to choose are made on hypes rather than on facts.

    [1] http://portal.acm.org/...

    Posted at Friday, August 31, 2007 10:03:13 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Ontology
    Posted in Research

    Ontology is a term borrowed from philosophy that refers to the science of describing the kinds of entities in the world and how they are related [1].

    If you start to dig a bit you'll realize a couple disillusioning facts:

    The Web Ontology Language is there for quite a while. But there is no significant impact on Web Engineering, yet. RDF and thus OWL is not designed to be read by humans. But OWL is not supported out of the box, e.g. in the .NET framework. To design ontologies you would need an editor, but all you can find is Protégé [2]. Protégé is not bad at all, but the Protégé OWL documentation [3] roughly four years old. The only elaborate documentation on OWL is the W3C recommendation [4].

    [1] http://www.w3.org/TR/2004/REC-owl-guide-20040210/#Introduction
    [2] http://protege.stanford.edu/
    [3] http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial.pdf
    [4] http://www.w3.org/TR/2004/REC-owl-guide-20040210/

    Posted at Thursday, August 30, 2007 12:18:11 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I just put an author version of FDX – Federating Devices and Web Applications, presented at ICWE 2006 online [1].

    FDX - Federating Devices and Web Applications

     

    [1] http://www.aheil.de/Research.aspx

    Posted at Tuesday, August 07, 2007 12:18:58 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    LCARS
    Posted in Research

    I've just uploaded a author version of the paper LCARS - The Next Generation Programming Context, presented on the at 23rd May 2006 the International Workshop for Context in Advances Interfaces in conjunction with AVI 2006 in Venice, Italy.

    LCARS - The Next Generation Programming Context

     

    Source: http://www.aheil.de/research.aspx

    Posted at Wednesday, August 01, 2007 11:57:03 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Today, my permanent ACM membership card arrived. Cool, though.

    ACM Mebmership Card

    Posted at Tuesday, July 31, 2007 11:28:19 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Again, I start writing a new paper and again I realize how hard it is to stair for hours on an empty sheet of paper respectively an empty screen. Therefore, I am glad about Simon Peyton Jones hints about "How to write a good research paper". Thanks to Simon you always have a good start...

    Source: http://research.microsoft.com/~simonpj/papers/giving-a-talk/giving-a-talk.htm

    Posted at Friday, July 27, 2007 6:04:53 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Rich Williams, leading the Computational Ecology group out of our team at Microsoft Research Cambridge gave an interview for Channel9. So go for it and watch the video. Rich is a bright person and he brings up tons of cool projects we develop new tools for. 

    Rich on Channel9

    Source: http://channel9.msdn.com/ShowPost.aspx?PostID=325909#325909

    Posted at Thursday, July 26, 2007 11:22:40 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Monday Morning Mug #2A remarkable amount of nothing is going on at the blog-o-sphere - so nothing to summarize from there.

    After the last meeting of members of the International Society for Web Engineering e.V. two weeks ago, we finally launched the ISWE portal. At the same time we established two social networking groups for our members within LinkedIn as well as Xing, formerly known as OpenBC. Application for memberships is available here [pdf].

    Currently, I am revising my own paper, submitted to the BCS computer Journal as well as being Guest Editor for a special issue of the IEEE Transactions on Automation Science and Engineering  on Automation and Engineering for Ambient Intelligence.

    It looks like this week will be a lot of writing and reading as well.

    During the last week I accidentally surfed on a couple of interesting web sites as well. I found a online FLV Converter that allows you to save YouTube videos as DivX and MPEG4 into several containers. Christian Weyer wrote a nice article about dealing with WSDL in WCF. Instructables seems to be a nice web site providing step-by-step instructions how to do certain things: maybe I will go for the HDD clock.

    Finally, my headset broke over the weekend, i.e. I won't be available by Skype [skypeme] for the next few days until I get a replacement.

    Source 1: http://www.iswe-ev.de
    Source 2: http://www.bcs.org/
    Source 3: http://www.ieee.org/t-ase/

    Posted at Monday, July 16, 2007 7:07:08 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Knapsack Problems by Martello and TothCurrently, I had to solve some optimization problems remembering me to my early studies in computer science. To refresh my memories I was looking for some resources about the knapsack problem. Here I found a book as free download (22.5 MB) dealing with the knapsack problem, written by Silvano Martello and Paolo Toth.

     

    Source: http://www.or.deis.unibo.it/knapsack.html

    Posted at Sunday, July 08, 2007 1:46:15 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Clemens Vasters just wrote about federated services in his blog [1]. Sounds familiar? Of course. I spend a lot of time two years ago in investigating in Web Service Federations including soft- and hardware in my research [2] at the IT-Management and Web Engineering Research Group (MWRG) [3]. At this time it was quite hard to explain to people what a Web Service federation actually is supposed to mean. We had a look deep into a couple of technologies. E.g., we allowed to connect uPnP devices with non-uPnP services across organizational boundaries, we used off-the-shelf Phidgets [4] devices to control simulated Intel uPnP services.  Unfortunately, WCF was not that stable at this time to use it as infrastructure for our approach even if we started to build upon it in the beginning.

    [1] http://friends.newtelligence.net/clemensv/...
    [2] http://www.aheil.de/research.aspx
    [3] http://mwrg.tm.uni-karlsruhe.de/
    [4] http://www.phidgets.com/

    Posted at Thursday, April 26, 2007 9:28:41 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Since my supervisor was recently appointed to a professorship [1], I changed universities this month. Due to this change I updated my research page [2] now including my current research.

    [1] http://www.fb9dv.uni-duisburg.de/vs/en/index.htm
    [2] http://www.aheil.de/Research.aspx

    Posted at Saturday, April 07, 2007 11:46:49 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Yesterday, I received the deeply sad message that Prof. Karen Spärck Jones [1] died in the age of 71. During last year's Microsoft Research Summer School she was one of the judges members evaluating the student's posters - such as mine [2]. The critics have been quite hard but effective, clearly telling what was missing and what has to be improved. One of the few valuable reviews.

    Some of her  artwork can be seen in the public area at Microsoft Research in Cambridge in of the Roger Needham Building. Whenever you attend a talk or lecture there, you should have a look...

    [1] http://www.cl.cam.ac.uk/~ksj21/
    [2] http://www.aheil.de/Research.aspx

    Posted at Thursday, April 05, 2007 12:59:57 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Today I found an online resource providing some tips and information how a research poster might look like. I have seen a lot of bad ones and do do not consider mine as perfect yet. So maybe [1] does help in improving the research posters...

    For those writing papers I still recommend Simon Peyton Jones' "How to write a good research paper" [2]. 

    [1]  http://www.ncsu.edu/project/posters/NewSite/#Note0
    [2] http://research.microsoft.com/Users/simonpj/papers/giving-a-talk/giving-a-talk.htm

    Posted at Thursday, April 05, 2007 12:32:09 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Currently I have started a new project and I am looking into some geo-related projects. NASA World Wind 1.4 [1] is now available. World wind makes massive usage of .NET and DirectX and runs quite smooth under windows Vista. The data is also provided by Microsoft Research TerraServer-USA [2], hosting aerial photography and topographic maps.

     

    Unfortunately, TerraServer provides only United States Geologically Survey (USGGS) data. Better images for local European location can be accessed using the Virtual Earth plug-in [3], available from [4]. A video of Virtual Earth in World wind can be found at [5].  Unfortunately, the plug-in does not seem to work with the latest World Wind version.

    [Update 24/02/2007]

    With the updated plug-in for version 1.4 available at [3] also the Virtual Earth data can be displayed.

    [1] http://worldwind.arc.nasa.gov/
    [2] http://terraserver.microsoft.com/
    [3] http://www.worldwindcentral.com/wiki/Add-on:Virtual_Earth
    [4] http://www.brains-n-brawn.com/default.aspx?vDir=veworldwind 
    [5] http://www.youtube.com/watch?v=Oidt5SgfwJw

    Posted at Thursday, February 22, 2007 5:20:40 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [2] #      | 

    After some delay we have put the slides of the robotics talk last Cambridge Spa Wiki [1].

    [1] http://www.bcs-spa.org/cgi-bin/view/SPA/ProgrammingRobots

    Posted at Saturday, December 02, 2006 11:38:47 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Some other resources for context-oriented programing from a bachelor thesis [1]. By accident I found out that this person is now working at [2], a company building a tool for tracking Personal Software Process. One of my topics during my studies at university [3].

    [1] http://innovexpo.itee.uq.edu.au/2002/projects/s354157/
    [2] http://www.ninthavenue.com.au/products/spot
    [3] http://www.ipd.uka.de/mitarbeiter/muellerm/PSP/index.html

    Posted at Monday, October 16, 2006 2:33:29 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Ambient-oriented programming web site [1]. Just reading some of the papers there.

    [1] http://prog.vub.ac.be/amop/

    Posted at Monday, October 16, 2006 2:26:08 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    DSL-Tools v1 for Visual Studio 2005 are available.

    "... Version 1 of Domain-Specific Language Tools lets you create a custom graphical designer that uses your own domain-specific diagrammatic notation. You can then create custom text templates that use models created in your designer to generate source code and other files. Domain-Specific Language Tools requires Microsoft Visual Studio 2005 Professional Edition or above.  ..."

    Thanks to Damir for his post [2]. Otherwise I would have missed it. Actually I was looking for exactly such a tool for my research.

    [1] http://www.microsoft.com/downloads/details.aspx...
    [2] http://tomicic.de/DevelopmentDomainSpecificLanguage...

    Posted at Friday, October 06, 2006 11:28:11 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Niels Lohmann [1] did a video of the closing session [2], given by Sir Tony Hoare [3] at a Summer School in 2006. Even if I passed his way several times over here in Cambridge, it's great to see this video. Good job Niels.

    "At the International Summer School Marktoberdorf 2006, Tony Hoare was asked to give the talk at the closing session. He gave a lot of advices for Ph.D. students, and I am glad I made a video of it to share these advices"

    [1] http://niels.ebytehost.com/ 
    [2] http://niels.ebytehost.com/videos/advice-for-phd-students-from-tony-hoare
    [3] http://research.microsoft.com/users/thoare/

    Posted at Thursday, October 05, 2006 11:08:44 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Invisible computing [1]. Not brand new but quite interesting to read:

    "This site has the source code and documentation for Microsoft Invisible Computing. It is a research prototype for making small devices part of the seamless computing world. This site contains the source code and is available free of charge for research and educational use under the Microsoft Shared Source License."

    And even better, the code is Shared Source [2].

    [1] http://research.microsoft.com/invisible/default.asp
    [2] http://research.microsoft.com/invisible/EULA.htm

    Posted at Wednesday, October 04, 2006 3:16:29 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Not much time for doing a lot of other stuff since I am just working on a paper for Pervasive 2007 [1].

    [1] http://www.dgp.toronto.edu/conferences/pervasive20...

    Posted at Wednesday, September 27, 2006 12:02:15 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Giving a talk [1] to the Cambridge SPA group on the 8th November about programming robots, Microsoft Robotics Studio and the CCR.

    [1] http://www.bcs-spa.org/cgi-bin/view/SPA/Programmin...

    Posted at Friday, September 22, 2006 8:55:59 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Grammatica
    Posted in Coding | Research

    A parser for LL(k) grammars, supporting also C# output is Grammatica [1]. I just tried it and I am highly pleased. Unfortunately the tool is under LGPL [2]. Unfortunately the created classes require the Grammatica runtime.

    [1] http://grammatica.percederberg.net/index.html
    [2] http://www.gnu.org/licenses/lgpl.html

    Posted at Monday, September 04, 2006 12:41:47 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Back from the ICWE 2006 [1] conference, finally I found some minutes to re-think about all the talks seen there and papers read in the proceedings. Actually I found out that there are many approaches to model systems. Finally, there are a few questions I think about when I hear the term model:

    1. How easy is it to create and change the model. Do I need tool support or can I do it using pen and paper? 
    2. Is the model machine-readable? Can I process the model in any way? What is the benefit of the model?
    3. Do I create the model and the the artefcats depicted in the model or do I create the model with respect to the artefacts i have found? What happens if these artefacts change?
    4. In school I learned in chemistry about models. For this our teacher showed us a Matchbox car [2].

    [1] http://www.icwe2006.org/
    [2] http://www.matchbox.com/home.aspx

    Posted at Friday, July 21, 2006 10:30:56 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I just received my ACM Professional Membership certificate these days with some links about ACM to remember.

    ACM Membership

    Homepage: http://www.acm.org
    Professional Development Centre: http://pd.acm.org
    Caree Resource Centre: http://www.acm.org/crc
    Digital Library: http://www.acm.org/dl
    Online Guide: http://www.acm.org/guide

    Posted at Sunday, July 09, 2006 11:23:54 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    EUSE
    Posted in Research

    End Users Shaping Effective Software [1].

    [1] http://eusesconsortium.org/index.php/

    Posted at Thursday, June 22, 2006 8:17:15 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Finally I can say it, Tandy Trower and his team have announced the Microsoft Robotic Studio [1]. Last time I have seen it in early spring, some parts of the tool have been already very impressing. Finally, I am looking forward for the final release.

    Beside this the Robot magazine gives a first impression of the Robotics Studio [2] and some first screenshots of the upcoming Simulator [3]. Furthermore the Carnegie Mellon University starts a new program [4] supported by the Robotics Group from Redmond. Meanwhile, there is also a Channel 9 video of almost one hour [5] available.

    [1] http://msdn.microsoft.com/robotics/
    [2] http://www.botmag.com/issue3/microsoft_technical_preview_1.shtml
    [3] http://www.botmag.com/issue3/microsoft_technical_preview_2.shtml
    [4] http://www.cir.ri.cmu.edu/
    [5] http://channel9.msdn.com/ShowPost.aspx?PostID=206574

    Posted at Wednesday, June 21, 2006 7:51:29 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Posted at Sunday, June 18, 2006 11:50:57 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I just put the AVI 2006  [1] Workshop [2] paper "LCARS – The Next Generation Programming Context" online [3].

    [1] http://www.dsi.unive.it/avi2006/index.htm
    [2] http://hci.icts.sbg.ac.at/context/avi/
    [3] http://wwlicationw.aheil.de/default.aspx?page=publications

    Posted at Tuesday, May 23, 2006 3:21:46 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Alice webiste [1].

    [1] http://www.alice.org/

    Posted at Friday, May 19, 2006 11:25:17 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    The Ed-User Programming website of Howie Goodell is located at [1].

    [1] http://www.cs.uml.edu/~hgoodell/EndUser/

    Posted at Wednesday, May 17, 2006 12:49:16 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Andrew Ko's (Whyline, Barista, Crystal, Citrus, Slate) website can be found at [1].

    [1] http://www.cs.cmu.edu/~ajko/

    Posted at Wednesday, May 17, 2006 8:56:02 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I just made a author's version of the paper "Alles Verbunden - Von UPnP zur Geräteföderation" from the Informatiktage 2006 [1] available for download [2].

    [1] http://www.informatiktage.de/
    [2] http://www.aheil.de/default.aspx?page=publications 

    Posted at Wednesday, May 10, 2006 11:05:41 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Pi-Calculus
    Posted in Research

    Some helpful information about the Pi-Calculus can be found at 

    • Calculi for Mobile Processes [1]
    • Luca Cardelli's Homepage [2]
    • The AmbIcobjs Demo [3]

    [1] http://lampwww.epfl.ch/mobility/
    [2] http://www.luca.demon.co.uk/
    [3] http://www-sop.inria.fr/mimosa/ambicobjs/

    Posted at Monday, May 08, 2006 1:45:24 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Prof. Brad Myers's HCI homepage, located at [1]

    [1] http://www.cs.cmu.edu/~bam/ 

    Posted at Thursday, May 04, 2006 9:05:19 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    VRDK
    Posted in Microsoft | Research

    We are still working with the VRDK at Microsoft Reseach, Cambridge. During the last few months I did several talks, introducing the VRDK to a wider range of audience. Finally, a lot of people asked ms/us if and when we will release it. Unfortunately it is not a product, just a research plarform, yet.

    However I checked the web and found some articles and weblog entries about the VRDK, predominantly written when it was presented to the public the first time.

    Official Sites

    Weblogs

    Misc

    Posted at Saturday, April 22, 2006 12:41:25 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Copyright © 1995-2009 by Andreas Heil. aheil is a registered trademark of Andreas Heil. All rights reserved.
    The opinions expressed herein are my own personal opinions and do not represent my employers' views in any way. Content and thoughts expressed on these pages and the weblog are subject to be changed. Out of date posts should not be considererd as my current thoughts and opinions.