Sunday 2 May 2010

Why don't Microsoft units talk to each other?

I'm a great fan of Microsoft technology. I'm a sucker too for new stuff. Microsoft have had a purple patch of late with the release of VS2010, MVC 2.0, .Net 4.0 and Silverlight 4.0.

I also am a great fan of cloud computing. Scientio's site has been hosted on Microsoft Azure for over a year, and after a lot of aggro we've got the hang of it.

The one real problem has been the fact that the various elements, RIA services, Visual Studio, etc have not kept up with each other during beta, so we had endless problems of A not working with B, and C not working with D. After a lot of struggling you get everything to hang together, and then a new version of one of them comes along, and it all starts again.

So now, all of them are released, Silverlight a week late, and RIA services is reasonably stable, so we want to run the new site we've built on Azure.

Unfortunately Azure won't run .Net 4.0, and Microsoft won't promise when it will, except it'll be within 90 days of the RTM. So we're back where we started again...

Intelligent services and REST

AI is a broad subject. On the one hand there's the world of Algorithms, measures of uncertainty, different models of learning, and on the other there's the problem of accessibitity.
Basically, how do you simplify AI tools so that they have the maximum useability?

We've had a suite of Rule based tools for most of the last decade with a simple-ish interface.
You cab data mine by preparing data in XML, preparing a spec, also in XML, and by firing the data and the spec at the data mining engine you create a rule set, (you've guessed it, in XML) and a bunch of performance figures showing how well the mining run worked.

Similarly you can test a rule set for logical holes (lacunae) using our lacuna project by firing a rule set at it and getting back the report.

And finaly, simples of all, you can use a rule set to make an inference by presenting data in XML to the inference engine, the rule set, and retrieve a new copy of the data with the results inserted in the appropriate points.

Up until now we've used SOAP web services to access these facilities, but it's finally dawned on us that a REST type interface makes more sense. Scientio's website is implemented in Asp.Net MVC, and the new version in MVC V 2, making lots of use of RIA services.

RIA Services implements the Odata spec in the newest version, which makes creating RestFul interfaces really easy.

So with MVC we can create a directory structure that follows REST practices. For instance,

online/XmlMiner/Edit/

will bring up the rule editor on that selected rule set, while:

RuleService/infer?&

will perform an inference on previously loaded data and rule sets.

We've extended this metaphor to all the services we provide in the upcoming revised Scientio site.