What's going on (from twitter)
Archive: August 2008
Freebase Parallax
28 Aug 2008
, Categories: Semantics, Technology

This is a break from my "travel blogging" :-)

I just watched the video of the "Freebase Parallax" browsing interface demo. Really really cool. It's the power of semantics!!!

Freebase Parallax.

So, I arrived in Greece and it's already been fantastic. After a long trip that saw me waiting at Heathrow for 6 hours, at Zurich airport for 3, I finally arrived in Thessaloniki. My friend Kostas picked me up from the airport at 2am and drove me to Xanthi but not before we stopped to taste some Greek gyros :-) Ah! Greek junk food :-)

Zurich airport
Zurich Airport

IMG_7014  IMG_7015  IMG_7018
Thessaloniki (2008/08/24): Greek gyros at 2.30am!!! This thing was a monster to eat.

IMG_7022  IMG_7023  IMG_7027  IMG_7029
Xanthi (2008/08/26): Eating "mpougatsa" (μπουγάτσα)... combined with chocolate milk. This thing is nectar in the morning. It's pastry with Greek feta-like stuffing but not "tyropita" (τυρόπιτα) as some southern Greeks might have you believe; they are different. You'll notice the number of plates. I've been behaving. Kostas "cleaned" the other three :-)

IMG_7036 
Xanthi (2008/08/26): More food... at our friend's Grigoris' shop :-)

 

I am now in Athens for my friends Sofi's and Dave's wedding. More photos to follow...

Long time ago, in a galaxy far away... there was OGSI, there was WSRF, there was HTTP, there were services... and there were heated discussions :-)

Ian Foster suggested that we write a paper together explaining our different approaches in building applications which deal with "state". If my memory serves me well, that took place a couple of years ago. We weren't 100% in-sync back then and the effort slowed down to a standstill (I was to blame mostly for giving priority to other things).

Few months ago, Ian suggested that we revisit the paper and took the initiative of producing a new draft, with which he did a great job. After few edits, the "How Do I Model State? Let Me Count the Ways" article (by Ian Foster, Paul Watson, Mark McKeown, and myself) was sent to the Communications of the ACM and now appears in the September issue.

With that, Ian, Paul, and I agreed to be put to rest the discussions around services and state (we couldn't contact Mark to confirm with him too but it's a safe bet that he's moved on as well). It's funny how, today, it feels like we were investing too much energy on details but, as Ian told me, those details seemed important at the time :-) It has been a very interesting and exciting road to here!

It was great working with Ian on this and I am really looking forward to working with him on new things. Clouds vs Grids perhaps? :-) (just joking)

BTW... for the record... HTTP emerged as the clear winner when dealing with resource state :-) (at least in my mind :-)

Radiohead at the White River Amphitheater
22 Aug 2008, Updated: 22 Aug 2008
, Categories: Personal

I found last-minute tickets for the Radiohead gig at the White River Amphitheater last night. It was absolutely amazing; loved it! The venue is great and it was absolutely packed. Here are some photos...

A panorama of the venue before they started.

Panorama

I experimented with my new Canon 40D but, for the first time in a looooooooong time, I found myself not being 10ft from the stage so it was difficult to get  good photos in the dark; I was just too far away. I also tried some B&W photos...

IMG_6969 IMG_6973 IMG_6974
IMG_6975 IMG_6976 IMG_6978
IMG_6982 IMG_6990 IMG_6993
IMG_6997 IMG_6999 IMG_7006

Amazon Elastic Block Store (EBS)
21 Aug 2008
, Categories: Technology

EBS is another great service from Amazon. The company continues to innovate. Werner had talked about this service in the past but now it's available. Well done Amazon! The Amazon Web Services Blog has more.

I found the pricing model interesting. While traffic from EC2 to S3 is free (unless you cross the Atlantic within Amazon's infrastructure), your IOs against EBS will cost you (in millions of requests). I guess algorithms/applications will have to calculate the convenience and features of EBS against just using S3 at no cost (in terms of IO). Also, there is an interesting balance that developers will have to strike between maintaining things in memory in EC2 (paying for time) for their distributing computing algorithms (communication between EC2 instances is free) and doing taking advantage of the persistent, fault tolerance-related features of EBS (paying for IO requests).

Amazon's execution on Cloud Computing is brilliant!

Chem4Word project
19 Aug 2008, Updated: 19 Aug 2008

image One of the projects on which I've been spending lots of my time is the Chem4Word one. Alex Wade is driving the project and just published a page for the world to see. The team over at the University of Cambridge is fantastic; a pleasure to work with. We are all very excited about the project and our collaboration.

I've been trying to put the project together since March of 2007!!! :-) It took as a while but we are now in full motion. Expect a public beta at some point (stay tuned on this blog). I've been having lots of fun building prototypes, looking into OOXML, working with the team on the design of the features, etc. We have some really clever folks on board.

Of course, this is another great project brought to you by the Lee Dirks scholarly communications team :-) Yes, I am biased :-)

 

PS: The image just a mockup that Geraldine Wade of the Microsoft Advanced Reading Technologies group put together.

“Famulus” has always been the codename for our “Research Output Repository Platform", which I’ve discussed in previous posts. I am mentioning the codename in public for the first time only now because it makes the discussion of code samples so much easier. When we come up with the official name (I promise, we’re trying out best not to choose a boring name), I’ll start using that. For now... "Famulus" = "the codename for the Research Output Repository Platform".

While amongst the primary goals of the platform has been the support of the scholarly communication community, we also wanted to make sure that developers of repository tools and services had great support for extensibility. Famulus comes with a predefined data model, which we created after an analysis of common usage scenarios. We came up with a model of entities and relationships that we baked into Famulus (e.g. Papers, Technical Reports, Thesis, Books, Videos, Downloads, etc.). We also populated the store with a collection of "known" predicates (e.g. Cites, Presenter, Author, etc.). However, we were fully aware that our data model might not meet the needs of the developers 100%. So, we started working on an extensibility story for Famulus.

While adding new predicates and using them is trivial (see example below) or associating new properties with existing entities are trivial tasks, we wanted to do even better. We started working on an extensibility story that would allow developers to introduce completely new entities into the store. Based on that extensibility model, we are now building support for RDFS and, if we don't run out of time, OWL.

Here's an example of how one could create a relationship between two entities, in this case a "cites" relationship.

           1: TechnicalReport tr1 = new TechnicalReport { Title = "TechRep 1" };
           2: TechnicalReport tr2 = new TechnicalReport { Title = "TechRep 2" };
           3:  
           4:
        // Using our "well known" Cites predicate
      
           5: tr1.CitesResources.Add(tr2);
           6:  
           7:
        // Alternatively, one could do the same as above using our generic API
      
           8: Predicate cites = (from p in famulus.Predicates
           9:
        where p.Uri == "urn:microsoft:predicates:cites"
          10:                    select p).First();
          11:
        // Now that we have a reference to the predicate object, we can use it
      
          12:
        // to associate entities
      
          13: tr1.RelationshipsAsSubject.Add(new Relationship { Predicate = cites, Subject = tr2 });

Given the latter, more verbose, syntax here's a way to introduce new predicates into the store programmatically.

           1: TechnicalReport tr = new TechnicalReport { Title = "TechRep 1" };
           2: Person jim = new Person { FirstName = "Jim", LastName = "Webber" };
           3:  
           4:
        // Create a new predicate and added to the store
      
           5: Predicate reviewer = new Predicate { Uri = "urn:mypredicates:reviewer" };
           6: famulus.AddToPredicates(reviewer);
           7:  
           8:
        // we can now use it
      
           9: tr.RelationshipsAsSubject.Add(new Relationship { Predicate = reviewer, Subject = jim });

Great! But this only allows us to introduce new predicates. How about new entities (types)?

Well, we have an API for that as well. It'll be part of the Famulus Beta next month. However, I am not going to bother you with the details since we are going to abstract its usage. In the future, you'll only have to deal with RDFS. The motivation for supporting an extensible store came from the interest we got from domains other than the ones we were originally planning. I've been experimenting with how the support for RDFS would look like by writing some code. I created a small XML-based vocabulary for describing a data model, like the one you see below.

           1:
        <
        model
        xmlns
        ="urn:microsoft:famulus:datamodel"
        >
      
           2:
        <
        type
        name
        ="Artifact"
        basetype
        ="Microsoft.Famulus.Core.Resource"
        namespace
        ="Museum"
        uri
        ="urn:museum:artifact"
        >
      
           3:
        <
        property
        name
        ="DateDiscovered"
        type
        ="DateTime"
        nullable
        ="true"
        />
      
           4:
        <
        property
        name
        ="DateAddedToCollection"
        type
        ="DateTime"
        nullable
        ="true"
        />
      
           5:
        </
        type
        >
      
           6:
        </
        model
        >
      

Using that as input to a DataModel->Famulus tool I wrote over our extensibility API, I can configure the Famulus store to accept "Artifact" entities. I don't need to worry about the SQL Server schema, tables, etc. Famulus takes care of everything. We also give you a .NET DLL which you can use in your application so that you get experience like this (including great Visual Studio integration). So writing applications against our "Museum" data model is now easy.

           1: Artifact artifact = new Artifact();
           2: artifact.DateAddedToCollection = DateTime.Now;
           3: artifact.DateDiscovered = new DateTime(1000, 1, 1);
           4:
        // The base of all entities is Microsoft.Famulus.Core.Resource,
      
           5:
        // which comes with a set of common properties
      
           6: artifact.Uri = "http://museum.example.org/artifact";
           7: artifact.Notes = "Artifact notes";

The next step is to easily support relationships as well in the declarative model (i.e. tuples of the form <subject, predicate, object, attribute, ...>).

I’ve been working on a personal project for a month now. You’ll hear more about it in the coming months :-) As part of the coding part of the project, I’ve had to work against Google’s authentication, YouTube, and GData APIs. Also, I’ve looked at creating a Facebook application and today I started working with Facebook Connect.

It’s really been Web 2.0astic :-)

Our wonderful interns
9 Aug 2008
, Categories: Personal, Microsoft

Earlier this week I organized a BBQ gathering at my place for the great interns working with us this summer. I’ve been working with interns in two separate projects...

We’ve been very lucky with all the interns and I think they have been enjoying it as well. Unfortunately, the time has passed fast and the first ones have already started to depart.

Panorama

From left to right:

There were others at the BBQ (like Alex Wade, Andrea Westerinen, etc.) who are not in the photo.

It was a wonderful day.

Paul Watson sent me a link to this short clip showing really stunning visualizations. I wonder whether we could reuse the technology for scientific data.