Fish’n’Chips No More

Following All Good Things… it was the day I choose to leave Microsoft Research in Cambridge for the sake of new challenges and adventures. England is not that bad, considering the weather, the living conditions, the food and the traffic…

The last five years with Microsoft Research have been very intense, exciting but also quite exhausting. Our dev team went twice to the Microsoft TechFest showing the Microsoft Computational Science Studio in 2008 even to the press.I met Alan Alda, known as Capt. Benjamin Franklin “Hawkeye” Pierce from the TV drama M*A*S*H, meanwhile presenting us TV show Scientific American Frontiers.

Ein Highlight bei der Entwicklung des Microsoft Computational Science Studio war zweifelsohne die Präsentation durch Craig Mundie während der Microsoft College Tour 2009. Nicht nur dass Craig Mundie hier meinen Code in den Händen hielt, er musste ihn auch gleich an einigen der Top-Universitäten in den USA vorzeigen (u.a. Cornell und Harvard). Das ist einmal eine ganz neue Art von Druck, bedenkt man, dass es sich dabei um einen Forschungsprototypen handelte. Auch hier gab es den einen oder anderen Artikel in der Presse, beispielsweise in der Seattle Times. Überraschend kam dann noch ein Channel 9 Video von dem niemand wirklich wusste, bis es plötzlich online war.

image

Nachdem ich für Coding4Fun 2005 bereits das erste Mal auf der PDC05 mit einem eigenen Stand vertreten war, konnten wir 2009 wir dann auch mit Vedea auf der PDC09 punkten.

Beide in Cambridge entwickelten Prototypen konnte ich Mitte diesen Jahres nochmals im kleinen Kreis bei der .NET User Group in Karlsruhe vorzeigen und habe mich dabei sehr über die interessanten Diskussionen gefreut. Zwei Mal auf der PDC, zwei mal auf dem TechFest ist keine üble Bilanz, die  mit einer Danksagung im Artikel Predictive Models of Forest Dynamics im Fachmagazin Science (Science, vol 30, 13. Juni 2008) noch “aufgewertet” wurde.

Zwischendurch gab es sogar ein Besuch von Bill Gates, dem einige der (Forschungs-) Arbeiten vorgestellt wurden (ich saß in dem Stuhl in dem Bill Gate saß). Aber auch das tägliche Leben ließ sich nicht Lumpen, ob eine Diskussion mit Don Syme (einer der brillantesten Köpfe und bekannt für Generics und F#) oder ein morgendliches “Hi Tony” zu Tony Hoare (jedem Informatikstudent aus dem ersten Semester aufgrund von Quicksort und dem Hoare-Kalküls wohlbekannt), das hat man nicht überall.

Letztendlich konnten wir die eine oder andere Entwicklung an verschiedene Produktgruppen in Redmond weitergeben, und so findet sich vielleicht manch Zeile Code bald wieder in einem der zukünftigen Microsoft-Produkte.

A Simple Vedea Example

VedeaMy colleague at Microsoft Research in Cambridge, 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.

img = LoadImage("world.png");
Scene.Add(new Vedea.Image(img, 0, 0));

for (i=0; i<len; i=i+1) {
  b = Noise(i*255);
  Stroke(20, 0, 0, b);

  x1 = csv.SourceLon[i];
  y1 = cvs.SourceLat[i];
  x2 = cvs.DestLon[i];
  y2 = csv.DestLat[i];
  c = new Vedea.Curve(x1-10, y1-b, x1, y1, x2, y2, x2, y2-b);
  Scene.Add(c);
}

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:

Stroke(255, 0, 0);
Scene.Add(new Vedea.Curve(5, 26, 5, 26, 73, 24, 73, 61));
Stroke(0, 0, 0);
Curve(5, 26, 73, 24, 73, 61, 15, 65);
Stroke(255, 0, 0);
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.

Introducing Microsoft Computational Science Studio

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.

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.

In High Regard

Yesterday, I received the deeply sad message that Prof. Karen Spärck Jones 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. The critics have been quite hard but very 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 the Roger Needham Building. Whenever you attend a talk or lecture there, you should have a look…

VRDK

We are still working with the VRDK at Microsoft Reseach, Cambridge. During the last few months I gave several talks, introducing the VRDK to a wider range of audience. Finally, a lot of people asked me if and when we will release it. Unfortunately, it is not a product rather a research platform.

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

Official Sites

Weblogs

Misc