Enterprise Architecture

Sean McGrath dreams up an imaginary conversation with some luminaries from the past to come up with an architecture for enterprise applications:

1. An enterprise architecture should be business document focused.

2. These business documents should be expressed in XML and expressed in purely business terms.

3. These documents should flow around business processes using reliable messaging. Reliable messaging ensures that Murphy’s Law is thwarted and also provides the vital asynchronous substrate.

4. Systems should be designed from day one using an asynchronous model. If synchronous behavior is required, it should be implemented on top of the asynchronous substrate.

Phil Wainewright comments on it.

Transforming XML for Web and Print

Phil Windley blogs a talk by Mike Kruckenberg:

Mike specifically concerned with translating documents for web and print (namely PDF). They created a document standard with a Schema and developed templates for XML authoring application to make creating the documents easy. They created an customized XML authoring environment from an off the shelf tool that was essentially the destination for any conversion process. They also provided an online tool for people who didn’t have access to the authoring tool.

Existing HTML documents were cleaned up with Tidy and then a homegrown tool translated the cleaned-up HTML to XML. Once the XML was valid, the XML document was put into the database. For MS WOrd document, they tried a bunch of things, wvWare, saving as HTML, saving as RTF, and third party stand alone tools. They’re looking forward to WordML. PowerPoint is a big tool for faculty, so it had to be easy to convert to an XML document. For PowerPoint, they have a service which create an XML document from the text and save JPEGs out and wraps everything up in XML.

The transform is done using the libxml2 and libxslt libraries fro Gnome because the have good performance and command line and Perl interfaces. xmllint validates XML against a DTD. xsltproc renders XML as HTML.

Just rendering HTML isn’t the goal however. The goal is to render HTML and PDF for print. Mike and his team used FOP and XSL:FO to create PDF.

Three-Pane View

Diego Doval has an interesting take on the 3-pane view that we are so familiar with in email clients and news readers. There is a new format emerging, one which has the same components arranged horizontally, going from left to right in increasing specialisation.

The “all horizontal” mode is better IMO, since it gives you more space to view information (which is typically “long” rather than “wide”). It also makes it easier to follow the progression of “contained” information: as you move along the x axis to the left, you increase specificity–this consistency can then help in other areas of the UI. Apple for example has used the all-horizontal paradigm for one of the settings of the file browser in the Finder, and it’s much, much better than the alternative. Simple and easy to use.

This would be soemthing to think about for the Digital Dashboard.

Distributed Computing Economics

Jim Gray of Microsoft writes in an essay:

Computing economics are changing. Today there is rough price parity between (1) one database access, (2) ten bytes of network traffic, (3) 100,000 instructions, (4) 10 bytes of disk storage, and (5) a megabyte of disk bandwidth. This has implications for how one structures Internet-scale distributed computing: one puts computing as close to the data as possible in order to avoid expensive network traffic.

Put the computation near the data. The recurrent theme of this analysis is that “On Demand” computing is only economical for very CPU-intensive (100,000 instructions per byte or a CPU-day per gigabyte of network traffic) applications.

How do you combine data from multiple sites? Many applications need to integrate data from multiple sites into a combined answer. The arguments above suggest that one should push as much of the processing to the data sources as possible in order to filter the data early (database query optimizers call this “pushing predicates down the query tree”). There are many techniques for doing this, but fundamentally it dovetails with the notion that each data source is a Web service with a high-level object-oriented interface.

Also note the extremely readable format, with the use of bold statements to highlight the key points.

On a related note, here is an interview with Jim Gray from ACM Queue. The focus is on storage.

Adding New RSS Feeds

Alternate Title: how the Info Aggregator continues to change my web browsing habits for the better.

Now, when I come across a new site that I like, I first search for its RSS feed. If it is blog, chances are that it may already have one. If it doesn’t, I try to create one using BlogStreet’s RSS Generator. Either way, try and get an RSS feed. Then – and this is the nice part – use the Info Aggregator Bookmark link to add it to my subscriptions. (The Bookmark link for adding subscriptions is available under Preferences once you log in to the Info Aggregator.) Once I’ve added the RSS feed, I don’t have to worry about remembering the URL, bookmarking it or going back to check it every few days for new content – it all comes in my IMAP mailbox.

This is actually making me subscribe to a lot of interesting feeds from people whose blogs I may have never gotten around to visiting on a regular basis earlier. Of course, there is the danger that one will get overloaded with subscriptions and information (I currently am subscribed to 90+ feeds and get about 400+ items a day), but that I can live with – the world of bloggers and the flow of ideas is simply too interesting to miss out on!

Continue reading

TECH TALK: Useful Concepts: Introduction, Reflexivity

Entrepreneurs learn on the job. Each day, each experience has something new to teach. But there are times when it is useful to get some external background to help explain the world around. Reading, going to management school, talking to people from different backgrounds, blogging are all ways by which one can learn. What is true for me will not necessarily be true for you. The objective of knowing more is not to pass any exam, but to think about how these ideas apply to the business we are doing. If they can help us be better leaders, managers and entrepreneurs, then we are all the more richer for the experience.

In this weeks Tech Talk, I will talk about five concepts and my personal views on them. Each of these topics is linked with a book. These five topics are reflexivity, development economics, game theory, markets, and the five temptations of a CEO.


The concept of Reflexivity was first explained to me to Atanu Dey recently. The concept originates in George Soros The Crisis of Global Capitalism. The book is not an easy read and talks about many other concepts as well. The byline is Open Society Endangered. The book was published in 1998.

I have excerpted below Soros theory of reflexivity from a talk he gave in 1994:

The theory of reflexivity holds that our thinking is inherently biased. Thinking participants cannot act on the basis of knowledge. Knowledge presupposes facts which occur independently of the statements which refer to them; but being a participant implies that ones decisions influence the outcome. Therefore, the situation participants have to deal with does not consist of facts independently given but facts which will be shaped by the decision of the participants. There is an active relationship between thinking and reality, as well as the passive one which is the only one recognized by natural science and, by way of a false analogy, also by economic theory.

I call the passive relationship the cognitive function and the active relationship the participating function, and the interaction between the two functions I call reflexivity. Reflexivity is, in effect, a two-way feedback mechanism in which reality helps shape the participants thinking and the participants thinking helps shape reality in an unending process in which thinking and reality may come to approach each other but can never become identical. Knowledge implies a correspondence between statements and facts, thoughts and reality, which is not possible in this situation. The key element is the lack of correspondence, the inherent divergence, between the participants views and the actual state of affairs. It is this divergence, which I have called the participants bias, which provides the clue to understanding the course of events. That, in very general terms, is the gist of my theory of reflexivity.

The theory has far-reaching implications. It draws a sharp distinction between natural science and social science, and it introduces an element of indeterminacy into social events which is missing in the events studied by natural science. It interprets social events as a never-ending historical process and not as an equilibrium situation. The process cannot be explained and predicted with the help of universally valid laws, in the manner of natural science, because of the element of indeterminacy introduced by the participants bias.

Why is the theory of relativity of reflexivity important? When we look at a situation, we should not just evaluate it as a static, unchangeable situation. Our actions can create biases alter the dynamics which can help change peoples perceptions about the reality, and therefore the reality itself. This is very much true of rural India, where a set of co-ordinated actions taken together, and led by a reckless entrepreneur can perhaps transform the scenario. But for this, we need to understand a bit of development economics.

Tomorrow: Development Economics