I have read a lot of talks recently about APIs. Google APIs, Facebook APIs, OpenSocial APIs, APIs for making coffee and strawberry jam and so on. As a computer scientist I resent the fact that all those efforts are still made on a very primitive level. None of the new or old software industry bulldozers are trying to making it easy for developers. Not true. They are trying, but with the wrong ideas.

For the past years I have been involved in building an inference engine for putting together a set of reusable components for automated reasoning services (commonly known as artificial intelligence). This is part of my PhD thesis that I am hoping to finish next semester. Many inference engines already exist, however the idea of our research group (it´s very much a collective effort that I am part of) was to try a radically model-driven approach. This means, instead of diving from the very beginning into Java or C++ complexity, we took our time to think the architecture of our inference engine as a set of well-defined components that any engineer could look at and within a few minutes understand the services that such component provides.

Yeah, I know. Software engineering bla bla bla. Well, that was exactly what I thought in the beginning. But let me tell you what really happened: after 3 years reading lots of math and logical stuff I finally was ready to project a few components that realize the set of services we were interested in. Although I was dying to implement them right away in Java I took the time to do two things: I figured out the basic functionality I wanted to together with the data structures, then using only UML class/component diagrams I model each basic functionality. And then I used an old software engineering idea, design by contract, to link together the components services (actually methods) through pre- and post-conditions.

I used a new standard from the Object Modeling Group (OMG) called the Object Constraint Language (OCL) to specify the stuff. Mind you, you could use Java as well or any of these new Java flavors to write these constraints. What happened next was that I found out that by using only OCL I could fully express not only the structure of my data but also the behaviour of each component. So as it turned out I did not have a dead model, that would be forgotten as soon as I started my Java implementation. I had a complete system that lacked only the tools to be executed (e.g. a transformation from OCL to Java or to C++).

Then back to my point in this posting: why Google, Microsoft, Yahoo, Salesforce (ok maybe their new platform has some of the things I am talking about here) do not try this leap? I was browsing the other day the OpenSocial API from Google and it really sucks all those hundreds of lines of code. Why is it so hard to present a graphical model of the stuff with nice well-defined interfaces that we just could browse, drag and drop and build the applications much easier? After all, it´s almost a bunch of SQL queries and read/write operations.

It´s a kingdom of coders out there. That´s why. And for some strange, unconscious or conscious reason, those guys are not letting go off their kingdom. Once we have Component-based systems on the web, not only techies will build software. I bet almost everybody that has an engineering background or even is good at logics and math will do. So is this the real motivation of everybody in the software industry to postpone model-driven development or am I just being paranoid?

After the IPod, the IPhone and the IVacuumCleaner, the ICANHEARYOUTHINKING is the next big thing from our most beloved technology company.

ICANHEARYOUTHINKING

Really?

Think again:

1. The guy produced a movie about protecting the environment that inverleaves his personal history with data about global warming. So it´s like: part A: “I´m Al Gore, I always standed for the environment etc” part B:”The earth is warming up, here some scientific facts”. part C: “Hello again, I´m Al gore , my kid almost died when he was 6 etc. See how I am human like you. I suffered like you. Although I have plenty of money and rich friends.” And the loop goes on.

2. Yesterday he won 2 Oscars and of course he was there in L.A. to pick the prize. In the process he was broadcasted again to tens of millions of americans.

3. He swears that he is not running for president. Oh c´mon.

The Economist has also figured this out.

They should probably be writing sitcoms…

Youtube prefers Yahoo

October 29, 2006

At least for their example of how to use RSS feeds..

Youtube and Yahoo

Just a few days after his massive blog attack by anonymous employees, Spiegel reports that Mr. Kleinfeld gave up the 30% raise he had allowed himself. Well, the power is with the people in Siemens after all, at least in this episode.

Corporate blog nightmare

September 27, 2006

German magazine Der Spiegel reports (site in German) that Siemens CEO Klaus Kleinfeld has been the target of nasty comments by Siemens employees in his own blog. His colleagues find obscene the fact that he has promoted a 30% raise for the company´s main executives. Here are some cool comments on “poor” Kleinfeld (translated from Spiegel´s article):

“Hi Mr. Kleinfeld, I’ve been asking myself for long now where people like you want to lead our society. Always more, more, more…”

“when I tell people where I work, I usually hear the same question: “And when are you going to be fired?”

“From your letter in June, 29th:”We must first make money before we spend it.” So I hope the 30% were already made.”

Hmmm…. It looks like the CEO is going to have a hard time this week. The press can be unforgivable and sometimes employees even more.

Worst site ever

September 18, 2006

Congratulations! PC World magazine just pointed MySpace.com the worst site of the whole Universe. See it for yourself.