Eduardo Valle’s Blog

Technology, Science, Teaching

Archive for January, 2009

From Research to Product… and More Research

Posted by eduardovalle on Saturday, January 17, 2009

The LIP6 (one of my host labs in France) received Alisson Sol, from Microsoft Research, who gave us the talk “AutoCollage: From Paper to Product”. Alisson and I had the same supervisor for our M.Sc. in Computer Sciences at UFMG, Prof. Arnaldo Araújo, who was also present at the talk (we were four Brazilians in the audience!).

It was a very interesting talk, where Alisson explained his ideas on how developers can work in cooperation with researchers in order to bring their concepts to market, and how Microsoft is working to streamline this process, and to maximise the number of innovative ideas which get to see the light of day, without plaguing existing products with feature creep.

It was also a good glimpse at the radical new way Microsoft is thinking their user interfaces. The trend, which is clear in Microsoft Office 2007, reaches a pinnacle in AutoCollage: minimal, unobtrusive interfaces, and less features (or at least, less immediately visible features; following the principle that screen space is a valuable resource).

The product is available at Microsoft Store (at the moment only for the US and the EU).

* * *

Two bonuses from Alisson’s visit:

First, he showed me Windows Live Sync and Microsoft Live Mesh, which add a lot of interest to the “Live Services” platform, and might be an alternative to Microsoft Groove in an environment were people use both Windows and MacOS. As you might remember, I am shopping around for e-cooperation solutions for our research team, and especially, for our Franco-Brazilian partnership.

Second, he’s sent me the announcement for the Forum 2009 of the Microsoft Research-INRIA Joint Centre. In the detailed program, I’ve found this abstract:

Mathematical Components
Georges Gonthier, Microsoft Research Cambridge
Formalized mathematical theories can, like modern software, be built out of components. By components we mean modules that comprise both the static (objects and facts) and dynamic (proof and computation methods) contents of theories. We develop a general platform for mathematical components, based on the Coq “ssreflect” extension that was used to carry out the formalization of the Four Colour Theorem. We would validate the platform on two significant developments: a theory of efficient arithmetic, and the proof of the Odd Order theorem.”

Intriguing, isn’t it?  Hilbert’s program two dot oh?

Posted in science, technology | Tagged: , , , , , , , , , | Leave a Comment »

Language Mishaps: Looking for Perfection

Posted by eduardovalle on Tuesday, January 13, 2009

I moved through the thesis using a mixture of 90% Java, 7% Python, 2% BASH scripting and 1% C programming (not C++, but to my defence, I’ve always used the C99 standard – so I am not that old-fashioned).

When I’ve first mentioned that I intended to do all the thesis prototyping in Java, reactions were overwhelmingly negative, with gloomy cautionary tales of insufferable slowness, and unbearable memory footprint. I’ve kept those criticisms in mind, but imbued of scientific scepticism, I started prudently to perform some of the experiments in Java.

Python from XKCD, by Randall MunroeSoon I noticed that my prototypes were slower indeed, but not that slower (certainly less than 10× slower, usually less than 2× slower) and that the memory footprint was higher indeed, but not so high that experiments would become unfeasible. But mainly I’ve noticed that my prototypes were much more reliable than the ones written by the C/C++ programmers (everyone else), thus having less tendency to dump the core in front of the Ph.D. supervisor at the meetings. (It’s not that I program better than my colleagues, it’s just the wonders of having a garbage collector).

I was happy with my choice, and I’ve even gently mocked my colleagues when they defended that real programmers do pointer arithmetic and manual memory deallocation (but they know that I was kidding when I said that C++ is a language whose only purpose is to print at random one of the messages “Hello, world !” and “Segmentation Fault: Core Dumped”).

* * *

But despite the success of that “scientific prototyping experience”, Java has never conquered my heart. All languages have their small annoyances, but my gripe with Java comes from quite an essential design choice: the separation between primitive and reference types. This is one of those essential character flaws, and would only be forgivable if Java provided both autoboxing and a very clever optimising compiler. So far, only half of the solution is available: you can pretend at design time that your Integers are ints (and vice-versa), but try doing it in a critical inner loop, and at runtime you’ll become the laughing stock of all C++ programmers of the lab.

I’ve recently flirted with C# (which apparently handles this problem in a better way), but the lack of a general multiplatform implementation has made me shy of adopting it. One of the wonderful things of Java is that I can develop in Windows, my desktop system, and then run in whatever system is available at the University infrastructure: Windows, Linux, Sun’s UNIX – the integration is absolutely seamless.

I have also considered taking the “XKCD Approach” and do everything in Python, but though I really like Python for scripting, I shudder at the idea of relying exclusively on dynamic typing for anything larger than 500 lines of code.

* * *

In a way, this quest for perfection is all the fault of Bertrand Meyer, and of having read his books in my young naïve years. I am still waiting for The Definitive Programming Language. The one with a static type system which make theoreticians drool, and yet is uncannily intuitive to use. The one with a huge Standard Library, yet with a gentle learning curve. The one whose spoonfuls of syntactic sugar helps the medicinal exception handling code go down in a most elegant way.

I suspect I shall be waiting for a good while.

Posted in technology | Tagged: , , , , , , , , | Leave a Comment »

End of Winter Break

Posted by eduardovalle on Friday, January 9, 2009

After the break, back-to-work under the snow in one of the harsher European winters seen of recent.

I am glad that I’ve got my seasonal flu before the break, since I have so much work to finish before coming back to Brazil in January 30. I intend to submit soon a journal article about multicurves (my high-dimensional indexing method based on space-filling curves), and I have some other results which I would like to submit to one of the conferences in the “first wave of deadlines” (ICDAR, January 22; ICIP, January 30; ACM KDD, February 2). And, of course, I have to accomplish my final role on the EROS 3D project, preparing the end-of-project report to be submitted later this semester.

Interestingly, an unusual lot of Brazilian colleagues have chosen to spend their Summer break in Europe (thus exchanging heat waves and tropical storms for snow and glacial winds), including two former teachers and two former classmates.  This unusual density of temporary “exilés” has been fortunate, in the sense that it gives the opportunity of many encounters, discussions, and… future cooperation!

Posted in career | Tagged: , , , , | Leave a Comment »