Featured Post


 These days, I mostly post my tech musings on Linkedin.  https://www.linkedin.com/in/seanmcgrath/

Thursday, December 30, 2004

Jython and the PSF

The PSF has published its list of projects to recieve grant funding:


Brian Zimmer will manage the project Moving Jython Forward.

Congratulations Brian!


Tuesday, December 28, 2004

Software developers - diarists or novelists?

In this article article I argue that there are too many diarists and not enough novelists out there writing software.

Monday, December 27, 2004

Periods in Gmail addresses

I just noticed that periods in GMail addresses seem to be filtered out. I can start an e-mail to myself with a destination address of "s.e.a.n." at gmail.com and it will still get through.

I haven't thought of a use for this feature yet. Suggestions?

Friday, December 24, 2004

A small world

Looking through my sitemeter logs as I'm wont to due from time to time I found this article from Eamonn McManus who is now at Sun. He was in my class in TCD from 1983 to 1987. Lets see, I reckon its about fifteen years since I met Eamonn. A small world.

Thursday, December 23, 2004

What is the most fun you could possible have with a cellphone?

Pick up your Expat XML Parser and XPath implementation for the Nokia Series 60 cellphone here.

Test first. Code later.

It has taken generations for this simple, brilliant idea to take hold in this industry. As a relatively recent convert to TDD I can attest (sorry) to the power this simple idea encapsulates.

I do a lot of work in the Java ecosystem. Two words spring to mind - actually three. Confidence, documentation and Jython.

Confidence : TDD raises your confidence level in your software. Every step of the way your have a full test suite. Every step of the way you have a mechanism for catching the knock-on effects that accompany even the smallest change in source code. TDD has saved my life so many times...

Documentation : "Read the source, Luke" has been joined by a less daunting epiteth : "Read the tests, Luke". Test scripts are a great source of real documentation for how objects/methods/apis/interfaces are to be used and not to be used. When the Javadoc fails you, hit the tests.

Jython : Anybody coding in a statically compiled programming language that is not using a dynamically typed programming language for the tests, has missed a golden opportunity for a productivity leap. In the C world, CPython. In the .NET world, IronPython. In the Java world, Jython.

Jython has quietly carved out a niche for itself in the testing area. Some examples:

  • Write Eclipse JUnit Tests in Jython - this is a recently published article about unit testing with Jython but there are tons more. Google is your friend.

  • PushToTest is an Open Source test automation system that uses Jython

  • Grinder provides a load testing framework for executing
    Jython scripts across many threads, processes and machines; and allows
    the whole shebang to be controlled from a graphical console.

Tuesday, December 21, 2004

Forward compatability

Fast forward to forward compatibility is this weeks ITWorld e-Business in the Enterprise article. It concerns the lopsided relationship between forward and backward compatability in the application software game.

Monday, December 20, 2004

Dynamic languages infrastructure in NetBeans

Coming to a NetBeans distro near you soon : dynamic-language infrastructure.

Splen. Brill. Excele. Aweso. Fanta.

Sunday, December 19, 2004

Jython update

Today I finally got around to putting a news update on jython.org and sending an e-mail to the Jython lists about recent events of interest.

I have added some entries to Jython users. If you have any Jython project you would like to see listed, let me know.

Thursday, December 16, 2004

Digging holes for yourself with IT

Tunnelling through application mountains is a noodlet on the fact that software is in fact a mutant strain of hardware - sort of.

No matter how flexible an application' model of the universe is, business needs will find a need to break it - to need something that cannot be done[1]. Users will respond to such limitations in software systems by creating semantic "tunnels" to get around limitations in the model.

The result is a system in which less of the logic is computerised than perhaps you initially thought would be computerised. Lots of interesting stuff becomes tacit knowledge in the brains of users. The truly flexible "soft" stuff is people - not software.

[1] Excluding Emacs of course :-)

Monday, December 13, 2004

On Hierarchy

This just occured to me for some reason so I'm writing it down:
    Hierarchies. Cannot think within them. Cannot think without them.

Friday, December 10, 2004

Bookshelf updated

Jet lag has its uses. bookshelf updated.

Death of a soap opera

One day, I will write this book. I have removed it from my blog template because every day it reminds me that I haven't worked on it in ages and every day reminds me of how unlikely it will be that I get to it any time soon.

Some day.

Dynamic languages - catch the wave

I had the great privilege earlier this week to meet with some household names in the Java, Python, Jython, Perl, Groovy and XML worlds.

The meeting was instantiated by Tim Bray to talk about dynamic languages on the JVM.

I met Samuele Pedroni for the first time and had the pleasure of watching him step through some of the details of Jython's implementation at the whiteboard. I also now know more about how Groovy is implemented thanks to James Strachan. Dan Sugalski and Larry Wall's expositions of Perl internals and the Parrot VM were fascinating and at times, mind warping.

Obviously, I share Tim Bray's belief that dynamic languages are a hot area. There are literally dozens available for the JVM right now.

Obviously, I am biased in favour of Jython as a general purpose "glue" language for programming on the JVM. If you want to take my advice on board wholesale, get into Jython. If you don't want to go that far, get into *a* dynamic language for the JVM - any dynamic language is better than no dynamic language.

In my opinion, dynamic languages are the key to productivity, flexibility and evolvability of application-level programming on the JVM - especially in the integration space. (Psssssst: every time you use a JAR/CLASS you don't control, you have yourself an integration problem:-)

Do your Java productivity a favor - catch the wave.


Congratulations to the PyPy folks on their funding from the EU.

I met with Samuele Pedroni of Jython fame for the first time face to face in California earler this week. (More on our Californian adventure in a subsequent post). Samuele is off to Sweden to work with the PyPy team in the new year. Best of luck Samuele!

McGrath's Musings

Audio versions of some of my ITWorld articles are now available on McGrath's Musings. We will be adding more columns soon.

Wednesday, December 08, 2004

Blog duellos anyone?

Via John Naughton comes a pointer to http://becker-posner-blog.com/ a site where two heavyweights of thought will duke it out. What a great idea!

We could do with this format here in geekdom. It could make for some very interesting blog reading.

Imagine...you hold a position diametrically opposite to someone elses on some tech issue, you "challenge" them to a blog duel. You sign up on the site that offers blog duelling for free. (Hey, they make their money charging the audience to watch you guys go at each other:-). You agree to be bound by a set of rules and agree that the moderator has the right to orchestrate the debate. You debate the issue in full view of blogspace....

Two participants. No muli-threading or noise such as that which gets in the way on mailing lists or usenet. None of the size restrictions that come with blog commenting systems.

Just a thought. If you think it is a terrible idea, challenge me to a duello :-)

Tuesday, December 07, 2004

The end of digital downloads

The end of digital downloads is this weeks ITWorld eBusiness in the Enterprise article.

Kick off a big download before you read it. The dulcet tones (to an oscilliscopes ear) of gigabytes whizzing through the aether will make for a suitable backdrop.

Monday, December 06, 2004

Sowa on Standards

John Sowa's Law of Standards is an interesting take on the standards landscape.

Thursday, December 02, 2004

Plone is to Zope as XML is to SGML

This story uses the noun "Plone" (as in "Plone") as a verb.


Plone is what you get when you assemble some cool stuff on top of a Zope substrate, parcel it up, get people behind it, etc. Plone is very wonderful stuff because (at leat in part), Zope is very cool stuff. Zope in turn is very wonderful stuff because (at least in part) Python is cool stuff.

The verbification of Plone reminds me of the birth of XML. We got XML by assembling some cool stuff on top of an SGML substrate, parcelled it up, got people behind it, etc. People use XML as a verb in a way they never used SGML as a verb.

Interesting, things, verbs...I mean nouns.

Wednesday, December 01, 2004

Tuesday, November 30, 2004

Postscript programming?

I see the Postscript is the twentieth most popular programming language :-)

Methinks that this list needs to take account of whether or not a programming language is used directly or generated from another program.

Yes, I was that nutcase who strapped a 300 baud dumb terminal to an Apple Laserwriter with a view to drawing wireframe teapots by programming the beast in Postscript directly.

I eventually got my teapots by writing programs (in Pascal as it happens - 17th on the list) that wrote out the Postscript program to a text file.

On the output side of programs that write programs is the natural home of Postscript.

Python 2.4 Final Released

Python 2.4 Final has been released. See here for details.

A twelve year old with a sheet of bubble wrap

Inefficiency revisited
is this weeks ITWorld e-Business in the Enterprise article.

The subject is bubble wrap. Well, sort of. The subject is data normalization. A sort of intellectual bubble wrap.

Actually the subject is resilience of systems and the relationship between normalisation and resilience...

and bubble wrap.

Monday, November 29, 2004

Geek langsyne

bitsavers.org brings you a must-have tutorial Vax VMS 3.0 from 1982!

I have a photocopy of it somewhere. Crickey! That was (gasp) 23 years ago.

They don't make 'em like they used to. [Via Lambda the ultimate.]

Friday, November 26, 2004

Spot the change control item

I was in Brussels most of this week. My room number was 404. How perfect is that! :-)

Anyway, being a geek, it was difficult to gaze upon the beauty and splendour of the Town Hall and its famous architectural anomoly without thinking of it in computing terms.

In commercial IT, it would be known as a "change control item". A flaw that is simple to state yet ... rather expensive to fix.

In commercial IT, we see "buglets" on a par with the Town Hall anomaly on a regular basis. Unfortunately, software is rather abstract and explaining the cost implications of fixes is sometimes very challenging. You cannot simply stand on front of it and say "look!" :-(

Take one sequoia, thinly sliced

Take one sequoia, thinly sliced is an ITWorld article about the ineffable vastness, language defying hugeness and all round very-big-indeed-ness of the Web.

Monday, November 22, 2004

WSDL woes

Rich Salz in WSDL 2.0.

Oh dear.

Sunday, November 21, 2004

Something to read over coffee

Gregor infuses a nice analogical brew for asynchronous messaging - Starbucks.

The real world is full of great examples of asynchronous messaging, pipelining, and transformations. Three key ingredients in Service Oriented Architectures in my book.

Now that I come to think of it, before lunch I tend to use revolving Sushi bars and restaurent order processing as examples of real world SOA ideas.

In the afternoons, when talk turns to the business side of SOAs, I tend to use Joseph Bazalgette's incredible implementation of a sewerage system in london in the second half of the Nineteeth century.

Hmmmm. Are you thinking what I'm thinking?

Saturday, November 20, 2004

A pleasant XForns-shaped surprise

Micah reports from XML 2004 that XForms cometh to the excellent OpenOffice in the Spring.

(Queue the voice of Mr Burns from the Simpsons)


Thursday, November 18, 2004


Congratulations to Robin Cover and Jean Paoli, recipients of this years XML Cup award at the IDEAliance conference.

Robin Cover's tireless coverage of everything of interest in the XML world (and before that, the SGML world) in his "Cover Pages" was and is, a treasure trove of useful stuff.

Tuesday, November 16, 2004

5k max

My colleague Alan Wall has pointed me to this: www.the5k.org having read the article about programming in tight spaces.

Forking Parkinson's Law

Monday, November 15, 2004

Xtech 2005 - one for the diary

Xtech 2005 next Spring in Amsterdam. Of particular interest to me is the Open Data track.

Friday, November 12, 2004

Universal truth

    "The right role for a standards body is to wait till the implementors have deployed things and worked out the hard bits, then write down the consensus on what works and what doesn’t." [Tim Bray]

The rest of what a standards body does is commercial/political agendas, egos and "research tunnelling".

All very useful and important things in their own right but baaaaaad when then become W3C this or ISO that or ECMA the other.

Tuesday, November 09, 2004

All I want for Christmas is hyperlinking to my E-mail client

E-mail - where are all the hyperlinks?
is this weeks ITWorld E-business in the enterprise article.

Asynchronous messages queues - the heart of Web Services

Amazon Simple Queue Service. This is so satisfying. If I was a smoker, I'd step outside for one right now with a copy of this under my arm and a coffee.

Simple Queue Service is the sort of hosted web service that makes sense to me as an application developer. I would use it in its "*on* the web" mode of course by means of the RESTian interfaces. I'd also be willing to bet real money that the RESTian uses of this facility will be streets ahead of the soapy wsdls uses. All we need is to coalesce around a simple HTTP pattern for reliable message exchange and we are off and running. I'll be posting one of these soon as part of my five-part Jython tutorial.

Look out for a slew of interesting stuff on top of Amazon Simple Queue Serice. Also look out for other vendors - lemme see...search engine providers for example:-) - offering similiar pay-as-you go distributed computing plumbing services in the years to come.

If you are not familiar with asynch messaging as a distributed computing paradigm, now would be a good time to get reading. this would be a good place to start.

Sunday, November 07, 2004

An alternative way of measuring programming language popularity and a half-formed thought about half-formed thoughts

I note that BitTorrent is reported to be responsible for 35% of internet traffic. By that way of measuring things, Python has sure grown in popularity over the last couple of years.

There is a lot of "dark Python" in the Universe. Stuff that users cannot see but it is there all the same. The Google spiders, all those Zope/Plone websites, all those happy Microsoft Outlook users with their spambayes plug-ins.

Somebody recently said that dynamic languages provided a way to execute half formed thoughts. Lets hear it for all the half-formed thoughts out there! I wonder what pecentatge of software that meets its engineering goals of being on time, on budget, team friendly, grokkable, as flexible as it is powerful etc. etc. are based on half formed thoughts?

Friday, November 05, 2004

Naming things

I'm reading my first Emile Cioran book "A Short History of Decay" and it is positively brimming with quotable quotes. This one is missing from this list of Cioranisms but it grabbed the markup geek in me and shook me gently by the throat:
    "What surrounds us we endure better for giving it a name -- and moving on."

Spoken like a true markup geek.

Tuesday, November 02, 2004

M/L = 1

I conjecture that

M = cL


    M = The degree of mission criticality of an enterprise system Varying from 0 to 1.

    L = The degree to which that application is considered "legacy" by the IT industry. Varying from 0 to 1.

    and c is some naff constant without which, no formula can be considered complete.

Anyway, there are a number of things that you can do to mitigate the risks created as M and L creep stealthily in lock-step from 0 to 1. Virtual Operating Systems is one of them.

Saturday, October 30, 2004

Code, data, dynamic languages, gmail and bootstrapping a GUI

So, the hunt is on amonsgt the perspicacious blogopuli to classify what kind of a thing Gmail is from a GUI perspective.

I haven't looked closely enough to comment but, since that never stopped me before, I'll comment anyway :-)

GMail looks to me like a classic bootstrap. I suspect that on the server side there is a model of the client side expressed in domain terms - concepts like inbox, e-mail composer, contacts list and so on.

When a client connects, it effectively downloads an implementation of that model. Once in situ, further conversations between client and server can go up a notch - expressed in terms of domain specific concepts "render the inbox will you? There's a good chap" rather than "At X,Y render a blue box...".

Web clients carry around a basic, low level programming language called Javascript. The real beauty of Javascript is that it is dynamic - you can blurr the distinction between code and data. You can hoist the level of abstraction you work with in your app by layering domain specific concepts on top of it in the form of functions and data structures. You can sling across data structures already teed up for use on the other end with the aid of the magic of "eval". You can implement complex behaviour by sending across a program to be run rather than trying to explain what you want done declaratively to the other side.

Now, in such a world - would you send XML data to and fro? Developers with a static typing programming language background might be inclined to say yes but I suspect javascriptophiles, lispers, pythoneers and rubyites are more likely to say no. Reason being, it is so much more natural to exchange lumps of code - mere text strings remember - that can be eval'ed to re-create the data structure you have in the XML.

In my opinion, there is more power in that one idea than in the whole minatory miasma of WS-GetAGrip.

Thursday, October 28, 2004

Read this

Read this.
Best wishes Mr Helland.

Very useful Jython tutorial from Barry Feigenbaum (and Jython status update)

See http://www.jython.org/ for links to a substantial Jython tutorial from IBM's Barry Feigenbaum.

Also of note is that work on implementing new-style classes in Jython - key to the 2.2 release - is ongoing and Samuele Pedroni is aiming for a 15 November check-in of the new branch into sourceforge. Once we get that in, progress in Jython-land can proceed in multiple parallel-roads at once e.g. core language work, library work, build system work etc. etc.

Wednesday, October 27, 2004

Thus spaketh Ganesha + Minerva + Thoth!

    "Namespaces are close to a disaster [but not quite, that dubious honor goes to W3C XML Schema]


Yes. Oh yes. Oh scrummy, knock-me-down-with-a-feather yes :-)

Tuesday, October 26, 2004

Hopeless seeker of generalizations goes off the deep end

    "Being a hopeless seeker of generalizations, I cannot help but wonder where this phenomenon will take us next? It appears as if a meme has taken shape around the use of the word 'planet' so it might be no harm to extrapolate the analogy for guidance as to where we may be headed."

No. I'm not going to give you a hint. The rest is here.

Monday, October 25, 2004

Pet geek peeve #1

I *hate* it when a book/FAQ/tutorial says:
    "open the file foo.baz with your favorite text editor."
    "decompress the sample files with your favorite compression tool."

Favorite? What has favorite got to do with it? It is my business if I choose to use the programs I most hate on the planet to edit the files or de-compress the archive.

Ooops! I feel a literal-interpretation spasm coming on.

    Cannot... find... favorite... text editor... cannot... complete... tutorial...panic! panic! \n@@+[*Houston. We have a problem.@+_\n

    Attribute nodes and children first into the life rafts. Abort, abort! Wrrrrr. Click. Wrrrrr. Click.

Saturday, October 23, 2004

USB_BUG_CODE crash of Windows XP SP 1

A short message in a blogbottle for future googlers. Some time ago, I added a user account to my Windows XP Service Pack 1 Dell 5100 laptop. When the machine boots, it asks me to log in. Fine. All works well.

Except when I happen to be using a dialup connection via USB. Then, randomly, the system crashes hard. Hard enough to require taking the battery out of the back style 'hard'.

Remove the user account - and the problem with dialup over USB goes away.

One of life's little mysteries.

Someday, someone out there may find this factoid interesting.

Personally, I'm happy to have my machine back stable enough to post this to my blog without the machine collapsing under me.

Thursday, October 21, 2004

Ruby on metadata

Ruby's postulate

    "The accuracy of metadata is inversely proportional to the square of the distance between the data and the metadata."


Great! I'll take this opportunity to say something about the problem of actually creating good metadata:

McGrath's postulate:

    "The probability of finding useful metadata is directly proportional to the volume of content creation policies and procedures. It is not a technology problem."

McGrath's corollary:

    "IT people don't do metadata - unless its for source code. Beyond source code, you need to put metadata creation in the hands of content specialists. Otherwises, it simply won't get created. What you will get instead will be more and more abstract models for how to manipulate the metadata if only you had it.

    The latter is a technology problem and technology is fun. RDF anyone? Topic Maps? Yummy, meta models. How about a 'descriptive theory of proper names' conversation over coffee? Have you mainlined any Kripke lately? Or implemented any HesperusIsPhosphorus identity operators in your favourite language?

    Oh, you want to actually create metadata. Sorry, not my field guv."

Tuesday, October 19, 2004

Five steps forward, four steps back

No, not a misquoted Bruce Springsteen lyric. Instead a meditation on monotonic functions of a single variable called 'innovation'. Sort of. Maybe. I dunno. You tell me. Here it is : Five steps forward, four steps back.

Sunday, October 17, 2004

Python 2.4 Beta Released

Python 2.4 Beta 1 has been released.

@it @will @be @interesting @to @watch @community @reaction @to
def decorators():
    # I haven't made my mind up yet so I'll...

Thursday, October 14, 2004

Wednesday, October 13, 2004

Python meetup in Dublin is tonite

Python meetup in Dublin this evening. I will be there. Will you?

Google via SMS

This looks very cool. Google search via SMS. US only shortcode at the moment. I cannot think of a previous example of a US SMS service being way ahead of a European SMS service. This is certainly one. We wants it, precious. We wants it.

Tuesday, October 12, 2004

Verbs, verbs, verbs - Patrick Logan nails it

Paraphrasing Patrick here : Verbs for coordination are different than verbs for application level action.

Amen to that.

Verbs for coordination constitute a transfer protocol - a fixed set of verbs for bitshovelling data between communicating processes. Verbs for application level action are application specific verbs - ReciteOdeToASmallLumpOfGreenPuttyIFoundInMyArmpitOneMidsummersMorning is a good example.

Do the latter belong in the fundamental "interface" your service exposes to the world? I say no (others say yes). I say you need to soft-code these to produce evolvable systems. Message "type" is soft. It is dynamic. It is a duck.

The former are fundamentals of your transfer protocol. There are only so many ways to get stuff done between cooperating processes just as with cooperating people.

Herding cattle and trapping mice

Herding cattle and trapping mice.

Yes, you guessed it. An article about Graphical User Interface development paradigms.

Sunday, October 10, 2004

Jython and Web App Development Tutorial - part the first

I have published a tutorial treatment of Jython and Java servlets. It is part of a larger tutorial I'm working on to illustrate how much you can do with JVM + dynamic languages + XML + servlets + asynchronous messaging, which, to my way of thinking, are most of what is needed for flexible, scalable Web Services at least for the next century or so.


Verbs, verbs, verbs

Mark Nottingham speaks sagely on the subject of verbs.

I'm very dubious about Don's assertion, mentioned by Mark, that once you get (no pun intended) uniform interfaces based on verbs, you see the benefit of creating domain-specific, verb-based interfaces.

I for one, haven't ended up there. I believe it essentially leave you back more or less where you started. You end up with domain specific interfaces and hard-coding N-squared awfulness to interlink domains. I don't see how it is any better than, say, having a abstract base class for a domain that specifies pure virtual methods for each of the verbs and then a bevvy of concrete classes supplying implementations of those verbs. The sort of thing OO-based distributed app designers have been doing for a long time now.

I've been reading some stuff lately that leads me to think that the "proof" (if that is not too strong a word:-) of the pan-domain uniform interface argument will eventually come, not from comp. sci. but from linguistics and the social sciences.

Here is a quick Gedanken based on some stuff I read by Stephen Pinker lately:
Are the phrases "Sean loaded the wagon with hay" and "Sean loaded hay onto the wagon" the same or different?

On the face of it "wagon" sure looks like a resource/object and "load" sure looks like a verb/method.

So, what would this mean?


Now replace "wagon" with "wall", "load" with "splash" and "hay" with "water".

    wall.splash ("water")

In the case of the wagon and the hay, the order of the object and the verb affects the semantics of the statement ("Sean loaded the wagon with hay" sure sounds like afterwards, the wagon was full up whereas "Sean loaded hay onto the wagon" does not imply that the wagon was full afterwards.).

In the case of the wall and the splashing water, the order of object and verb does not affect the semantics.

Given a choice, I would "post" hay to the wagon and "post" water to the wall because all semantics of exactly what that means are attached to the resources - not implied by the precise choice of words in the verbs.

Thursday, October 07, 2004

OpenOffice 1.1.3 released

OpenOffice 1.1.3 has been released. It is a bugfix release. Details here.

Wednesday, October 06, 2004

New versions of the baseline RIGs (Reach Interoperability Guidelines)

A new bugfix release of the baseline RIGs is now available.

There is still a whole bunch of work to be done on RIG 4 so there will be another release of that RIG soon.

A public "thank you" to those of you who sent in obs. Your help is greatly appreciated!

Tuesday, October 05, 2004

XML Pipelining

I have uploaded the slides from my XML pipelining presentation at XML Open 2004. (700k Powerpoint.)

Slides from closing keynote of XML Open 2004

I have uploaded a PDF (950k) of my closing keynote from XML Open 2004. The slides are heavy on pictures and light on text. They probably will not make a huge amount of sense on their own, but here they are anyway.

WSGI server for Jython

Alan Kennedy has announced modjy a WSGI server for Jython 2.1.

The power of Jython in a servlet container has to be seen to be believed. It has a way of leaving you in a giggling wreck thinking about how you *used* to do it before you cottened on to Jython.

Monday, October 04, 2004

Gmail and Atom

So, I'm in my gmail account minding my own business and I spot an Atom icon. Being a click-me, click-me kinda guy, I click and get

<feed version="0.3">
<title>Gmail - Inbox for sean.mcgrath@gmail.com</title>
<tagline>New messages in your Gmail Inbox</tagline>
<link rel="alternate" href="http://gmail.google.com/gmail" type="text/html"/>

Okay. So I cannot get Bloglines to like it and the help on gmail draws a blank and where/how will I encode the authentication info anway plus its https and...and...

its all very interesting.

I sense a mind bender creeping over the horizon.

Like last night when I listened to someone say - completely seriously -

    "Computational properties of nervous tissue."

That sort of mind bender.

Gmail + Atom/RSS. The death knells of POP3/IMap4? The Web claims another protocol victim?

Remember NNTP?

Saturday, October 02, 2004

The Jazz approach to E-Business integration

Some Fats Waller sounds on your MP3 player would be a suitable background to this article : The Jazz approach to E-Business integration.

The wonders of trang

I have been using trang a lot for quite a long time. So, it came as a great shock to me to realise that I had somehow missed some very powerful capabilities it posesses.
There I was, flicking my way through XML Hacks when the book fairly shouted out at me that trang can generate schemas from instance documents. I never knew that. I have no idea how come I never managed to internalise that (now blindingly obvious) fact.

You create an XML instance:

    <bar baz="bork"/>
    Hello World

You run:

    java -jar d:\data\utils\trang.jar -I xml -O rnc foo.xml foo.rnc

You get:

    default namespace = ""

    start =
    element foo {
    | element bar {
    attribute baz { xsd:NCName }

Wonderful! This riffs rather nicely with an upcoming ITWorld article on the subject of ex post facto formalisation of schemas in XML app dev.

Tuesday, September 28, 2004

Of state machines and imperative logic

The 'why' and the 'how' of business processes explores the relationship between state machines and control logic and in particular, what we can usefully visualize and what we cannot.

Monday, September 27, 2004

Getting dirty with SOAP

At XML Open 2004, Uche pointed at http://www.eekim.com/distcomp/dialogmaps/soapproblems.html in his presentation. Fascinating and terrifying at the same time.

Thursday, September 23, 2004

XML Open 2004

This is costing me 10 pence per minute in Stanstead Airport so read this quickly :-)

I had a good time at XML Open 2004 which ended today. Met some new faces and bumped into some old ones (the faces were not necessarily old...you know what I mean).

My favourite talk was Peter Rogers talking about 1060 NetKernel. A very interesting system - Zope'ish in places with nice XML processing pipelining features and a powerful caching architecture which looks like a very good fit with just-in-time XML transformation pipelines.

There, I said that word again - pipelines. Long before I got up to do my pipelines talk, the word had been used in a bunch of presentations (Cocoon, XForms) and a bunch of coffee-conversations (DSDL, XPipe).

Unless this conference took place on the summit of some off-the-wall statistical outlier, I believe pipelining cometh.

It appears to have entered the collective consciousness of the web publishing geeks, hard-core XML docheads, XML OS creators and uber-XML-validation fans, all at around the same time.

Namely now.


I believe the presentations and some audio/video of some of the talks will be made available.

I'll point to the stuff when it appears.

Generating nice documentation from Relax NG schemas

Talking to Kal Ahmed at XML Open 2004 today I found out about his rng-tools for generating documentation from Relax NG schemas via XSLT.


Wednesday, September 22, 2004

Envelopes, postcards and e-mail privacy

This weeks ITWorld article addresses some aspects of e-mail privacy : Envelopes, postcards and e-mail privacy.

Sunday, September 19, 2004

A complete guide to web services in one, short paragraph

I cannot sum it all up better than Tim Bray has:
    "No matter how hard I try, I still think the WS-* stack is bloated, opaque, and insanely complex. I think it’s going to be hard to understand, hard to implement, hard to interoperate, and hard to secure."

Yup. That pretty much covers it. The whole WS standards thing has more moving parts than a 747. Much of it recently invented, untested and unproven in the real world.

Given that there are no exceptions to Gall's Law:
    A complex system that works is invariably found to have evolved from a simple system that worked.

I believe WS-YouMustBeJoking is doomed to collapse under its own weight. Good riddance to it.

Why has this situation come about? Because smart people had neural spasms? No. Because smart people realise that this stuff is *real* important and commercial agendas are at work all over the map.

The most important document to read if you want to understand the WS-IfThisIsProgressImAMonkeysUncle cacophony is How to wage and win a standards war by Carl Shapiro and Hal Varian.

Saturday, September 18, 2004

Of XML tree models and document loading times in Python and Java

Many moons ago, before SAX and DOM, I wrote a dual event/tree-based
library for SGML processing in Python called Pyxie. It has gone through a bunch of iterations. An XML version (http://pyxie.sourceforge.net). About 3 main mutations that have popped up in various Propylon projects. A Pyxie2 that works both on Jython and Python that came about as part of XPipe...

Whatever Pyxie variant I am using, I am in the habit of serializing Pyxie trees to disk along with XML files. I treat these serialized Pyxie trees as "pre-compiled" artefacts that I use solely as a performance trick that I can slot
into my apps without contorting the design.

At load time, I check for the existence of a Pyxie serialization. If
there is one and if the datestamps indicate that it is younger than
the corresponding XML file, then I load it. Otherwise, I load the XML
file directly. At save time, I always save out the Pyxie tree as well
as the native XML.

It works a treat. Dramatically improving the performance of IO bound applications without sacrificing any of the beefy goodness of the XML underneath. I can even modify XML files in running apps, safe in the knowledge that at load time, the XML version will be parsed and the stale "compiled" version thrown away.

Recently, I have had cause to look into similar trickery in Java. I
read the following about Xerces
    "In addition, some rough measurements have shown that XML
    serialization performs better than Java object serialization, and that
    XML instance documents require less storage space than
    object-serialized DOMs."


Intrigued I wrote some test applications to save/load serialized
Xerces DOMs. Unfortunately, my investigations have just run into a
road block. It appears that the Xerces serialization recurses on a
node by node basis.

Translated into English, it blows the stack after 1000 nodes or so.
So, I'm a bit stuck. In order to get decent timings to compare XML
load time from serialized DOM load time, I need big docs. If my doc
has any more than 1000 nodes (roughly speaking) Xerces cannot persist

Perhaps I'm missing something?

Getting organised for XML Open 2004

The XML Open Conference 2004 takes place next week in Cambridge, England. I'm doing a presentation on XML pipelining and also the closing keynote. I'm looking forward to it. I'm working on my keynote presentation this weekend.

My last keynote in Cambridge used a lot of visuals. Many pictures, few words, few bullet points. I'm adopting a similar style this time around.

Boy does it take time to create a highly visual Powerpoint! And hey, lets hear it for http://images.google.com without which... etc.

Thursday, September 16, 2004

Hacking XML

Recently I contributed a couple of XML hacks to an O'Reilly book of the same name. One of these hacks - using SGML to help auto-tag XML - is covered in a new article by Mike Fitztgerald : http://www.xml.com/pub/a/2004/09/15/XMLHacks.html.

Wednesday, September 15, 2004

RFID and the re-birth of M-Commerce

Join RFID technology with the concept of M-Commerce and something interesting happens.

Firefox and Thunderbird - get them. No questions. Just do it.

The Firefox/Thunderbird Browser/E-mail client combination is wonderful, keenly priced [:-)] and getting better with every release.
Just get them. Okay?

Monday, September 13, 2004

Python/XML talent required

Propylon are looking for Python/XML programmers. Opportunities in both Dublin and Sligo offices. Contact me if interested.

Friday, September 10, 2004

Pushing and pulling in XML message exchange

Whenever two systems need to "talk", the nature of the speech acts to be used raises its head.

Do I talk while you listen?
Do I ask you a question and you answer me?
Do I state a fact and broadcast it to anybody who happens to be listening?
Do I sit back and say "go on, ask me a question"?

Some of these choices can be safely relegated to implementation detail. i.e. technically speaking, numerous options can be made to work.

However, some are directly impacted by the boundaries - both physical and organisational - between the communicating parties.

In the Public Services Broker - an SOA based integration infrastructure under construction in Ireland, many of the services connected to the PSB will be hosted by agencies separated from the PSB both physically and organisationally.

As a consequence, it is necessary to analyse the various possible meessage exchange choreographies and take these "business" issues into account. The document Push and Pull Message Delivery in the PSB Architecture is a position paper on the topic.

Although the document is specific to the PSB, the questions discused have a wider applicability in any SOA based on an asynchronous messaging substrate.

Comments welcome.

Tuesday, September 07, 2004

I guess. Its a problem.

    All guesses have bigger guesses, on their backs to bite them.
    And smaller guesses within those guesses, and so on, ad infinitum.

With apologies to Augustus de Morgan and all the world's fleas.

Guesswork features in a lot of software. We like it. We want it. It makes software smart. Or does it? Deleterious guesswork in application integration is an ITWorld article that ponders the pros and cons of the guessing game we call data processing.

Saturday, September 04, 2004

What is a 'brittle' interface?

Brittle interfaces are bad right? But do you and I mean the same thing by the word 'brittle'?. Read what is a brittle interface? to find out.

Monday, August 30, 2004

A mountable filesystem from your GMail account

Create a 1 GIG mountable filesystem from your GMail account. Sometimes you just gotta smile.

Sunday, August 29, 2004


Gregor talks a whole bunch of sense about WS-Yikes. The last para resonates strongly with my own approach:

    """Therefore, I propose to many of my clients to use the WS-* standards as a checklist for their designs. I generally do not recommend they use WS-Addressing or WS-ReliableMessaging (or at least not right out of the gate). I do, however, challenge them by asking, "What is your strategy to track messages in case of error?" or "How do you intend to support asynchronous messaging?" The answer has sometimes little to do with Web Services. For example, the answer to reliable asynchronous messaging might be to use JMS or MQ or another middleware that ensures guaranteed delivery of asynchronous messages. And that's OK. ..."""

It is truly amazing how much you can do just with URIs (applied RESTfully) and an underlying off-the-shelf, boring-as-the-day-is-long reliable asynchronous messaging substrate.

If you have better things to be doing than tracking WS-Palimpsest and struggling to debug WS-InterferencePatterns, I suggest you get an asynch messaging substrate in place, off the shelf *now* and work forward from there.

Saturday, August 28, 2004

Choice paralysis and Python web frameworks

There is a phenomenon in psychology, I cannot remember its name, to do with too many choices creating a paralysis of choice. e.g. If you have 3 T.V. stations to choose from , you flick through 'em, pick one and watch it. If you have 300 T.V. stations to choose from, you are swamped in choices and end up flicking all day, not watching any one thing.

There is a metaphor in philosophy, I forget its name (I'm bad with names, can you tell?). Somebody had a donkey - a very logical donkey. The donkey is tethered within equidistant reach of two yummy bales of hay. The donkey dies of starvation because there is no logical reason to pick one bale over the other.

Thusly introduced, I recommend PyWebOff.

Friday, August 27, 2004

More on queues versus resources

Mark Baker writes:

    Whenever I want to do the queue thing, I use two resources; the
    "business resource", and "the inbound message queue for that business
    resource" (though of course, as a separate resource, it need not be
    used only for the business resource). I then subscribe the business
    resource to the queue, such that messages POSTed to the queue also are
    forwarded to the business resource. FWIW, I've been using mod_pubsub
    recently to manage the queue resource (as a topic maintained by its
    router) in some work I'm doing on the side.

But doesn't this create tight temporal coupling between the POSTs and the business resource?

It strikes me that this scheme essentially achieves a "Got your message, I'm dealing with it right now. Please stay here in reception until I get your answer for you."?

I really value temporal decoupling. No implied correspondence between asking to modify a business resource and the business resource itself. What I'm after is:

"Got your message. Thanks. I can assure you that it will be taken care of by the Business Resource in due course. You can safely go about your business now, here is a tracking URI. If you need to know what the state of things are, just call GET."

Wednesday, August 25, 2004

Resources and services

Mark Baker says:

    "Show me a message(*) and I'll show you a representation of the state of some resource."

I agree with that but would add that in my conceptualisation of SOA, a "resource" is some business meaningful concept like a customer or a widget.

A "service" is what you get when you bind such a resource to an asynchronous communications channel that you then expose to HTTP.

Simply put, business resources should be "one step back" from HTTP IMHO. When you send non-safe messages to a resource (e.g. POST/PUT), you send them to its inward bound, asynch message queue. You do not directly interact with the business resource.

What you get back from a resource with an idempotent GET, is a "stable data"[1] representation of the resource at time T. It may or may not be the same as the current resource and it certainly does not take account of any pending non-idempotent updates.

I find this resource/service distinction useful and find the temporal decoupling absolutely invaluable. It is, as far as I am concerned a cornerstone of any useful SOA.

[1]I recommend Microsoft's Pat Helland on the subject of "stable data" e.g. http://prade.microsoftemea.com/content/ARCSYM1_Helland.ppt (especially slides 9 and 11).

Tuesday, August 24, 2004

Give me till Friday. I will have cracked it by Friday. I promise.

Breakthrough syndrome strikes again.

Python virgins welcome

I have had e-mail from two people asking if the Python meetup in Dublin next month is for for Python users only.

No, anybody interesting in discovering the one true way...

...Ahem. Sorry about that.

Anybody interesting in Python is welcome to come along.

Sunday, August 22, 2004

Browsing the bookshelves of the Web

A while ago I wrote an article for ITWorld entitled Chance encounters of the electronic kind. Serendipity, luck, chance, the road less travelled, gardens of forking paths, all play bigger roles in information discovery than we tend to like to admit.

I'm convinced that one of the reasons bookshops are still going strong is that they have an unparalleled ability to allow you to stumble upon stuff by accident. It is part of what makes libraries such wonderful places too of course.

The Flamenco search engine tries to bring some of that to the electronic world. Much needed IMHO.

Friday, August 20, 2004

Implementing REST Web Services

Hao He has a nice article on xml.com : Implementing REST Web Services: Best Practice and Guidance. I especially like the pipe-and-filter design which is at the heart of how we do things in Propylon. Data flows and data transformations are just full of natural goodness.

I was not aware that the pipeline technique has a heritage back with Richard Feynman and his work on that atom bomb. A fascinating particle of information! Anybody out there got any pointers? I tend to point to Henry Ford, to Adam Smiths 'Inquiry into the wealth of nations' and Herbert Simon's 'The architecture of complexity'.


James Strachan has announced ActiveMQ 1.0.


Thursday, August 19, 2004

Python meetup. Dublin Sept 9th

I am organising a Python meetup in Dublin for, hopefully, early evening Thursday September 9th. See python.meetup.com.

I don't know about the meetup.com side of this. Lets see how it works out. If you are interested in meeting up, please contact me by e-mail or leave a comment on this blog.

Tuesday, August 17, 2004

Saturday, August 14, 2004

Python Web Frameworks

Mark Baker asks about the best Python Web App framework.

For volume of out-of-the-box functionality its difficult to beat Plone/Zope.

If you need a thinner layer with lots and lots of headroom, its difficult to beat Jython + Servlets + Empy.

Friday, August 13, 2004

More interesting Python obs from Paul Graham

The Python paradox.

I have been using Python for XML processing since they days when XML was called SGML. I provided Python code samples in a book I wrote 8 (!) years ago:
SGML for software developers.

The reason I moved to Python for my work was that I could do more, do it faster, modify it more easily and maintain it afterwards, with Python than with any other language.

Looking back on it, I was lucky to have very little time or money on hand to develop what I needed to develop at the time.

I knew from bitter experience that C++ would take too long to write/debug. I knew from bitter experience that Perl would prove impossible to maintain. Out of sheer necessity I went looking for a solution, found Python, and the rest is history.

Necessity is the reason I chose Python.

Happy Left-Handers Day

Today is Left Handers Day.

As a left-hander, I have developed a habit of counting lefties in technical meetings. I have often seen percentages of up to 50/50 in rooms of 6-10 people.

What is it about left-handedness and the tech geek trades?

Thursday, August 12, 2004

Reference By Description - Malinke Monikers

I have been reading about Reference by Description over in Semantic Web land and am reminded of what I call "Malinke Monikers".

I first wrote about them here - A study in XML culture and evolution. Basically the difference between a name and a query that resolves to a name is a fascinating and subtle one.

It evokes images of Russell, Frege and more recently Kripke for those of a philosophical disposition.

Back in the real world - the humble URI (bless its pure little heart) does not force an HTTP server implementation to be name based or query based. The distinction between the two can blurr into nothingness in the bowels of Apache or an AppServer in a very powerful way.

Is there really a difference between:

1. a name which resolves to a representation of a resource, and
2. a query that resolves to a representation of a resource


Peter Deutsch brings Python to Smalltalk VM

Anybody who has ever suffered through my pitch about Service Oriented Architectures knows that I regularly reference Peter Deutsch's Eight Fallacies of Distributed Computing.

The great man has turned his attention to getting Python to run very quickly indeed on top of Smalltalk.

Here is a good place to start - note the url - You don't tug on supermans cape

Wednesday, August 11, 2004

Digital tech. and the future/non-future of the printed book

This weeks ITWorld article : Will a paperback ever lose its paper? is about the future of the intellectual equivalent of the cockroach - the humble, sturdy printed book.

Not unrelated to this topic is an article sent to me by a colleague, quote:

    "The Internet Archive has created mobile bookmobiles in conjunction with Hewlett-Packard and others. The bookmobiles contain a printer hooked up to a satellite feed, which can print books for kids. Two are in operation in India, while another in rural Uganda prints about 1,500 books a week. The entire bookmobile, including the cost of the used van, is $15,000, and 100-page books cost about a $1 to print and bind in the van."

I want a bookmobile! But I want it to fit on or under my desk :-)

Tuesday, August 10, 2004

Reinout van Rees achieves WS-Zen

    "You don't want to "call and API", you want to send over a document."


Yes! Exactly. Precisely. No more, no less.

A simple, fantastically powerful idea.

The speech-act-theory-esque fixed verbs of HTTP tell you how to interact with resources of all forms. They *are* the API to the Web. The only one you need.

Why build another one on top? Because you precieve the need for the flexibility to define your own entry pointz?


Thank you for playing, but if that is how you are thinking, you have missed the point of document-centric integration.


    "You don't want to "call and API", you want to send over a document."

Puzzled, intrigued, horrified? Have a read of Web Services and high school grammar classes.

Still horrified? Leave a comment.

Monday, August 09, 2004

Resistance is increasingly futile

Mark Nottingham on the rise and rise of Python.

I feel a warm glow inside. The low rumble you hear is me, purring like a cat:-)

Sunday, August 08, 2004

APIs considered harmful

Thinking about my recent meltdown about complexity in WS-land and reading Adam Bosworth's latest blog entry I am reminded that I believe APIs are basically anathema in document-centric computing.

This API-centricity, more than anything else, is the logjam that needs to be broken before we can gush forth into the RESTian bits-on-the-wire world which is the future of integration IMHO.

From way back in 2002, in what was then my XML in Practice column on ITWorld : APIs Considered harmful.

Thursday, August 05, 2004

WS-MD? No thanks

WS-MD, another Web Services spec.

Is it just me but does anybody else out there think these guys should take a few deep breaths and review where they have got to, how they got there and why?

The reason I ask is that if this is the future of web services it looks awfully complicated and complicated specs in this industry often turn into either (a) hypernovas of non-interoperable (read "proprietary" implementations) or (b) withered leaves on a vine.

Back up the truck there Tonto! Get back to basics. You have URIs, you have XML messages. You need reliable, asynchronous message exchange. Its not complicated. Its a simple HTTP exchange pattern on top of a MOM. Synchronous? That is just fast asynchronous. Remember LU 6.2. Remember MQSeries?

Speed? Nacht! You can compile away asynchronous messaging into direct point to point API calls at runtime. Its not complicated.

You started at the wrong end of the pipe. SOAP always was and always will be and API-centric worldview.

That is not the future.

That is the past.

Re-implemented badly.

Sometimes I wonder. I really do.

Tuesday, August 03, 2004

Len Bullard Blog

    "English is the language of international documentation. Master the art of the run on sentence that separates the subject with great green windy sunlit dry hot muggy purple modifiers from the verb and split infinitives through conjunctions that require GPS coordinates to find the period at the not quite end of the densely populated by obscure and not often used terminology that implements the verb."

Yes folks. Len has a blog. Subscribed.

Nice, simple, harmless port 80. Yeah, right.

This weeks ITWorld e-Business in the Enterprise article: Web services, firewalls and steganography.

Monday, August 02, 2004

Handling big XML files

Uche Ogbuji has published a useful article of techniques for handling large XML docs.

The sadly neglected (by me) pyxie library provides "sparse trees". Simply put, you process and XML instance event-by-event until you come across the start of an element you would like to treat as a tree. Then you fire up the tree-builder purely for the sub-tree.

The also sadly neglected (by me) xpipe open source XML pipelining architecture has the concept of scatter/gather processing which is very useful for handling large XML docs.

Notes on a vacation from cyberspace

This weeks e-Business in the Enterprise Column: Notes on an annual vacation from cyberspace and the pain of re-entry.

Friday, July 30, 2004

Open Standards Declaration

Do you believe in open standards? If so sign here.

Thursday, July 29, 2004

Wow. Jim Hugunin joins Microsoft to work on Python for .NET

Via Jon Udell comes *big* news for Python fans.

Jim Hugunin, the creator of Jython, starts work with Microsoft Monday chartered to work towards a production-ready IronPython, and more broadly to improve the state-of-the-art of dynamic languages on the CLR.


Wednesday, July 28, 2004

Dark Matter (Dynamic Languages)

Steve Vinoski has published a useful article on dynamic languages in middleware : Dark Matter Revisited.

My position on this is simple. Anyone coding middlware in a statically compiled language, working in a commercial environment where time is money, has rocks in their head.

Monday, July 26, 2004

XMLOpen 2004, Cambridge, UK, September

I will be giving the closing keynote and also giving a presentation about the joys of XML pipelining at XML Open 2004.

I was in Cambridge a while back at the Optimal XML conference where I did the opening keynote. XML Open 2004 will be more of a challenge as I will need to pull together themes of the conference. Necessarily, it will be a more "on-the-fly" gig but all the more interesting for that.

I'm currently noodling for an over-arching theme. My current favorite is:
a)the relationship between syntactic simplicity and expressive power, and
b)the difference between software as a a hider of complexity and software as expressor of ideas.

There are sessions on Web Services, DSDL, Groovy, Python, Topic Maps, RDF, XPath 2.0 and W3C XML Schema which should provide ample raw material.

Saturday, July 24, 2004

square roots ahead - the relationships between paper sizes

Markus Kuhn has a fascinating web page about international standard paper sizes and provides the magic numbers you need if your photocopier is ISO challenged. e.g. A3 -> A4 = 71%.

It is also riddled with many "not many people know that" type factoids. Did you know for example, that in Germany many brands of toilet paper are ISO A6 format.

Now *that* is attention to detail.

Friday, July 23, 2004

xerces command line utility

It has taken me an hour to figure this out, so I might save you some time.

If you want to use xerces-j to validate an XML instance against an XSD schema that is specified on the command line (as opposed to using schemaLocation attribute), do this:

java dom.ASBuilder -a foo.xsd -i foo.xml

The FAQ for Using XML Schemas on the apache website says (my italics):

"Each document that uses XML Schema grammars *must* specify the location of the grammars it uses by using an xsi:schemaLocation attribute if they use namespaces, and an xsi:noNamespaceSchemaLocation attribute otherwise."

This is a tad misleading.

Jython in Netbeans

Tim is working on a Java project and has posted some Java coalface notes. Dynamic language fans and Pythonistas in particular, make sure you read right up to the last paragraph.

Thursday, July 22, 2004

Searching a web page with Firefox - memories of vi

I have just figured out that "/" in Firefox allows you to search for text on a web page. No more pesky popup modal dialogs ala Ctrl-F. I like it. Brings me back to my vi days punching Ada into a VAX 11/780 on a 300 baud ADM 3A+ terminal. Those were the days...

Wednesday, July 21, 2004


Barry Feigenbaum is doing a series of articles introducing alternative languages for the Java Runtime. First up, is Jython.

Tuesday, July 20, 2004

Quantum Crypto

"Quantum mechanics is a field in which science and philosophy collide
very violently. The force of the collision sends potent particles of
wonder, bewilderment, awe and incredulity flying in all directions.

Computing is not immune to shrapnel wounds from these collisions. In
particular, cryptography is a field of computing in which quantum
mechanics looks set to make life a lot more difficult and a lot simpler
at the same time. Weird, I know, but hey, that's quantum mechanics for

Read the rest in this weeks E-Business in the enterprise column on ITWorld.

Quantum computing: A two-edged sword for security.

Monday, July 19, 2004

Many roads to quality JMS

Sometimes I come across developers who think that if you want to use messaging in Java then you get yourself a J2EE appserver, crack open a few MDBs...
You can certainly do that but there are also numerous standalone JMS implementations that can fit the bill - sometimes better than the appserver approach.
Carlos has assembled a useful list of Open Source implementations. The list includes those that are appserver based e.g. JBoss MQ.
As messaging move center stage as the key enabling tech of asynch WS, I suspect the JMS API will become as familiar to people as the JDBC/ODBC APIs of previous silver bullets :-)

XPath exprs as keys into Python dictionaries

Via Daily Python comes a link to Kimbro Staken's XPath based Python Dictionaries. Nice. The ability to simply intervene in dictionary lookups to do clever things is one of the most useful features of Python.
It really, really helps to avoid the sort of lexical scatology that comes from languages that rely on library functions for everything.

Sunday, July 18, 2004


Bill proposes a XML serialisation for RDF. Simple, readable, writable, hackable.

Saturday, July 17, 2004


this looks awfully familiar :-)

Publish and Subscribe

"Publish and subscribe" - a term used for eons by geeks, appears to me
to be going mainstream (both the term itself and technologies based on
it).Publish and subscribe - an imminent overnight success after twenty years

Of course, it could be usurped by "event driven architectures" or some such. Ain't soundbite wars fun?

Long running applications

What if all your applications were running, on your machine, all the
time? A short visit to Tumbolia in this ITWorld e-Business in the
Enterprise article :
Raid on Tumbolia: A rescue mission for business data.

Friday, July 02, 2004

Going to a healthfarm

How can I say this? Ehm...

import time
time.sleep (1209600)

I'm off on hols and going cold turkey on e-mail, blogging etc. I'm off to a health farm. Actually, no I'm not. That is a lie. I'm off to walk around Barcelona and eat my way throught its fish restaurents with my family. (It amounts to much the same thing:-).

Back on the 19th.

Going to a healthfarm

How can I say this? Ehm...

import time
time.sleep (1209600)

I'm off on hols and going cold turkey on e-mail, blogging etc. I'm off to a health farm. Actually, no I'm not. That is a lie. I'm off to walk around Barcelona and eat my way throught its fish restaurents with my family. (It amounts to much the same thing:-).

Back on the 19th.

Thursday, July 01, 2004

Bloglines - a blessing and a curse (and a happy birthday)

Bloglines is a year old today. I find it indespensible. Unfortunatly, its popularity has rendered by site stats system rather ineffective.

90% of the entries are of the form http://stats.blogger.com/redirector.pyra?t=http%3A%2F%2Fbloglines.com%2Fmyblogs_display%3Ffolder%3DNNNNN.

Is there a way to work back from this to the bloglines identity I wonder?

Tuesday, June 29, 2004

Vancouver Python workshop

Impressive list of talks coming up at the Vancouver Python workshop

Conference home page here.

Reading, writing, APIs, GETs, POSTs and poetry

THis weeks ITWorld article Two HTTP verbs diverged in a wood... is all about idempotency although the word is never mentioned.

Monday, June 28, 2004

Python and Java technology work together to solve the impossible

Python and Java technology work together to solve the impossible is the title of an article over on IBM Developerworks. [via Daily Python URL].

Jython is a wonderful tool to have in any test-driven application development plan. The speed with which you can implement new tests, slice and dice exisiting tests, create smart "batch" runs of tests etc. with Jython has to be seen to be believed.

If you are developing tests of Java code in Java. STOP RIGHT NOW! :-) Double your productive day with Jython. (I'm not kidding.).

Friday, June 25, 2004

Open Source JDNC

Interesting, JDNC is now open source.

Rich client development is an enigma in computing. It never ceases to amaze me how complex and ugly GUI code can get once you start doing serious app. dev. I have played with patterns like MVC, languages like Smalltalk, Python, Java, C++ etc. and never been happy with the code I've written for any of them to drive GUIs.

My latest theory is that GUI design lends itself to complexity because it combines an exploding state space with an exploding namespace.

The state space problem come from the need to handle modeless dialogs and the freedome they give users to trigger events in combinatoric orders. The name space problem comes from the fact that every event, every widget, every method, every callback, every include file, every bitmap, every mask, every state variable has a *NAME*.

Keeping GUI code from suffering entropy death involves constant, care and feeding of *NAMES* and that is very laborious and error prone in my experience.

THe more open source projects we have to do with rich GUIs the better. Doing it well, with the flexibility for change required in business-oriented applications, is a far-from-solved problem.

My own favourite cross-platform GUI (surprise, surprise) is wxpython. It does a very good job of alleviating the cruft attack of GUI-dev whilst leaving you access to the power of the "metal" underneath. Combined with py2exe, it is a powerful way to create Windows executables for distribution that do not require separate Python installs.

Hmmm, jython + JDNC = wxjython for Jave GUI App. Dev?


Thursday, June 24, 2004

E-Government Interoperability and Enterprise Architecture

As regular readers of this blog will know, I have been working for a while with the Irish Government on Enterprise Architecture and Interoperability.

Part of that work has been contributing to a document Key Principles of an Interoperability Architecture. [PDF, 41 pages] produced by the European Public Administration Network eGovernment Working Group.

The document may be of interest to anyone interested in e-Government enterprise architecture, interoperability and/or service oriented architectures.

Tuesday, June 22, 2004

Slipping on a bar of SOAP

Carlos predicts the iminent rise of REST and fall of SOAP. Interesting times.

The color of words

This week's ITWorld article The color of words concerns the non-use of color as a cognitive aid in word processing.

After twenty years in the SGML/XML markup trenches, I have come to the conclusion that for narrative-heavy structured documents, color coding inside an otherwise normal word processor has a lot to offer over more traditional in-your-face structured authoring approaches.

Take something like OpenOffice for example. A nice clean XML notation for the base files. Yummy. Now add a customisation layer to allow colour coding to be used instead of custom tags by authors/editors. Now add a two-way converstion from the colour coded markup to semantic markup and versa visa. Whaddaya got? A lot. Not least of which is a happy author/editor community - a rarity in the in-your-face semantic markup world.

Monday, June 21, 2004

Web servers for local data access

Micah Dubinko of xForms fame, is playing around with using simple HTTP GET/POST to URI-ify his local data. By coincidence, I have an ITWorld article on that subject coming up in a couple of weeks. The question that most interests me is the difference between treating a local space (such as a hard disk) as a namespace of un-interpreted data (a file system) versus treating it as a local space (such as your locally installed apps) of interpreted data.

Question 1: How many applications do you use all the time?
If you are like me, you use a large number of applications some of the time but a small number of applications, most of the time.

Question 2: What interesting integration possibilities would present themselves if the applications responsible for creating the data on your file system all had web servers and provided processed "views" of this data to web browsers?

Sunday, June 20, 2004

The ancient art of hacking in Ireland

I have been responsible for numerous hacks over the years in my work. It goes with the territory.

Recently, I discovered that we modern day Irish may be genetically pre-disposed to the quick, inelegant but highly performative solutions known as "hacks".

Last weekend, I encountered a wonderful quick hack that an anscestor of mine executed (click to enlarge):

The Dolmen is from a Megalithic cemetary a few miles from my house in
Sligo in a place called Carrowmore.

Note the wee stone that has been slipped under the big stone in order to make the big stone sit horzontal to the ground :-) A hack executed some six thousand years ago:-)

Friday, June 18, 2004

Compatibility in a temporally decoupled distributed world

Carlos comments on the one-sided nature of Liskov's Substitition Principle.
As I've said many times, in a document-centric, message-centric world, objects are not the center of the universe so API substitutability is not a useful metric for compatibility. (Example, in REST, there is only one "API" so substitutability does not arise).

I think Carlos is right when he says we need to look at both the "provider" and "requirer" sides. We need to focus on foreward and backward compatability of message *notations* by means of a message processing model, not API comptability through polymorphism.

RIG 6 in the interoperability guidelines I am working on with the Irish government for the public services broker, addresses this issue.

Dave Orchard is well worth reading on this topic.

Wednesday, June 16, 2004

Document-centric intergration

Great stuff from Greg Wdowiak on document-centric integration and the perils of APIs.

Molly Bloom the blogger

yes when I put the blog in my web like the Andalusian geeks used or
shall I use a red css yes and how he spidered me under the Moorish
firewall and I thought well as well him as another and then I asked
him with my eyes to add a comment to my blog yes and then he asked me
would I yes to say yes to a trackback my mountain flower and first I
put my spam filter around him yes and drew him down to me so he could
see my logs all perfume yes and his heart was going like mad and yes I
said yes I will Yes.

Happy Bloomsday.

Tuesday, June 15, 2004

Learning from the Tralfamadorians

Data Storage and Data Transmission is a transcript of a short paper I delivered last week at a technology seminar held in Carrowmore by the IPTT (Inter-Planetary Technology Troika). Delegates from all three members: Earth, Tlön and Tralfamadore were in attendance.

Monday, June 14, 2004

4th European Conference on e-Government

I will be presenting a short paper on the Service Oriented Architecture underlying the Public Service's Broker at ECEG 2004 in Dublin Castle later this week.
If you are coming to the conference, please come up and say hello.

Saturday, June 12, 2004

How to spot an pushing-forty Emacs user like moi

Simple. They have something like this:
    (set-default-font "-outline-Courier New-normal-r-normal-normal-*-*-96-96-c-*-*-#163")

in their .emacs file.

Why is it that default font sizes in applications keep getting smaller year on year :-)

Thursday, June 10, 2004

One of the best kept secrets in computer graphics

It is not well known that the truly wonderful and keenly priced Paintshop Pro V8 contains a fully blown Python engine as its scripting language.

Getting started with scripting PSP is simplicity itself as you can just save a macro and then edit it to do funky stuff with all the power of Python behind you.

Also, it appears that big chunks of PSP seem to be written in Python. I counted about 1500 scripts in there...Lots of sources to crib from.

Anyway, I'm very fond of the Kaleidoscope effect in PSP. You specify a bunch of parameters angles, offsets rotations and the like and off it goes. Sometimes the results are dull. Most times they are interesting. Sometimes they are amazing.

For fun, I wrote a PSP Python script to generate 100 Kaleidoscoped images with ramdomized parameters and save them off to disk. I ran it. Got a bunch of duds but some really beautiful effects.

Like this one for example:

What does that look like to you? Bees converging for a conversation? Now be honest, would you have guessed that this came from an innocuous picture of wife and child on front lawn? Yup. I kid you not.

For the geeks amongst you. The script is

I think I'll generate a 1000 overnight and examine my crop in the morning.

My fun with eq?

In scheme eq? compares for equality in the sense of if both args point to the same object, then #t. In Python the number 1 is an object. There is one such object. If x and y both = 1, then both x and y point to the same object.

Scheme R5RS does not require that numbers be implemented this way and thus (eq? 1 1) can return false in one implementation (e.g. SISC) and true in another (e.g. MZScheme).

Thanks to Matthias Radestock for pointing this out.


Wednesday, June 09, 2004

Jython app dev in Eclipse

Being an insufferable Emacs bigot I personally would have no use for this but its great to see Jython support appear in these IDEs.

XML and objects - the ultimate permathread continues

Ted Neward responds to Dare Obsanjo on the whole XML serialized objects thing.

I'm with Dare on this one. Ted says

    "Dare, please, be serious for a moment--do you sincerely believe developers in Java and/or .NET are going to give up their favorite programming model (objects) in order to do Web services? When we put rubber to road, if interoperability is going to work (and I fail to see why we're doing Web services if that isn't the goal), then we have to have BOTH ends of the pipe under consideration when we do this. That in turn means I have to ensure that stuff being returned from the Web service is easily consumable in platforms beyond XML. "

1. I believe developers not only should but must look passed the object-centric model to realise any benefit from Web Services.

2. Interoperabilty is not achieved through shared objects. Interoperability is documents. Interoperability is syntax. Interoperability is bits on the wire.

Objects are not the answer to distributed computing. Objects are the question. Documents are the answer.

Tuesday, June 08, 2004

Scheme woes - too tired now. Will be obvious in the morning.

insertR is a function that adds its first parameter into a list (its third parameter) directly after the first occurence of its second parameter.
I have MZScheme. I execute:
    (insertR 3 2 '(1 2))

I get
    (1 2 3)

That floats my boat. Now I fire up SISC 1.8.8. Again, I execute:
    (insertR 3 2 '(1 2))

This time I get:
    (1 2)

What gives?

(define insertR
(lambda (new old lat)
((null? lat) '())
((eq? (car lat) old) (cons old (cons new (cdr lat))))
(cons (car lat) (insertR new old (cdr lat)))))))))

Some thoughts about e-mail and the weird feeling created by sending mail from one URI to another

This weeks ITWorld article: e-mail - the end of a metaphor.

Monday, June 07, 2004

ISO Schematron

Congrats to Rick Jelliffe on producing the final draft of ISO Schematron - part 3 of DSDL (ISO 19757-3).

You can get the PDF here [30 pages].

Friday, June 04, 2004


John Udell on Necker. Read Jon's post and you will understand why I chose Necker's cube as my favicon.

Thunderbirds are go!

For years now I have been a committed, carnaptious devotee of Eudora for e-mail.

Although I love it deeply, its approach to handling attachments has finally driven me to move on. In Eudora, attachments get separated out of e-mails into an "attachments" diretory. At that point, the connection between the e-mail and its attachments is brittle. Move e-mails around folders to organize them and the attachments stay put. This results in an attachments folder that grows without bounds and a set of e-mail folders that don't quite stand-alone anymore because of references to files in the attachments directory.

A couple of days ago I followed the advise of some fellow Propylonistas who loudly sing the praises of Thunderbird.
It is indeed a wonderful thing. A veritably oasis of calm in a sea of e-mail entropy.

Firstly, it imported all my Eudora folders (and attachments) without a hitch. Secondly - it stores e-mail attachments inline so that you can move complete mails around folders.

And most impotantly - it stores mail in plain old text files using mime encoding for the atttachments (just as God intended). (Yes, there are times when I process mail with grep and Python and Emacs and...). Proprietary binary formats? Just say no!.

Its got funky spam protection stuff too. Whats not to like. Sign me up!

Thursday, June 03, 2004

The sad truth about how Web Service technologies are sold

Ted Neward on the unfortunate object-think endemic in the current spate of Web Service tools.

Tuesday, June 01, 2004

Software as fungus

An off the wall ITWorld article on the subject of growing as opposed to building, complex systems.

Monday, May 31, 2004

An overview of the Public Services Broker Architecture

I have written up a paper on the Public Services Broker architecture (PSB). It is available on the Reach website in the papers section.

The PSB is a Service Oriented Architecture for e-Government currently under construction in Ireland.

Over the next while, we will be publishing more documents about the architecture and the interoperability framework. A refresh of the interoperability guidelines (RIGS) is underway incorporating the feedback received.

All comments on the architecture overview or any of the RIGs welcome.

document-centric versus data-centric XML again

A possible definition, prompted by the recent tag share post.

    Document-centric XML is XML in which instances exhibit power law distributions of element types.

    Data-centric XML is XML in whcih instances exhibit a uniform distribution of element types.

Not perfect but useful nonetheless I think.

Link Darts

Sometimes its fun to hover over a page of links and just pick one, basically at random. It like throwing a dart at a dart board. Sometimes you hit the bulls eye, most times you don't.

Today I hit a bulls eye of sorts by landing on glug. Scroll down to to the ascii art beneath the fortune cookie and throw a dart.

Friday, May 28, 2004

XML tag share analysis and power law distributions

Here are four graphs (click on the image for bigger version).

XML Repository of Irish Legislation (Custom schema)
Linux HowTo's (Docbook)
Postgres Manuals (Docbook)
Shakespeare's Plays (custom schema).

They are all basically power
law distributions
. Take a bow Mssrs Zipf and Pareto. Given that
the data sets underneath are wildly different in shape, size and
subject matter, the similarity in the graphs is striking.

The graphs are produced by charting element types against frequency of occurence.

I have been generating such graphs from SGML/XML datasets for years
and they always take the same general shape. I call it tag share analysis.

    Always do a tag-share analysis before writing an XML
    up/down/cross-translate in XSLT or DOM/SAX or whatever. A remarkably small number of element types make up the bulk of the markup - regardless of the size of the schema.

Thursday, May 27, 2004

Ding ding ding - come and get it!

Python 2.3.4 is now available.


If <insert programming language name here> was a firework then...

Here are contributions for Python, Perl and C++ http://dev.r.tucows.com/blog/_archives/2004/5/26/76434.html.

[via Daily Python-URL].

Tuesday, May 25, 2004

Martin Fowler on databases in Service Oriented Architecture

    "The recent rise of Service Oriented Architecture seems to mean very different things to different people, but one plausible thread is a rise of autonomous applications with their own Application Database that communicate through service interfaces - effectively replacing shared database integration with rpc or messaging based integration. I'm very sympathetic to this view, particularly favoring integration through messaging - which is why I encouraged the development of EIP[1] In this view of the world the integration database is no longer the default assumption."

    [1] EIP."Enterprise Integration Patterns. Designing, Building, and Deploying Messaging Solutions"
    by Gregor Hohpe, Bobby Woolf.


Hiearchies and aesthetics

    "In all branches of cognitive endeaver, our highest praise is reserved for works that build the deepest hierarchies."
    Robert Jourdain.

Ok. That explains the number of musicians and audiophiles I come across in the XML world but does it justify docbook? :-).

Event driven, temporally decoupled business processes

Forget about business process execution languages and belocolus "business process engines" that will protect you from all harm.

Your problems do not stem from the lack of a silver bullet syntax or the lack of a killer programming language feature. Your problems lie in two fundamental concepts that need to be central to how you think about business processes in a distributed world - (a) event driven execution and (b) temporal decoupling.

Without those, all the WF*, BP*, WS* and *ML's in the world cannot help you.

More on this line of thought in this week's ITWorld aricle : When modelling business processes, upside down is the right way up.

Friday, May 21, 2004

XML is not a real data model

Quote from Date defends relational model:

    "XML is not a real data model."

Discuss :-)

Thursday, May 20, 2004

Come the glorious impersonal computer revolution

Sitting, waiting for a delayed flight to Dublin out of Jacksonville, Florida yesterday I was struck - as I always am - by the number of phone kiosks - all empty - littered all over the place.

These kiosks serve more as post-modern art installations than as useful devices these days thanks to the ubiquity of cellphones.

What to do with them? I have a suggestion : lets start The Impersonal Computer Revolution.

Wednesday, May 19, 2004

Balancing security, risk and freedom

The CIO summit is over. Some interesting presentations and lots of very interesting people with lots of very interesting integration problems.

Looking back on it, I think my favourite presentation was Jeffrey Rosen from George Washington University Law School who talked about ways in which security measures can be implemented without overly impacting privacy/freedom if they are approached carefully.

His book The Naked Crowd is well worth checking out if you are interested in this stuff.

Sunday, May 16, 2004

Kicking back on Amelia Island

I'm posting this in the Marche Burette Deli on Amelia Island, Florida. I'm here getting ready for the FCW Government CIO Summit start starts tommorrow.

I will be talking about the Public Services Broker - an eGovernment SOA I have been working on for the last two years with the Irish Government. (Geeks go here. I travelled sans portable this time so postings will be patchy for a few days.

Friday, May 14, 2004

Method invocation order for multiple inheritance junkies

Michele Simionato explains the C3 algorithm for Method Resolution Order as used in Python 2.3.

Those not interested in same might like to take a look simply to marvel at the ASCII art.

Method invocation order for multiple inheritance junkies

Michele Simionato explains the C3 algorithm for Method Resolution Order as used in Python 2.3.

Those not interested in same might like to take a look simply to marvel at the ASCII art.

Method invocation order for multiple inheritance junkies

Michele Simionato explains the C3 algorithm for Method Resolution Order as used in Python 2.3.

Those not interested in same might like to take a look simply to marvel at the ASCII art.

Thursday, May 13, 2004

Message exchange, stateless services and Domain Specific Languages in Service Oriented Computing

Via Radovan Janecek comes this interesting 3 page PDF Microsoft's Next Frontier.

Loose coupling via stateless, message oriented interactions. Yummy. Domain Specific Languages. Doubly yummy.

As I see it, C# and Java are today's assemblers. Speed of application delivery trumps speed of application execution 99 times out of 100 (welcome to capitalism). Then there is Moore's law. Add them together and I think its likely that the action will move to DSLs (Domain Specific languages0 that target the VMs for those two runtimes).

DSLs that allow developers to work naturally with documents as first class "objects" (for want of a better word) are required. In years to come, I hope we all collectively cringe at todays crop of Event/Pull/Tree/Marshalling abstractions for XML processing. LAML, xduce and HaXML offer tantalising glimpes of where we might be headed. (I predict lots of GUIs fronting these things).

DSLs that allow "event driven" business process description. PI-Calculus is on everyones lips but don't forget Petri-nets or even plain old Finite State Machines.

DSLs that embrace the dynamic typing implicit in moving "type checking" away from objects/records and into document types (grammers). (Jython for dynamic typing, maybe something like Haskell's polymorphic types with some sort of native type for Tree Automata ) for those who want compile time document type validation.

DSLs that cross-translate to XML (XNFs = XML Normal Form:-) but provide human-oriented grokkable syntaxes. RelaxNG Compact Syntax leads the way but I predict the XUL's/XAML's of this world will follow suit.