As mentioned before, in the next release of Cape Clear, we are making it easier to deploy web services directly from our Studio tooling to different kinds of Cape Clear server e.g. a local server versus a remote clustered server. This is working nicely, and as I’ve made an initial contribution to the Eclipse WTP project.


For many years I developed real-time data distribution, display and analysis software for the financial markets front office. Traders are a great example of a human BAM. Traders watch real-time data feeds for business activity that interests them. They filter it using both their mental skills and their workstation software. They bring historical context to their analysis, doing complex event processing and running rules in their heads and in their spreadsheets. They make decisions and execute trades that affect the state of the market, altering the business activity they are monitoring. The trader is looking for opportunities with their “business”, as opposed to looking for problems. The goal of BAM is not just to know that everything is running smoothly, its to look for opportunities to improve things. It is not surprising that Business Activity Monitoring and Business Intelligence software has its origin in the financial markets.

Having a real-time view of our business operations is largely pointless if we cannot rapidly effect change to put problems right and take advantage of new opportunities. Building business processes on the agile, SOA-enabling, orchestration and services technology provided by an Enterprise Service Bus is the key to taking advantage of new opportunities and fixing problems before they cost us money. The ESB is a natural way to collect, correlate and feed the raw data required by the BAM layer, it then allows us to rapidly improve our processes in response to changing conditions.

Feeding aggregated business intelligence back into processes in real-time creates interesting possibilities. Suppose we’re orchestrating a supply chain. If we have a number of Courier services in the supply chain, that the Shipping service can request pickups from (i.e. pickup packages at the various Warehouses for delivery to customers), we can monitor the timeliness of the pickups and check for Couriers falling behind, failing to pickup on time and failing to deliver at agreed SLAs. We can feed this business intelligence back into the Shipping service, so that it favours couriers meeting their SLAs.

I ask a lot of questions when I interview candidates for technical, usually development, positions. I have about thirty pages of questions that I cherry pick from, some closed, some open-ended. The stronger the candidate, the more questions I ask them. If someone says they have built web applications, one of the first filter questions I ask is:

Is HTTP a stateful or a stateless protocol?

It is just amazing how many people, supposedly with many years of experience, do not know the answer to this question.

HTTP is a stateless protocol. It has no notion of remembering client state. It cannot distinguish between one request for http://myhost/foo.htm and the next. In order to know that a request comes from the same client as a previous request, client side cookie technology is used if the browser has cookies enabled, or the technique of URL rewriting can be used, where a session identifier is passed back and forth between the server and the browser in every request and response. That is roughly the answer I’m looking for. But before you get too excited, I have lots more questions and they get a lot more difficult than this. Software engineering is just what is says: it is an engineering discipline. And computer science is just that, a science.

Has anyone ever thought about a hosted Eclipse concept, with the workbench being available in a browser? Would this be as simple as an implementation of SWT using AJAX techniques? Ok, its far from simple, but the AJAX front end would be firing events back to the SWT AJAX proxy and into the platform agnostic layer, and the UI changes would be sucked back out … and hey, it would all just work! 🙂

Geoffrey Moore on open source

September 21, 2006

This is a really interesting (and funny) talk by Geoffrey Moore (Chasm) on open source, it dates from last year but is well worth a listen.

Cape Clear Software, a leading provider of Enterprise Service Bus (ESB) solutions to enable Service-Oriented Architecture (SOA), has announced that START-IT Magazine, a leading publication for manufacturing executives, has recognized Cape Clear customer Stratus Technologies, Inc. with a 2006 Technology & Business Award. Stratus was honored for using Cape Clear’s ESB software to achieve a more efficient, less costly, and more flexible B2B application integration architecture. Read more here.

A vote for IStorageEditorInput

September 11, 2006

Now that Eclipse editors are reaching out beyond the confines of the workspace more and more (with pluggable file systems and files that can link to resources at remote locations e.g. HTTP accessible resources), editors that expect to be working with files should be coded to support IStorageEditorInput, and not just IFileEditorInput. All too often when developing editors the assumption is made that the editor is dealing with a local resource, and worse, often casts are made to IFileEditorInput. Remember that an editor is a viewer before it is anything else, a lot of the time the purpose of opening a file in its editor is purely to browse its contents. In fact, probably more than half of the time, when a file is opened in a editor, it is never updated, it is only read. IStorageEditorInput is the super interface of IFileEditorInput, and its API contract states: File-oriented editors should support this as a valid input type, and display its content for viewing (but not allow modification). So if you are not supporting IStorageEditorInput properly, you are potentially failing to support a large number of use cases.