Thursday, December 28, 2006

The BIOS for a new century...

When I still had hair we talked about PC's having a BIOS. A basic i/o substem on which you would layer an OS. I remember layering a Microsoft product onto a PC once.

No. Not that one.
No. Not that one either.
This one: Microsoft Xenix.

Anyway, given that this week some of my noodlings on virtualization have been blogged to an unsuspecting and indifferent planet :-) I had virtualization on my mind when scanning the newscape this morning. User friendly virtualization for Linux caught my eye. This could be a real sweet spot for Linux I think. Take the kernel and you have yourself an uber-BIOS to base your work on - even if it is another operating system. Take the BIOS + the Apps and you have a fully-blown OS environment.

I suspect soon I will be booting into a layer of Linux and then booting into further laters of Linux and other OS's in virtualised containers.

There, I knew we as an industry would find a way to use up all those pesky CPU cycles and megabytes of storage.

Wednesday, December 27, 2006

Sunday, December 24, 2006

Newbie Geek Strums #3

Further on the Newbie geek strums theme...


  • My fingers/wrists are my livelyhood. Without a computer keyboard I would rapidly both economically challenged and - quite possibly - psychotic. Thus, any pain in the wrist/fingers is a source of concern. Most guitar tutorial resources (paper/electronic) start out saying something like "your fingers will hurt for a while but you will get used to it" and/or "Suffer through the pain ye who aspire to scale the pentatonic heights!" Worrying.
  • I have had pain in my right wrist/fingers before. Generally it flares up if, say, I write code for 40 hours p.w. and then throw another 20 on top of that writing a book or something. I haven't had it for a few years but then again, I haven't written any book for a few years...A week into my guitar adventure it came back. My first reaction - ditch the guitar. Second reaction: maybe it will pass. Third reaction (after about 3 weeks): lets switch to using a left hand
    mouse. Fourth reaction (after about 6 weeks): maybe this is going to work out after all.
  • Although I am a Ciotóg I have always used a mouse with my right hand. I got used to using my left hand for mousing in a couple of hours. The RSI-like pains are now much, much less frequent. So far so good.

F chords

  • An obvious thing for a beginner to do is to seek out simple songs to get started with chords. It has been a revelation that "simple" in guitar-land does not correlate with "simple" as I had envisioned it. For example, two simple chords and some simple strumming patterns make Horse with no name a lot easier than it sounds to a total newbie. It sounded complicated to my newbie ears. Certainly much more complicated than a bunch of nursery rhymes such as Hickory Dickory Dock or London bridge is falling down (see here for example.)
    Not so! A lot of nursery rhymes feature fearsome goblins and gargoyles in the form of F and B chords. Shudder. The first fingering diagram I saw for an F chord involved a barre chord on fret 1. This fearsome construct appeared to me to require (a) breaking and then resetting all my fingers in different positions (b) making judicous use of some sandlewood strips and a monkey wrench (c) taking 20 minutes between chord changes. Today, I'm still worried about ever being able to do barre chords but I have got over the shock of finding that "simple" is not easily defined in guitar land. On the positive side, I can hobble through some stuff that to my newbie brain sounds complex musically but isn't technically.

A multi-pass compiler approach to grokking music

  • I have yet to find a single tutorial text that truly teaches the subject from the ground up without annoying - and sometimes infuriating - forward references or logical leaps.
  • I have lost count of the number of resources I have read that spend ages telling you about, say, how to hold your guitar and then make a gargantuan jump like "Now that you know how to hold the guitar, lets use an alternating base arpeggio to play this C Major Pentatonic Scale"...or some such. Ok, I'm exageratting a bit but not much.
  • Perhaps music is one great big Hermeneutic circle. Even if it isn't, I suspect western notation is. Is it possible to start with, say the basic physics of harmonic series and arrive at, say mixolydian mode without making forward references to something the learner doesn't know yet? I dunno. If such a text exists, I have not found it yet.
  • My approach has been to read music-related stuff the way I would mentally compile programming language source code. I make a mental note of all the forward references to symbols I don't know yet. I then make a second pass through the "text" resolving the now known symbols in their proper context.
  • If it is a Hermeneutic circle, it would be great to know that in advance. Someone with the know-how could map out the circular bits. That would be very useful. Years ago while writing SGML For Software Developers I concluded that the concepts in SGML were unavoidable circular. I meant to try to map the circles at the time but never got around to in.


  • Being something of a masochist when it comes to complexity, I have decided to try my hand at Tabla at the same time as I struggle with the guitar. My reasoning goes like this:

    • What better way to understand what it means to say that the "12 notes with 2212221 intervals is a Western phenomenon not a universal truth" than to understand a completely different musical tradition?
    • Tabla has its own language - its own notation. As a software developer, I'm fascinated by notations. Period. Bring it on.
    • If RSI ends up killing my guitar plans, I have a plan B
    • The merest sound of a tabla induce a Pavlovian response in me which is very pleasant, especially before dinner.

Wednesday, December 20, 2006

More than words can say

    "There has never been a better time, in the history of the planet, to pick up a physical skill on a 'teach yourself' basis."-- More than words can say

Tuesday, December 19, 2006


Bill quotes Sam:
    At the moment, HTML and XHTML are two different authoring formats covering roughly the same domain of DOM trees.

By ignoring trivia such as actual history, an alternative view is:
    At the moment, HTML is a Domain Specific language (DSL) for authoring XHTML.
What is "domain specific" about HTML that is not equally domain specific about XHTML you might be thinking? In a word: authoring.
In the transition from SGML to XML a whole bunch of authoring conveniences were dropped. The thought was that tech advances (GUIs etc) made them unnecessary.
History would suggest otherwise I think.

Thursday, December 14, 2006

Circles, fifths, twelfth root of two, octaves, Pythagoras. Oh, and organisation theory

So there I was, minding my own business, Googling around for stuff about the mathematical relationships that underly the basic musical stuff I'm grappling with like chords and scales and so on.

The forces of serendpity lead me to a paper on - of all things - organisation theory. My interest piqued, I printed it and...oh my...there are puns in there that make my toes curl. I spilled tea all over myself when I hit this one: "The irrationality of melodic space simply didn't resonate with the Renaissance drive to mastery.". Great stuff!

Did you know that you you can just type twelfth root of two into Google and it will tell you?

Amid all the noise and haste...

it is good once in a while to stop and read something like this:
World's tallest man saves dolphin
One story like that a day is good for your mental health and your stress levels.

AJAX again

Jon Udell points out that the transparency of the HTTP pipeline makes AJAX inherently more automatable than conventional GUIs.
I agree up to a point. Knowing for sure that you can "hook" into the conversation at HTTP level is a powerful thing in some cases. It is directly analagous to hooking software interrupts on PCs which was all the rage, oh, 20 years ago:-) (Anybody out there remember TSRs?)

However, the usefulness of such hooks is completely dependent on how thin/thick the client side of the conversation is. In the simplest case, the client doesn't hold any state and just relays user events to the server. Such apps were highly automatable in the TSR days and are highly auomatable on the Web today.

However, as soon as you put some sort of state holding, Turing machine on the client side...Simply put, you get a non-trivial client-side state vector which is not hookable. As soon as this happens, automation is in trouble.

A really simply example. Consider a Web UI with two buttons Debit and Credit on the client side. Button Debit is only enabled at UI level if Credit has been pressed at least once. Now where does that logic - that "business rule" live? If it lives client side (highly likely) then the behaviour of the application and the semantics of the hookable HTTP events is dictated by a state machine you cannot see at the HTTP level.

In the real AJAX world of course, client-side state gets a lot more complex that this. As soon as you have started digging into the Javascript, the game is up.

  • If you are very lucky, the Javascript will have been written to be read. Most of the time, it will be essentially Vogon. In some cases, for example, gmail, it will be obfusticated Vogon.
  • No sooner will you have figured out the Javascript than a new version of the app changes it. If you are lucky, the changes will be dramatic and your app will generate unambiguous smoke. If you are unlucky, the changes will be to business logic and have subtle and hard-to-debug effects on your code

Daniel Fisher's comment to Jon's post gives a common example of the problem: forms that do not work unless the form data is processed by an onSubmit handler. There are really, really good UI/User Experience reasons for doing such things. Hence the problem :-/

Daniel also talks about driving the browser directly to avoid such problems. Again, this speaks to the heart of the problem. Will we end up having to drive client side browsers using OLE Automation or (shudder) event queue poking, in order to automate web applications?

This isn't a pleasant picture from my perspective.

It reminds me too much of my TSR days when another favourite trick in automating applications was poking keys into the keyboard buffer using (if memory serves) INT 10H.


Wednesday, December 13, 2006

Blog archive URI now implements "castors up mode"

My blogger upgrade appears to have broken the archives link.
Rummaging through the FAQ has been singularly unhelpful so far.

Tuesday, December 12, 2006

Feed fixed

The upgrade to the new blogger beta seems to have fixed my feed problem. Its become an atom feed too which is just fine by me.

Switched to new blogger beta

I've switched to the new Blogger beta. Maybe that will fix my feed problem. Maybe the feed problem will be the least of my worries. I'm about to find out.

Eclectic Enough?

Wow. Looking through the list of topics for pycon 2007. The diversity is striking. Some examples that struck me:

  • A look at the deployment and usage of Python for feature films inside of Sony Pictures Imageworks.
  • Python In Open Pit Mining Operations
  • A review of a Python application used by Computational Neuroscientists to model brain cortex.
  • pyweek: making games in 7 days
  • Python and wxPython for Experimental Economics
  • How I Wrote a Python App and Got $5 Million
  • Accessing and serving scientific datasets with Python
  • Galaxy: A Python based web framework for comparative genomics
  • Visual Python in a Computational Physics Course

and of course

  • Jython for Python Developers

Are we having fun yet?

AJAX and the hidden cost of ease of use

    "In the real world, front ends have a habit of becoming more than just front ends. They embed business rules and business logic without which, the back end cannot function. In short, the front end and the back end become inseparable." AJAX and the hidden cost of ease of use

Monday, December 11, 2006


Feed problems. Broken rss. Feed. Indigenstion. Geddit?

Anyway, weirdness in my feed has been reported. (Thanks to those who commented/e-mailed.)

Investigation of same is being insterstitially conducted in the scant grace note intervals afforded by the four letter word "work".

This posting is, in a pleasingly hermeunetic fashion, part of said investigation.

Saturday, December 09, 2006

YouTube changes everything

The world of technology has changed forever thanks to youtube.

Friday, December 08, 2006

Congrats to Jon Udell @ Microsoft

Congrats to Jon Udell who is now working with Microsoft.
Jon lists a bunch of reasons for joining, one of which is:

    "Jim Hugunin, who created both Jython and IronPython, is making my favorite open source scripting language, Python, a first-class citizen of the .NET platform."

Tuesday, December 05, 2006

On the unreasonable effectiveness of extremely shoddy engineering practices in the modern software business.

Two radically different approaches to enterprise application software looks at two very different approaches to building software.

Six Word Story summaries of them are:

1) Application stays wired. Human gets reconfigured.

2) Today, use Whatever Works. Tomorrow, repeat.

Thursday, November 30, 2006

Spam Surrealist Poetry

Oxford Debate is on Thursday

He could see the barnacles which encrusted them,
could see pale drowned things lying limply in the clefts of the wood,
He had time to realize the apartment was too dark,
Hanging from the lowest branch of this tree
an old-fashioned pair of

-- The above taken from a recent piece of spam e-mail. Only minor changes to the punctuation and line spacing made.

Beauty comes in many forms I guess.

A rush of codd to the hand

(Yes you read that right. "codd" as in Codd in Edgar F.Codd.)

    "Some of the best managed content I have ever seen sits on a Unix file system and some of the worst managed content I have ever seen sits in a big honking, breathtakingly expensive, relational database."-- A rush of codd to the hand

Tuesday, November 28, 2006

Double post

I'm going to leave this double post for posterity.

Next time I get asked why transactional web-apps (apps that send stuff and generally do things rather than just pull stuff together) cannot be built using all that cool, simple, mashup stuff?

The two posts referenced above is basically the why. For mashing up, you ask me stuff, you don't get it, you just ask again. Simple. If I then respond to your first request some time later, no harm done. Just throw it away.

but if I *send* you stuff and I'm not sure if you got it...


rupy is a Ruby *and* Python conference. Interesting. I'm trying to think of an example of something like this in the past...I'm drawing a blank. This is interesting new territory I think.

Are we seeing the emergence of a community that is not-so-much rabidy Python or rabidly Ruby but rather rabidly anti-something else. United by a common itch. What is the itch exactly?

Dynamic Typing or something more concrete like super-fast database web app dev (Rails/DJango/TurboGears)...I dunno but it sure is interesting.


rupy is a Ruby *and* Python conference. Interesting. I'm trying to think of an example of something like this in the past...I'm drawing a blank. This is interesting new territory I think.

Are we seeing the emergence of a community that is not-so-much rabidy Python or rabidly Ruby but rather rabidly anti-something else. United by a common itch. What is the itch exactly?

Dynamic Typing or something more concrete like super-fast database web app dev (Rails/DJango/TurboGears)...I dunno but it sure is interesting.

Newbie geek strums # 2

This is a follow on from (Newbie geek strums # 1)

Well. Some interesting blog comments and also some interesting e-mail.

Some more observations and remarks

  • It seems beyond coincidence that so many markup people (dare I say "doc heads") are musicians of various types. Lessee : Steve Newcombe, Eliot Kimber, Eve Maler, Bob Du Charme, Len Bullard, Tony Coates...
  • On Jarrod Robertson's recommendation, I got Fretboard Logic Special Edition by Bill Edwards. I have only flicked it so far but I'm more enthusiastic about it than anything else I have seen on the "music theory"/learn-your-scales-they-are-good-for-you/here-are-the-most-important-25-million-chords genre. A book that seems to use 3-4 core ideas/patterns as combinatoric algorithms for navigating around the fretboard. That fits my brain very nicely than you very much. Besides, who can resist a learn-the-guitar-book that quotes Claude Shannon? ("Information is anything that reduces uncertainty").
  • There seems to be an entire Guitar culture/community that venerates guitars as, um, Object d'Art. Things to be crafted (luthiered?), decorated, polished, mounted, sensuously rubbed...even if they never play a note. Maybe the same is true for other instruments like the piano or the saxophone and I'm just not being exposed to it on my current travels.
  • Lots of folk talk about making sure you get a "good" guitar but of course, newbies are lambs to the slaughter here because we haven't a clue what we are looking at. Sure we can pick up a dozen guitars and strum the strings and go all pensive and earful but we are basically kicking tyres. Thanfully, my mate Pat stepped into the breach and picked a decent guitar to get me going. If you are a newbie too, get someone you trust to do the first round of buying for you. (Hi Pat:-) Starting with a bad guitar (a finger slicing, impossible to tune, bent-knecked dog of a thing you got for fifty bucks appears to be the fasted route to the dreaded "I cannot do this. I've no talent like *they* all have." confidence tailspin.
  • As a newbie, I cannot discern the difference between pitches terribly well and my confiedence in my own ability to tune a guitar by ear (using the relative method - having latched onto a Low E from somewhere) is, um, zero. I bought an electric tuner. What a great gadget! Highly recommended.
  • If you have an electric tuner, make sure it is set to "guitar" and not "bass" or "chroma" when you try to tune. I baffled myself for a good hour on that one. Thought my gadget was busted.

Thats it for now. Some time soon : You must be joking chords, guitar as a sure-fire road to RSI flareup. Oh, and musical texts as a proper subset of the all the hermeneutic circles in the world.

Sunday, November 26, 2006

Jython for Red Hat

Congrats to Frank Wierzbicki Jython's dev lead, who know works full time at Red Hat. Frank is hoping to get Jython into Fedora and perhaps RHEL.

Saturday, November 25, 2006

Newbie geek strums # 1

Revelation time. I have decided to learn to play guitar. Acoustic guitar.

End goal? To be able to pick and strum my way through some Bob Dylan, Leonard Cohen, Niel Young songs.

Starting point? Zero. Actually, less than that. The musical knowledge equivalent of -273 degrees centigrade.

Handicaps and hangups? Left handed. Yes, I have heard about the greats who where left handed. That doesn't amount to a hill of beans when you are starting from -273 degrees centigrade. Most of the diagrams I see are the wrong way around dammit and it seems that guitar stuff is wall-to-wall diagrams of various types.

Hangups? I am fairly competent with a computer keyboard and over the decades, have trained my hands and brain that pressing down on two or more things at the same time is *wrong*. Consequently, I have my doubts that I will ever be able to (a) get two hands working independently yet together and (b) get my fingers to agree to press/pluck strings *at the same time*.

Opening observations and remarks.

  • There is a ton of very useful stuff out there on the Web. I am finding Guitar Noise a great place to start - working backwards as necessary to the fundamentals needed.
  • Bob Sutor (fellow geek) is a guitar player and has started blogging about starting with the guitar.
  • The concept of written music on the Internet appears to be in the midst of a big copyright stink at th moment. Lots of resources for chord/tab diagrams say "Come back later. Lawyers in the boardroom." Lots of resources point to as a great place to visit for stuff but, well, go there and see for yourself.
  • The good news is that community minded folk post videos like this which are excellent at demystifying the terminology
  • Most "music theory" material I'm finding is not theory at all. When guitar folk talk about covering the theory, they appear to be mostly talking about covering the notation. Thats not theory in my book, it is language. If they called the language bits "language" rather than "theory" they wouldn't scare folks like me to readily
  • Being a geek, the real theory interests me. I.e. the physics and maths of it all. I came across Music: a Mathematical Offering which is a rather heavy for my needs but at least starts where I feel confortable : the physics of sound, sine waves, amplitudes and frequencies etc.
  • As a geek, I like absolute numbers for things. I know about the octave thing but it still drives me nuts when I read about the note "A". Which A? What frequency are you talking about. What do you mean it doesn't matter?! It is something I will have to get over
  • On the subject of absolutes. I have found the concept of 4/4 time a bit shocking. Everything about the naming of the thing would lead you to believe that it tells you the *timing*. Not so. It tells you how many beats there are in a measure but doesn't tell you how quickly those beats come. To find that out you have to listen or judge for yourself what "moderately fast" might mean or look up quaint Italian words that sound like cars like Allegro.
  • What about volume? Surely that is the amplitude of the sound waves right? Yes, but you have to go all Italian and relativist again - forte, diminuendo..
  • Barre Chords? I refuse to believe it is physically possible to do one of those on fret 1. I hope that opinion changes


Friday, November 24, 2006

Ubuntu boxes getting closer Great.

Now for real bonus points, I'd like to be able to buy an Ubuntu box with Ubuntu Studio pre-installed.

Ubuntu Studio appears to be still in planning stage but what a great idea. The thoughts of fighting all the driver and interfacing battles with Ubuntu Studio fills me with dread. Would I buy a pre-configured box rather than fight those battles? Yes.

Thursday, November 23, 2006

The Python Papers

The Python Papers is a Python developers journal publication. Vol 1, issue 1 out now.

It has grown out of the Python Journal ...or something...details here.

More good stuff for the print-it-and-read-it-leisurely-offline stack.

Wednesday, November 22, 2006

Wonderful Programming Quote

Titus Brown quotes Brian W. Kernighan:-

    "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." -- Brian W. Kernighan

That is a gem.

Tuesday, November 21, 2006

Friday, November 17, 2006

Python at MIT

Waaaay up there on the list of downright impressive geeky books sits Structure and Interpretation of Computer Programs, known also as SICP.

Part of its gravitas (apart from being technically excellent that is) is its association with MIT and all those tenacious electrical engineering students. Think you are a hot shot between the ears? Then learn computer programming by doing *Scheme* as your first language. Pascal, Basic, Java? Thats all just whimpy stuff. Real programmers use Scheme. All programming languages are toys by comparison :-)

Okay so I'm over-stating it a bit. Still, it sure is interesting to see Python in the new curriculum over there.

Joe Gregorio nails it

Joe Gregorio nails it:
    "[I]f you don't have control of both ends of the wire then loosely typed documents beat strongly typed data-structure serializations."

So why so much big vendor push for SOAPy goodness and WS-WhereIsThePurchaseOrderForThisStuff? Think about it "*both* ends of the wire". Geddit?

Jython love

Charles Nutter - of JRuby fame - on jython.

Its great to see Charles on the jython lists and great to see some new e-mail addressing popping up as a result of his recent de-lurk.

Thursday, November 16, 2006

Ubuntu box

Ubuntu boxes. This is the way forward for mass adoption of Linux. Installation of distros will always be an option for the specialist/enthusiast minority IMO.

Installation of Linux has improved *a lot* in recent years but there are limits to how simple it can ever be made. The hardware landscape and the multimedia nest of vipers that nests on top of it, isn't getting any simpler over time. It is as much as any installation procedure can do to simply keep up.

As and when credible Ubuntu boxes become available near me, in laptop as well as desktop configurations, I'll buy a bunch of them.

There ya go. Real money on the table. Having trouble seeing the money in open source? There is one option. Any takers?

Hmmm. I see there is an It's not what I thought it might be. Oh well :-)

Tuesday, November 14, 2006

Every country should have a wiki

I've just come across Every country should have a wiki. Don't you think?

What hope is there for a "domain name wiki + country code" naming convention for these? Probably very slim. Pity.

BTW, from the above cited page you can learn that Ireland is the third largest island in Europe. I never knew that.

Even less well know is that North America is a large island off the west coast of Sligo.

Every blog post (and wiki page) has its own unique POV on the world :-)

Solution spheres and application cubes

    "And finally we arrive at the heart of the problem. The better the initial fit between the required solution sphere and the available application cube, the harder it is to round out the latter to fit the former. Sad but true." --Solution spheres and application cubes

Thursday, November 09, 2006

FDW = Feedback driven writiing

I like the growing trend of publishing tech books on-line as constant works-in-progress, encorporating reader feedback and then shipping "builds" that are basically point-in-time versions of the text in PDF, Web or paper formats. A wholesale community of readers testing/debugging the text as it is developed. Very 21st century. Very Web 2.0.

This turbogears book springs to mind as does this django book. Both books will be better by the time they hit 1.0 as a result of the FDW approach taken to their creation.

TurboGears appears to be waaayyyy better than django in one vital aspect. It has the best set of doodads. A new trend I wonder? What do you mean your application does not have its own cute doodad? How 20th century! How Web 1.0 of you!

Tuesday, November 07, 2006

Attack of the killer digicam

    "The technology will keep getting better and more affordable. The bookshelves will heave with books that explain previously highly specialist terms like 'Establishing shot' and 'reverse cutting' to an audience of film production amateurs. The revolution will start (and indeed, has started), somewhere south of Z-Movies but it will climb fast. Who knows where it will stop. " --
    Attack of the killer digicam

Monday, November 06, 2006

Not your grandpa's Web UI API

Have a look at the Kitchen Sink (I'm using Firefox. Mileage may vary in other browsers).
How does it work? Horrible to code? See for yourself.

Friday, November 03, 2006

Jython talk. Dublin. Wed 8th November.

I will be giving a talk on jython at this months meeting.

Details here.

The organisers are interested in getting a feel for number of attendees so if you are planning on attending, drop an e-mail to the mailing list.


Tuesday, October 31, 2006

WIKI JotSpot Google

There seems to have been remarkable little coverage of the acquisition of jotspot by Google. FAQ here. Maybe I missed the buzz. Maybe there wasn't any.

Interoperability as a state of mind

    "ASCII or no ASCII, XML or no XML, a truly interoperable file format is one that has been designed specifically for that purpose, not one that organically grows out of internal defensive programming practices.

    Interoperability is a state of mind. You need to be thinking about the other guy to do it right. Only people whose job description includes thinking about the other guy, have the luxury of doing so."
    -- Interoperability as a state of mind

Tuesday, October 24, 2006


From the window of his apartment, Bob watched The Pizza Man start his journey. As he started his stop watch he thought to himself: "30 minutes or it's free.".

Monday, October 23, 2006

The inevitability of cruft

Cruft in the software getting you down? Go get a cup of something and read the inevitability of cruft. It won't make the cruft go away but it might explain why the cruft is there in a way that makes it easier to cope with.

Saturday, October 21, 2006

Purple haze in Portland

I visited Powells yesterday in Portland, Oregon.

What an amazing bookshop! I was hyperventilating trying to figure out how best to visit all the sections that looked interesting. I started at the A-Z of Western Philosophy in the Purple Room and it was an hour before I arrived at Wittgenstein. Powells section on Aristotle is bigger than the entire Phil section of most other bookshops I've been in (with the exception of the wonderful Blackwells in Oxford.

I have a weakness for classic art instruction books of the Andrew Loomis, Victor Perard variety. By the time I got to this part (in the Pearl room, 3rd floor), my arms were already laden with books. I "escaped" from that room having added just two more.

By the time I arrived at the technical books shop two blocks away from The City of Books I was a giggling wreck.

I didn't buy anything in the computer section (time for a change of career perhaps?). I did however, spend a very enjoyable few minutes in the little computer museum they have there. They have a Sinclair ZX80 (One of the high end ones - the one with 16k of RAM. Mine had 1k.). They have a Commodore 64 (I hated those things), an Apple 2 (CP/M - I remember it well. I was a Visical programmer in 1985), a trash 80, a fat Mac...

A very enjoyable way to spend an afternoon. Eat something before you go and wear confortable shoes.

Friday, October 13, 2006

Dave Stewart RIP

Sad news today. Dave Stewart, IT journo and blogger has passed away. Bernie has some words to say.
The photo on Bernie's site looks familiar. I think I was sitting just out of frame to the right.
Dave blogged the ups and downs of his treatment on his blog

Few things in cyberspace are more poignant than a personal blog that...ends.

Tuesday, October 10, 2006

If we can not assign a URI to an idea, we must pass over it in silence

Ideas DO Have URIs [via Mark Baker].
With apologies to LVW.

All joking aside, there is an important point here. Analytic philosophy has long had a fascination with the nouns of human languages. Given a noun, it is a very short hop to a URI. But what about all the other things that make up language? Are they not ideas too? Verbs are the obvious next component to look at. In RESTian design, a fixed set of verbs is used. In order to achieve the required outcomes, an infinite universe of nouns in the application is manipulated so that the fixed set of verbs available can achieve the required outcomes.

One thinks of J. J. Austin's "Doing Things with Words".

If I want to "pronounce you man and wife" I can have a URI of the form [person/married_to] and use PUT or I can have an object of the form [person] and invoke the marry() or the set_married() method.

One approach manipulates noun-space to meet a linguistic need, the other manipulates verb-space to meet a linguistic need. As language-wielding entities, the latter feels intuitive when the idea we want to express maps easily onto the verbs we have in our host language. The trouble starts when you step beyond performative ideas that have atomic, verbal representations in your host language.

As a RESTian, I would argue that natural language has a big lesson to teach us. You can do a heck of a lot - without inventing anything new in the language - given a small let of verbs and an open-ended space in which to craft your nouns.

It is how natural languages work after all. If we don't have a verb for something, we can make one up. If we don't have a noun for something, we can make one up.

In computing, the verbs (loosely) map onto algorithms and the nouns map (loosely) on to persistent storage. If you make up new verbs you have to change algorithms - software. If you make up nouns, you just change the persistent storage space.

The latter is a whole lot most cost effective than the former.

So REST wins. QED.


To print or not to print, that is the question

    In my ideal world, every web page would be a true web page optimized for online reading. In the top right hand corner of each of these web pages would be a PDF button that would generate, on the fly, a serif font PDF for the current page or the current group of pages. -- To print or not to print, that is the question

Friday, October 06, 2006

Use the (Open) Source, Luke

Use the (Open) Source, Luke.

Happy Birthday Plone

Plone is five today. Happy Birthday. If you need a content management system that has lots of plug-in bits'n'bobs; that has a flexible framework for doing custom stuff; that is free; is open source; works on Windows and Linux and Solaris..and you want all this right now here

Thursday, October 05, 2006

Came so far for...

Last night was an evening of Leonard Cohen Songs at the Point Depot in Dublin.

In a nutshell: disappointed.

I realise that every rendering of a song/poem is an interpretation but some interpretive Rubicons were crossed last night.

First the bad news. Some songs that I'm so fond of from the great man's works I feel almost *posessive* about the originals were not so much "interpreted" as "hung, drawn, quartered, dessicated, packed into 10 gallon drums and dumped into the malodorous Liffey.

The good news. Some of the interpretations came off well. Some very well. The reggae version of Joan of Arc worked. Tonite Will Be Fine worked. Lou Reed's mostly loud and metallic contributions were shockingly new but, in time, I suspect I would get to like them.

Luckily, at the the times the show lagged, Jarvis Cocker, Nick Cave or Julie Christensen
would arrive and rescue matters with something beautiful.

All in all, if it was on again and the set was going to be the same, I'd turn up at the interval and catch the second half.

Oh and on the instrument side. The saw...I don't think it helped.

Tuesday, October 03, 2006

Innovation through constraint

    "And now comes my horrible, tentative conclusion. The best way to foster innovation in an engineering crew is to give them a set of constraints." -- Innovation through constraint

Sunday, October 01, 2006

webcameron, irishelection...

Two blogs I found recently have driven something home to me:

Its not just the field of politics of course. This is just an example. Blogging is truly steaming ahead, leaving its geek roots behind. Kids will grow up thinking that blogs and the web are all part of the same thing and will think that that was always the case. Always part of the original picture.

Amazing. Isn't it?

Saturday, September 30, 2006


Overnight (or so it seems), all main roads around my house have acquired signs that say "Welcome to Bréifne".

I never heard of it until I looked it up a few minutes ago. Turns out that starting about 900 years ago, my house was in a kingdom ruled over by people with names like "Tadhg na gCaor mac Ualghairg" (1352-1376) and "Brian Og na Samhthach mac Briain na Murtha" (1591-1600). A full list of my former lords can be found here.

The website is

Note to geek visitors. The signs on the road say http://www.bré which will not be right until rfc3987 kicks in.

Its a marvelous night for a moon dance

I caught this on TV some weeks ago and now I see it on the net. A real live bird doing a real live Michael Jackson-esque slide. Very funny.

Shared Nothing: the next big issue for UCAs (Underdogging Chasm Activists)

You know the drill. Some problem X occupies the minds of those geeks (who are paid to/who can afford to/who cannot but) spend time looking over the horizon at what is coming next.

For each problem X, a family of possible approaches jocky for position on the leaping side of the chasm

From time to time and underdog actually ends up winning. From time to time and underdog ends up winning REAL BIG.

Maybe HTML/HTTP is the biggest WIN BIG underdog of all time. In its day, TCP/IP was an underdog. So was the concept of a PC. So was RDBMS...

In technology (and in sport come to think of it) I have the genetic marker that predisposes me to root for an underdog pretty much every time. Call it a character flaw if you like.

I've spent (and continue to spend) time shouting across the chasm wearing the tee-shirt of some underdog: SGML, Python, Desktop Ubuntu, REST...

Those are the happy memories because, to varying degrees, I've seen these progress across the chasm. (Ok. On the way, SGML was stripped down and renamed to XML but that is just a detail.)

Mind you, I also spent some time rooting for underdogs that never made it. Like a gambler, I'm better at remembering the good times rather than the bad times.

I rooted for Clipper[1]. I rooted for SMART (a DOS based 4GL so old I cannot find a href to it!). I rooted for DSSSL. I rooted for Lotus Improv...

I'm still very hopeful about underdogs like temporal decoupling/SEDA, Jython, Relax NG, semantic steganography, XML pipelining...

Anyway, the reason for this post is that as a fully paid up Underdogging Chasm Activist (UCA), I have a new tee shirt. Waaaayyyyy out there on the encumbent side of the chasm, truly embedded in current thinking about s/w is the concept of a thread and the concept of shared resources across threads and semaphores and spin locks...

My latest t-shirt claims this is not the way to go. Programming is hard enough without lacing the entire exercise with deep non-determinism.

My latest t-shirt claims that a "shared nothing" model baked right into the programing language - such as that epitomised by Erlang - is a much saner way to deal with the phenomenal processing power of tomorrows 80 core processors.

Yes, you can layer a shared nothing architecture on top of a language that does not hand-hold you towards a shared nothing design, but the scope for error is huge. Remember the days of malloc anyone? Same idea. You can do sane memory management in C but the scope for error is high. Too high given that s/w enineering needs more practitioners than there are coding gods.

Anyway. Here I am shouting across that chasm. Shared Nothing is the future folks.

[1] Fans of code blocks looking at, say, Ruby, might like to read about the history of code blocks in Clipper.

Thursday, September 28, 2006

On Javascript

A variety of scent trails lead me to Dreaming in Browser Swamp. It is a fun read, reminds me of twenty first century applets in parts. But I'm not sure I agree with some of it.

Steve is not a fan of the "lame-ass toolkit" approach of generating JavaScript. I dunno. Feels like a bootstrap opportunity to me.

1) Lots of v. ugly JavaScript needed to make an app work across a range of disparate browsers
2) Crystallise an abstraction over those browsers in the time-honoured GUI toolkit tradition
3) Write programs to the abstraction using language FOO
4) Compile down to JavaScript or translate on the fly so that all the browser sees is the JavaScript, perhaps after browser sniffing/CONNEG on the server side.

IF the abstraction takes hold, tools to work directly with the abstraction will take hold and eventually browsers that work directly with the abstraction will appear - obviating the need for the downtranslate to "legacy" Javascript.

Somehow, we gotta find a way to clear out the swamp without closing down the fairground. This seems like a reasonable approach to me.

Steve also makes a case for the ecomomic superiority of a single language that supports declarative programming. He is right on the money that the only way that this one-size-fits-all model will work is if it supports declarative programming. I'd go further and say that the key requirement (again a bootstrap argument) is the support for DSLs.

For me, it is the DSL bits of Ruby that are truly interesting vis-a-vis Python or Scheme. The Scheme/Lisp approach to one-size-fits-all falls into the particle physics trap I think. (The layers of abstraction you pay for the homogeneity of everything is too high.). (Think RDF applied to a programming language and you get the general idea.) Ruby mangages to keep fairly intuitive and clean syntax in the DSLs which, I think, is an important lesson for all language communities.

So, here is a strawman grand unifying theory:

XML = a DSL for data that validates and compiles data into tree structures. (think about it.)

FOO = a DSL for web programming at compiles programs into 21st century byte code called BPIJ (Browser Platform Indepdent Javascript)

FOO here is a placeholder for one of todays languages or some yet-to-be-created language.

Now here is the big question: why have FOO and also XML?

If FOO has excellent DSL capabilities then doesn't the difference between code and data dissapear in the blue smoke of logic?

I think the answer might be "yes" as long as the DSL features of FOO hit the right 80/20 point between expressive power and ease of expression.

Wednesday, September 27, 2006

The usefulness of e-mail bounce

I have a gmail account with a name that you can probably guess. There are many other people in the world with my name. It is very easy for somebody trying to email another Sean McGrath to e-mail me on gmail by mistake. Over the last while I have received 2-3 of these.

With company-centric e-mail addresses, you have to be more unlucky to send an e-mail to the wrong person. With gmail, pretty much every common name you can think off is registered to someone, somewhere Therefore, the positive feedback associated with a bouncing e-mail - the loud and clear "No such person at that address buddy", doesn't happen with gmail.


Beautiful South/Leonard Cohen: Anhydrous Wit and Humour - Trip Report. Going off the deep end interpreting Leonard Cohen lyrics. Trip report.

The Beautiful South played Castlebar last night and a good time was had by all. There is something delicious about the way they take boulder sized lumps of acerbic wit/irony/social commentary and strap them to the back of tuneful, stompin' pop ditties which they then belt out in a wall-of-sound kind of way.

I can go for years without attending a live concert and now two come together in successive weeks. Next week the literary content quotient gets ratcheted up considerably at an Evening of Leonard Cohen Songs at the Point in Dublin.

Ideally of course it would be Leonard Cohen himeself. Doubly ideally, I would buttonhole him back stage and ask for a detailed explanation of this:

    Then I came back from where I'd been.
    My room, it looked the same -
    But there was nothing left between
    The Nameless and the Name.

A critique of nominalism?
Frege/Russell-esque denotation?
Kripke/Putnam Causal Theory of Reference?
The Heideggerian pre-ontological background on which Daisen formulates Being?

Maybe its just a love song. I should probably lie down.

Tuesday, September 26, 2006

Does work actually flow?

    "I posit that somewhere in the rolling green hills of Tumbolia there is a valley chock-full of machine readable workflows that have been abandoned by the organizations that created them." -- Does work actually flow?

Saturday, September 23, 2006

Nervy time for all laptop users

I dunno if this story (complete with scary picture) of a post-explosion Thinkpad is T or F but I suspect it is T.

It appears that the battery involved was not the original but that is just a detail at this point I think. The battery industry has a problem, therefore the laptop industry has a problem. Period.

Maybe I'm looking in the wrong places but I'm not seeing fantastic positive action and leadership-from-the-front on this issue out there amongst battery manufacturers.

I have a Thinkpad. I use it as my main machine. In other words, I use it all day, every day. Not just when I'm travelling. Its my main s/w dev box, my main doco box etc. It is plugged into the mains in my home office as I write this. I leave it on 24x7.

Have I a fire hazard ticking over in my house now? Does the risk of dodgyness in a battery decrease with longevity of the battery or get worse? Should I switch off my machine overnight?

Until such time as I know more, I think I will.

Friday, September 22, 2006

No Cork Accent?

I stumbled on the speech accent archive today and of course, I went straight to Ireland to check out the samples.

The south seems a tad, um, unrepresented.

To be representative of the diversity of accents in Ireland one would need to add a Dublin, a Cork and a Kerry at the very least, to the two samples already there.

The difference between, say, a Donegal accent and, say, a Cork accent is waayyyyy bigger than the physical separation of 200 miles or so would lead you to believe.

Thursday, September 21, 2006

Python 2.5 and a look at the Python book scene

The last few weeks have seen some interesting announcements in the Python world. IronPython going 1.0 caused a stir. Now Python 2.5 final has been released.

I see a Python for Dummies book just released.

Also, I note that a Python book now trumps all the Monty Python stuff to the first search result on Amazon. I remember having to scroll to page 3 or so to encounter a Python programming language book.

On Python books: I don't know how up to date it is but is a good place to peruse the range of Python books available.

Wednesday, September 20, 2006

A scientific fraud?

Wow. Maybe I'm just out of touch but I don't remember the whole cold-fusion/Fleischmann/Pons thing as an incident of fraud. 10 scientific frauds that rocked the world. Was it?

Astrology. Science. Hmm.

Here is a list of books in the Science category...

Adverts? What adverts?

    "With DVRs, advertisers can no longer rely on simple models for calculating eyeball counts. How many TV's view the advertisements with no eyeballs at all? In other words, how many of those eyeballs have become mindless DVRs, recording the advertisements only so that the human being can fast forward right passed them?"Stay tuned. We will be right back after these.

Sunday, September 17, 2006

Parallel port printing (Ubuntu) Linux

If you are having problems getting your VMWare on (Ubuntu) Linux to print to old fashioned centronics (parallel) interfaces, this is the page for you.

I followed pretty much everything on that page but in my setup I was being caught out by the fact that CUPS appears to load the lp module, so I need to both stop the CUPS daemon and rmmod the lp module in order to free up the parallel port parport0 for vmware.

Saturday, September 16, 2006

Scanning - for the first time in years

For the first time in years, I found myself needing to scan a page this morning.
For the first time in years, I powered up my HP ScanJet 3300C.
It last saw action (if memory serves) when Windows 98 was the lastest thing.
For the first time ever, I plugged it into my Ubuntu box.
It worked.
First time.

I kid you not.

No driver madness.
No hair pulling.


Friday, September 15, 2006

Blessed are the babelfish

So this a.m. I install the 5 updates that my Ubuntu Dapper box tell me are available. I note new kernel stuff coming down...

I reboot to finish the install and all is well except my VMWare server won't boot.

Hmmm. I hate these moments. The brow furrows. Coincidence? Co-Occurence? Causal connection?

I run with the latter theory. I run vmware from a terminal window to watch for messages spewing out the exhaust pipe. Something called "g_get_language_names" is either borked or has done the borking.

I google "Ubuntu VMware g_get_language_names".

I get a hit on a Spanish page. It looks like it might be a fix but I don't read Spanish. I get the page translated.

Yup. That fixed it.


Wednesday, September 13, 2006

Outsourcing the middleware layer

    "Middleware tends to be just plain hard. Middleware tends to be expensive. Middleware must work all the time which can make it very expensive indeed. Middleware tends not to be the core business of enterprises that depend on it (except of course, the vendors that sell it.). So, it is expensive, complex and not a core competency. What does that add up to?" -- Outsourcing the middleware layer

Friday, September 08, 2006

Thursday, September 07, 2006

When all you have is a hammer...

I've been reading some Heidegger recently. For no good reason, these popped into my head this a.m. so I'm writing them down before I forget them.

They made me chuckle for a second but then again, maybe I'm just plain odd :-)

    When all you have is a hammer, everything looks line a broken referential totality.

Or, veering towards the East:
    When all you have is a hammer, you cease to have a hammer.

Have glue. Will travel.

Fact: most applications are built by combining existing applications and/or existing libraries of code.

Fact: a critical component of programmer productivity is the ability to re-use existing knowledge as well as existing code.

Fact: programming languages - especially general purpose programming languages - are examples of re-usable knowledge.

Intermediate Conclusion:
Having a "glue language" that you can use everywhere you work now and everywhere you might work in the future, from Linux to Windows to Mac to JVM to .NET to System 390 mainframe to Mobile Phone is a honkingly good idea.

Suggestion: A glue language that flows around all your existing libraries and integrates seamlessly with the feature of the local platform is a very, very desirable attribute of a glue language.

Fact: Python (or CPython if you like) runs... well, everywhere.

Fact: Jython does a stunningly good job of seamlessly integrating with the JVM platform.

Fact: Python is becoming so pervasive and so well known that it is now bordering on the (gasp) "safe" categorisation for even the most conservative enterprise application development.
(Newsflash: Python has been a completely safe bet for years now but it has taken time for the news to trickle all the way up.)

Fact: IronPython is now at version 1.0. .NET fans of my acquaintance say it features fall-off-your-chair-type excellence.

Final Conclusion:
I'll leave that up to you.

Tuesday, September 05, 2006

Menu Option Judo

    "Armed with enough options, your application is not only impervious to blame attacks, it is seen as being more powerful to boot. You cannot lose." -- Menu Option Judo

Wednesday, August 30, 2006

Picking an MP3 player for geeking it up on the road

I have taken to downloading lots of audio lately, ranging from conference talks on the philosophy of mind, through to classic novel audiobooks. I listen to this stuff in the car, playing it out through the speakers using a casette adapter.

I have a hard disk based MP3 player but I decided I wanted a flash-based MP3 player that I could just plug into my Ubuntu box and copy MP3 files across to it. No drivers, no GUIs, thank you very much.

I wanted it to be powered by AAA batteries. I can get these in every little shop I might pass by in my car. I don't want yet another cable that connects to the cigarette lighter or requires me to boot up my laptop to syphon power from the USB.

For bonus points, I wanted something that I could pause, say, 30 minutes into a 1 hour audio talk and then resume at that point.

I wanted something "reasonably cheap". Although that phrase is almost devoid of meaning in any context in ireland.

I ended up taking a risk on a LOGIK 1GB MP3. The chap in Dixons was not able to tell me much about it because, as a Linux user, I was clearly some mad extra-terrestrial anarchist with a beard. He had fact after fact for me about Windows XP though.

Anyway, it works great. It just works with Ubuntu. The controls are simple and not those "trendy" ones aimed at 16 year olds with Barbie doll-sized fingers, perfect coordination and perfect eyesight. I can hit pause and - as long as the battery holds out - I can resume at the same point. Perfect for 1 hour breaks in restaurents on a long road trip. My hard disk MP3 player used to shut itself down after 10 minutes. Grrrr.

Tuesday, August 29, 2006

If 80 gigs is enough, then...

"Wouldn't it be great if copying an 80GB hard disk bit-for-bit was something you could do with a stand-alone device selling for a few hundred dollars and perhaps conveniently located for pay-per-use in shopping malls and airports?" --
If 80 gigs is enough, then...

Thursday, August 24, 2006

Invisible, silent background backup of key files every day

I have made a little tweak to my backup strategy on my Thinkpad T42P that runs Ubuntu.

The way I see it, the bit most likely to go kaput is the hard disk so copying key files off of the hd every day is a good idea.

Now, I'm not guaranteed to be online all day so backing up to the cloud or the mother ship is not always an option. I don't have a floppy drive and even if I did, it would be too small. I have USB slots but memory sticks protrude out of them. I end up taking them out of the slot to put my machine in its bag yada yada. I have a CD-RW but I cannot dedicate that to doing backups as I use it during the day for other stuff.

Soooooo...I got a 256MB Compact Flash thingy and put it in a PCMCIA adapter. It sits completely inside the form factor of the T42P which means I can slot it in and just forget about it.

Cron now takes a backup every day of my key files to the CF. Unseen, unheard and completely hands (and thought) free. All I need to do is remember from time to time to check the log to make sure its still working as planned.

This is not a substitute for using online backup daily of course. After all, if my laptop gets stolen the CF is gone as well as the HD. But it does give me the confort of knowing that all my short-cycle backup eggs are not in the same basket.

The only fly in the ointment is this thing about CF devices having a write limit. I'm not sure how many write operations I expend in copying about a dozen files and I don't know what the magic number write limit on my card is yet.

If anybody is interested, setting up the CF on Ubuntu was just a matter of adding this to /etc/fstab:

/dev/hde1 /media/compactflash vfat defaults 0 0

The device appeared as hde1. I created /media/compactflash as a mount point. And off it went.

Quick: How many planets are there in our solar system?



So now New Horizons is heading to a large asteriod I guess.

Time to break out the global search and replace tools.

Wednesday, August 23, 2006

Microformats are beautiful

Eve has a great writeup on this years XML Summer School in Oxford, complete with some pics. Eve mentions that I defended Microformats and at one stage described them as "beautiful".

Yes I did say that and yes I meant it! My reasons for believing this are not written down anywhere yet but they will be some day. They will include:-

  • thoughts on the semiotics of markup and the (merely) apparent ontological distinction between element type names and attributes for semantic denotation.
  • thoughts on the human psychology of content creation, publication and viewing
  • thoughts on the application of steganography to document semantics using fixed-schema viewers (e.g. browsers)
  • thoughts on the underwhelming takeup of client side XSLT transforms
  • thoughts on the diachronic nature of "correctness" and implications for the use of CF grammars to capture "correctness"
  • thoughts on the linguistics of XML Grammers and a comparison with Chomskyan Universal Grammars versus actual language usage
  • thoughts on the Wittgensteinian aphorism that "language is use" and how it can tell us a lot about how real world instances of artifical computer based languages work and where their true semantics come from.
  • thoughts on the concept of document "validation" as a continuum rather than a discrete yes/no metric.
  • thoughts on comparing the resistance to microformats to the resistance 10 years ago to XML from some quarters of the the SGML world
  • thoughts on comparing the resistance to HTML 15 years ago from some quarters of the the SGML world
  • thoughts on the non-draconian validation model of browsers
  • thoughts on the lessons we can learn from HyTime versus HTML about the power of powerful esign pattern of "leaving stuff out".
  • thoughts on the applicability of the microformatting concept to any fixed-schema editing environment
  • thoughts on the application of XML process pipelining to "have our cake and eat it too." in a microformat-centric world.

All of which will be fun, if time consuming to write. For now, I will just say this:

  • Microformats are happening. Deal with it.
  • Remember that Worse is often better.
  • Remember the S curve of Disruptive Technologies
  • A complex ssemantics-driven publishing system that works is invariably found to have evolved from a simple ssemantics-driven publishing system that works. (With apologies to John Gall of Gall's Law fame).

Tuesday, August 22, 2006

Monday, August 21, 2006

Django gets the nod

It is reported that Django has just become *The* Python Web Framework. Interesting. Buzz was certainly heading in that direction and the buzz will now become louder I suspect.

I'm happy that one of them has been chosen. We have no way of knowing how many would-be Python developers over the years have looked elsewhere because of the "primordial soup" feel that the vista of Web App Frameworks presented.

Don't get me wrong, having lots of diversirty and choice and innovation is fundamentally good. However, for the newbie, healthy diversity in an ecosystem can be interpreted as chaos. The trick is to get the newbie "in the door" with the simple picture of order and clarity. Then they will be suitably adjusted to appreciate the diversity that thrives underneath.

Unfortunately, we will now see some silver-bullet syndrome in action. Apps which are perfect candidates for Zope/Plone being developed on top of Django because Django is The Framework, is one possible outcome.

Parenthetically,isn't it just plain gobsmackingly weird how object databases just cannot get a hold in the mainstream computing mindset?

Friday, August 18, 2006

Prime numbers are randomly distributed

Not. I might have blogged this before some years ago...I recall seeing it before.

I stumbled upon it today using - a service to which I am becoming rapidly addicted.

Wednesday, August 16, 2006

Tuesday, August 15, 2006

The (non) wisdom of crowds

    "So, rather than competition driving true technical innovation to greater and greater heights, market forces can distort innovation necessitating a slavish attention to the simplistic metrics the market has adopted. " -- The (non) wisdom of crowds

Monday, August 14, 2006

Did you send me an e-mail in the last two weeks?

If so, I might not have got it. I'm gradually assembling evidence that something bad happened to e-mail heading my way during first two weeks in August.

Please resend any e-mail sent during that period.


The XML Summer School 2006

The XML Summer School was very interesting and enjoyable again this year. Highly recommended.

This year, I talked on the subject of Web Services and SOA.

At some point during my talk, Paul Downey took a photo.

Sunday, August 13, 2006

JINI, Asynch Message Queuing and all that temporal decoupling stuff

An old hobby horse of mine this temporal decoupling thing. I cannot help beating on that particular drum as I see it as a really important concept that deserves to be better known.

Take a squint at OSCS for example. Using Amazon's S3 to splice a JINI-style asynchronous IPC layer into your application with very little heartburn compared to actually using, say, JINI locally. (JINI is powerful stuff but the last time I set it up, it cost me a week. Things may have improved since then.) This sort of infrastructure is a pain to set up and costly to keep running. If the cloud can do it for you...

Then there is the idea of using this layer to build an async message queue abstraction and using the message queues to orchestrate scalable web services where the processing can be done on any old machine (or machines) while the message queue layer, hosted in the cloud, does all the scalability/reliability etc. etc. Again, if the cloud can do it for you...

There are some patterns here which will grow in importance and popularity over the next few years. Are we seeing the virtualisation of the middleware layer? The outsourcing of the "ilities" of web apps?

Obviously, for some application areas this sort of out-sourcing of the middleware layer will not be a runner but for other application area, I think the whole area has significant legs.

To be provocative : A trendy new mashup without an asynch message queue handling all that nasty non-functional aspects of application design (like scalabilty, reliability, availability etc.), is either (a) only half a mashup which will generate blue smoke if (shock horror!) it becomes a success or (b) a full mashup that is way too expensive to operate and run to be around for the long run, unless its owners get subsumed into some mothership or other.

Saturday, August 12, 2006


At the recent XML Summer School I mentioned SEDA - Staged Event Driven Architecture - as an interesting approach to temporal decoupling a form of decoupling which I believe is vital to any non-null definition of SOA.

I think of it now because it is relevant to Restaurants, roller coasters and randomly failing web applications.

Who you are

A while back I asked "Who are you?.

I recieved somewhere in the region on 40-50 replies via various media. Here is a distillation.

  • You are interested in Python/XML/Web Services/SOA and a goodly number of you are interested in broader areas of dynamic typing/information integration/distributed systems.
  • Many of you like the ITWorld articles citing humour, interesting/odd-point-of-view and writing style as reasons.
  • You mostly work in IT in the commercial sector
  • You live in North America/Europe

Thanks to all who replied.

Fast pipe. Always on. Get out of the way.

    "I used to think that it was only a matter of time before the web was 'fixed' to provide reliable message exchange functionality without which, B2B message exchange on the Web would be impossible. I do not think that any more." -- Fast pipe. Always on. Get out of the way.

Restaurants, roller coasters and randomly failing web applications

Sunday, July 30, 2006

Planned downtime notice

This blog will be down for the next two weeks in order to facilitate the rebuilding of the tattered synaptic interconnections of its author.

Normal service will resume third week in August.

Friday, July 28, 2006

Microformats : Watch this space

The Progress and the Promise of Microformats.

For decades now, well meaning theorists, architects and engineers have struggled with the problem of allowing electronic content to serve two needs : human readability and machine readability.

For decades now, initiatives to create structured content vocabularies have come into existence, burned brightly in the full glare of enthusiasm+publicity only to then fade away into obscurity. I would guess that of all the SGML, XML vocabs I've come across over 20 years, 0.001% of them have actually made an impact.

Now, you could argue that it is still "just a matter of time" until the tools improve to the point where the glorious future of semantic content creation/publication - as originally envisaged - can be ushered into the mainstream.

Or, you could argue (as I do) that maybe - just maybe - there is something fundamentally wrong with the way we have been trying to enable the creation/publication of semantic content.

Right now, people - ordinary people - are getting excited about microformats. For the first time *ever* ordinary folk are now motivated to start adding semantic information to their content.

We SGML/XML folk should welcome it with open arms and help out where we can rather than look aghast at how microformats work.

Semantic markup is happening at last. Surprise surprise, it is not taking the shape that we had anticipated.

Thats life.

Viva la vie.

Tuesday, July 25, 2006

Master Foo on Web Mashups

Monday, July 24, 2006

PyPy sprint in Ireland

PyPy sprint in Limerick in August. I might try to get there for a day if I can.

Saturday, July 22, 2006

XML Summer School

The XML Summer School in Oxford starts Monday. I'm speaking in the WS/SOA track on Thursday and I will be asking the key question : "If you had an SOA, how would you know?".

Friday, July 21, 2006

Ubuntu 6.06 - a mixed bag upgrade

After my recent up-close-and-personal encounter with the Second Law of Thermodynamics I took the opportunity to upgrade to Ubuntu 6.06 on my Thinkpad T42P.
First the bad news:

  • Printing to my trusty HP1100 now stops between jobs for no obvious reason. CUPS errors messages cryptic, malfeasant, childish - take your pick.
  • Sensing my external monitor in the docking station does not work well. Claiming that 1600x1200 at -21992 Hz is the only available setting.
  • Very occassionally the mouse locks up when in the docking station. Threatening to shut down by pressing the off switch on the laptop seems to bring it to its senses reliably. (Yes, I discovered this 'fix' by accident.)
  • Sound and video is giving me plenty of grief. Somehow ALSA PCM got disabled. (Thanks Vish.). I now have MPEGs playing and sounding okay on the laptop screen but now I have sound but no video when in the external docking station. Sigh.

Now the good news:

  • My VMWare setup is better that it ever was. I now have network access + paralell port printing working under VMWare for my Windows XP Image. Very useful for the occasional foray into Windows I need to make. I could not get either to work before. Unclear how much of my woes in this area were down to VMWare funnies or Ubuntu funnies.
  • Lots and lots and lots of packages available. It will take me years to properly even survey all the stuff out there. Also, KDE-shaped apps seem to install under plain Gnome Ubuntu with less apt-get loquacity than before.

Thursday, July 20, 2006

Who are you?

(A wee experiment in asking a direct question soliciting straight answers. Possibly yielding raw material for a future ITWorld article and/or a blog post.)

Bloglines tells me that there are at least 456 of you at the moment. 456 subscribers to the feed for this blog that is.

Trouble is. I don't know who you are or why you are here. (Okay I know a little bit about some of you via haloscan, sitemeter and SYO). Maybe that is the way you like it and that is fine. If not, you could help satisfy my curiosity by dropping me a note on e-mail. (sean mcgrath. Replace the space with a '.' and append or adding a comment.

I will post anonymized stats here so that you can find out who everyone else is.

I am sensing some annoyance...

over on An entity that sooooo does not make audio recording software.

Tuesday, July 18, 2006

Machiavellian Machines

    "I find it interesting that one of the key techniques we use to make things "just work" also appears to be both present and at fault when things do not 'just work'. I speak of the concept of deceit." -- Machiavellian Machines

Tuesday, July 11, 2006

WIKIs - a tipping point for the Web?

    "Is the Web just a hyperlink's way of making another hyperlink in the same way that a chicken can be viewed as an egg's way of making another egg?" --
    WIKIs - a tipping point for the Web?

Sunday, July 09, 2006

Just for fun: World Cup Final Prediction

About this time during every world cup I get fed up listening to the predictions of the experts on the telly. Football is a simple game and anybody can play the pundit. That is part of its attraction.

Apparently a billion people will watch the game today. They can all laugh in unison at my prediction after the game if they want :-)

Here it is:

World Cup Final Prediction: Italy 1. France 0.

  • Fabio Grosso to score early in the second half.
  • Cannavaro to be man of the match.
  • Henry to miss a sitter to equalise in the dying seconds.
  • Zidane to be substituted after a bad knock to his right knee in a foul by Pirlo.
  • Scattered showers in Berlin, Mostly in the first half.

Friday, July 07, 2006


Google hires Plone founder. It would be easy to read to much into this and I probably have :-)

Thursday, July 06, 2006

Calling fellow Leonard Cohen fans in Ireland

I know that some readers of this blog are fellow Leonard Cohen fans.

Hal Willner's Came So Far For Beauty - An Evening of Leonard Cohen songs.

The Point, October 4th.

Tickets on sale from today.

Tuesday, July 04, 2006

The pain of threads

    "When I am down in the bowels of a software development project, I can easily spend 50 hours a week pounding at a keyboard. My wife tells me that when I am doing that, I wear a permanent look of complete puzzlement on my face." --
    Pain/Gain Thresholds in Software Engineering

Wednesday, June 28, 2006

Soccer 2.0

Is it just me or has this soccer world cup shown up an enormous disparity between the quality of the football and the quality of the refereeing? Games that are much more complex to referee such as Rugby Union are brilliantly refereed by comparison.

Look. It is a fast game. It is impossible for the ref to be ball-side of the action all the time. Suggestions for a Soccer 2.0:-

- Two refs - one in each half. That way, a lot more difficult to "blind side" the officials.

- Video playback ala Rugby Union when the refs are in doubt. It is ridiculous to have all this technology available and not use any of it. Tight offside decisions should be deferred until the ball goes dead and then adjudicated via video.

- Ex post-facto yellow and red cards where video evidence shows diving, head butting etc. etc. If players know that they will suffer for it if it is caught on video, they will change their behaviour. (No point in fining these guys - must use red/yellow cards that cause them to miss games. If you earn 100k a week as a basic wage, financial fines don't amount to much of a disincentive.).

- Ban players for long periods for persistent cheating. Nothing annoys me more than the "its fine to cheat as long as the ref does not see it" ethos of Soccer. Compare golf for example.

Finally, back to Rugby Union for a moment. In soccer, players regularly leave the field of play after a tackle or a bad fall. Michael Owen managed to badly mess up his knee without another player going anywhere near him!

I cannot help but contrast this with the likes of Peter Stringer. Here is a whippet of a guy, five seven in height. Not only does he regularly get positively pummelled in tackles but it is not unusual for a few 16 stone front row players to then sit on top of him.

He invariably just gets up and gets on with the game.

The contrast with soccer is striking. At least some of this must be psychological. Stringer goes into a game knowing he will be pummelled. I think that has a lot to do with it.

Tuesday, June 27, 2006

High quality paper publishing considered harmful

ActiveGrid and Jython

Peter Yared talks about the reasoning behind ActiveGrid contributing to the development of Jython.

Thursday, June 22, 2006

It is all about bits on the wire...

...when it comes to true distributed systems interoperability.

We need truly openn way to temporally decouple services on SOAs and doing that requires a substrate to provide reliable asynchronous messaging exchange. Hopefully AMQP will get traction and get done pdq. The world needs this yesterday. It amazes me that such a critical piece of plumbing has taken this long to bubble up on the Web on but there you go.

Truly open, interoperable protocols must come before the cutesy don't-worry-your-pretty-little-head-about-it-and-just-drag-and-drop APIs, if lock-in is to be avoided and open innovation fostered. Think SMTP. Think HTTP 1.1. Think XMPP.

Note to API-centric developers who read a lot of stuff vendor-driven about interoperability via their "open, standards based APIs": "No". JMS, WS-Relia*, Biztalk etc. do not do what AMQP sets out to do.

Wednesday, June 21, 2006

The next best thing to knowing something...

Monday, June 19, 2006

Hard disk Pachinko

Some time between Friday and Sunday my hard disk decided to go South and I don't mean to Kerry.

Sunday morning I hit the on/off switch on my beloved IBM T42P and I hear what sounds like my hard disk doing a bad impersonation of a Pachinko machine. I visualize ball bearings whizzing all over the magnetic media scrambling everything as I listen in horror.

Luckily my backup strategy is in reasonable shape.

I've lost a few notes I made to myself last week and some e-mails from Friday but nothing else that I can think of.

Fact: Hard disks fail.

Fact: Hard disks are getting smaller as well as bigger and cheaper.

Thought: Maybe the time has come to double up on hard disks in the laptop and run RAID 5 or something.

Wednesday, June 14, 2006

Typos, typos

Thanks to Jorn Barger for pointing out that I have confuzzled by kilobytes and megabytes something terrible in this weeks ITWorld article : a megabyte by any other name, would sound as sweet. I'll get it fixed.

Tuesday, June 13, 2006

A megabyte by any other name, would sound as sweet

Yup. My computers can get pretty hot too

Thursday, June 08, 2006

Ubuntu font magic

Via I came across a very useful tip for improving font appearance on Ubuntu. Details

Makes a remarkable difference for me. YMMV.

Sun T2000 Niagara Noodling Part 7

Part 6 is here.

A curious phenomenon in the computer industry is the differing dynamics driving the CPU makers and the RAM makers.

With CPUs, the emphasis has been on *speed*. Year on year, clock rates go up. Nowadays its measured in gigs. Not so long ago - Megs.

With RAM, the emphasis has been on *capacity*. With speed of access coming a distinct second.

The result has been that modern day CPUs absolutely *scream* along ... except for when they need to access such slow devices as RAM chips.

Real-world applications spend a lot of time accessing RAM, so much so, that processors can spend a silly amount of their total execution cycles waiting around for the tardy RAM to do its thing.

So here is the upshot:

  • We are building machines with fasters and faster processor clock speeds
  • As the speed goes up, so too do the problems of heat generation
  • As the speed goes up, the amount of time a box spends waiting on its RAM goes up
  • Consequently, pumping CPU speed is no longer the obvious solution to application performance problems

We need another way to drive performance rather than just look at CPU speed.

We need to find ways to make todays ultra-fast CPUs spend more of their cycles doing useful work and less of their time navel gazing waiting for RAM.

To do this effectively, we need to give each processor core the ability to switch between applications that are waiting around on RAM and do it quickly.

That is what chips like the T1 UltraSparc in the Niagara are all about.

Ask not how many seconds your application takes to process a record or an document. That is not the important question. The important question is how many records/documents your application can process in a second.

The second is a measure of *throughput*. The former is afflicted by von Neumann's Curse.

Next up: a look at threads - the obvious paradigm to feed cores with applications to switch between. As with everything else of course, its not quite that simple.

Sun T2000 Niagara Noodling Part 6

Part 5 is here

Between holidays and work commitments some time has passed since we set up the Niagara (Sun T2000) box and popped it on the network. Thankfully, I can see some light now where we can proceed to run some application tests.

First up: this is a 4 core box i.e. it has a single UntraSparc T1 processor and on that single processor there are 4 cores. Each core is basically a separate CPU (there are some subtleties here. We'll get to them later.)

So, I have a machine that the operating system will see as a 4 CPU SMP box right? Lets see...the mpstat command gives me a look at what all processors in a Solaris setup are doing. Lets try that...(abbreviated output shown)

CPU minf mjf xcal ...
0 0 0 52 ...
1 0 0 0 ...
2 0 0 0 ...
3 0 0 0 ...
4 0 0 0 ...
5 0 0 0 ...
6 0 0 0 ...
7 0 0 0 ...
8 0 0 0 ...
9 0 0 0 ...
10 0 0 0 ...
11 0 0 0 ...
12 0 0 0 ...
13 0 0 0 ...
14 0 0 0 ...
15 0 0 1 ...

16 processors! What gives? Did Sun give me a 16 core box by mistake? Is there a big gaping hole in this simple conceptual model?

The latter.

Here is the simplified scoop.

  • There is a single T1 UltraSparc Processor in the box

  • That single processor chip has 4 separate cores. The cores are *mostly* independent processors. They share a single FPU and they share an L2 cache.
  • Each core provides 4 hardware-implemented threads. Simply put, each core can switch in one instruction cycle between any of its 4 threads.
  • The hardware level threads are known as *strands*.

So, 1 T1 UltraSparc with 4 cores, each of which has 4 hardware threads (strands).

That is where the 16 processors comes from. 4 cores times 4 strands per core = 16. Solaris "sees" each strand on each core as a separate processor. When Solaris wants to schedule a lightweight process (a software thread) to run, it sees 16 virtual CPUs on which to do so.

Thats the simple version. Of course, its not that simple in practice. Getting the most out of a multi-core box requires digging down a couple of levels below this.

To see why its best to a segue into looking at the world from the perspective of one of those cores...

Wednesday, June 07, 2006

If identity security is really hard (which it is) perhaps we will all just hide behind faked up identities?

Just thinking out loud here. If technology makes privacy really problematic (as in the famous "Privacy is Dead. Get over it.") perhaps the pragmatic reaction of carbon-based life forms who value their privacy will be to use a plethora of makey-uppy identities. Modern day "nom de plume" by the boatload?
If privacy is dead, maybe identity is dead too?".
How many standalone identities have you already got right now for online services? Do you see that list diminishing or growing in the years ahead?
Where do genteel sounding "non de plume(s)"[1] stop and the problem-laden concept of "fake identities" start?

[1] Apologies to the beautiful French language for this egregious pluralisation hack.

Thursday, June 01, 2006

Web 2.0 -> Web 2.71828 18284 59045 23536 -> Web E

The term "Web 2.0" appears to be somewhat encumbered from a "Use it whatever way you want, just like 'GUI' or 'Network' or 'Asynchronous Messaging'" perspective.

Adding a digit, say "Web 2.1" (or should that be "Web 2.1rc1?" is an amusing workaround that has been suggested.

Lying in bed last night (Sleepless in Sligo?) and alternative occured to me. Better to pick a rev number that is irrational (in the mathematical sense). In fact, while not go the whole hog and make it non-algebraic too?

The obvious candidates for such transcendental numbers are PI and E...

And E happens to start with "2.". So we have, "2.1", "2.17", "2.171" etc. to infinity and beyond.

This abbreviates nicely to Web E which is naturally pronounced "Webby" which has a nice ring to it.

TeX users will be familiar with the idea of a version number that asymptotically approaches e as this is what is used in METAFONT.

Jython website gets a facelift

Congrats to Frank Wierzbicki on the new website. Very nice!

Ubuntu 6.06 (Drake)

Ubuntu 6.06 (Drake) has been released.

Desktop Highlights (excerpted from

  • A new, very fast, graphical installer based on the Live CD
  • Faster system startup and login
  • Simplified menu organization
  • Graphical shutdown process
  • Easy access to power management settings with GNOME Power Manager (Ubuntu)
  • Improved support for video playback
  • Optional NetworkManager for convenient roaming between different wireless and wired networks
  • 2.0.2, 7.0
  • Support for ongoing translation updates throughout the life of this release, for all supported desktop environments

Tuesday, May 30, 2006

Ubuntu Dapper on the Sun Niagara

Mark Shuttleworth announces the (very dapper) Dapper release of Ubuntu will support the UltraSPARC T1 (aka Niagara) architecture.

If I have the Niagara box long enough, I will certainly give that a try.

Work overflows have limited our investigations of the Niagara box for the last two weeks but we hope to get back to it before the end of this week.

First up will be porting (I hope that will prove too strong a word) Propylon's Jython-based XML processing pipleline engine and component library known as Griddle to the box.

From there, I have hundreds of thousands (literally) of ODF documents I need to process with as low a make-time as I can manage.

A mini-rant about document XML formats

Question: How many XML formats does the world need for documents?

Answer: N+1 where N is the number of document processing applications with functional differences that require peristent storage.

Why is this?: Because opaque binary file formats for documents (excepting sane non-proprietary binary files like zips etc.) is plain silly these days. Binary file formats Just say 'NO' and all of that.

Because applications differ in their data models whenever they differ in functional differences in their feature sets. This is all good. May a thousand flowers bloom as long as they all can persist their data to disk in an XML notation that I can process without recourse to some vendor-specific API. APIs can be harmful.

So what is the N+1'th document format? The interchange format. A format rich enough to retain as much of a document-centric data model that the N major applications can sign up to but not so much that the N major applications have no room to differentiate themselves.

The N+1'th format must be completely open, vendor neutral and everybody should have a say in how it evolves.

Why bother with all of this? Because the alternative is that one of the N becomes the N+1'th model too. A single application that owns both its own application space and the universal interoperability space for documents.

Not good. That is the world we have come from and we should not go back there.

Does it matter if M (where M < N) of these document models have standards-body-ratified XML schemas? Yes, because standards bodies should be operating in interoperability space, not applicaton space.

If multiple "standards bodies" ratify multiple interop schemas for documents then you have yourself a confusing standards war. Not good. Unfortunately, I fear that is where we are headed :-(

The Asymmetric Web

    "...Then began an awful period -- which continues to this day, sadly -- of companies developing intranet applications and then concluding, erroneously, that the application can be deployed on the Web by just flicking the proverbial switch..." [The Asymmetric Web]

Monday, May 29, 2006

ODF In Denmark

From September 1st, Government pubs will be available in ODF.

Hats off to the Danes.

Friday, May 26, 2006

Tuesday, May 23, 2006

Men are from Mars but website design happens on Venus

    "As soon as males get involved in building a web site, a distinct lurch from Mars to Venus appears to take place." Men are from Mars

Sunday, May 21, 2006

Ubuntu on the Sun T2000 Niagara

I run Ubuntu on my never-far-from-my-fingers IBM T42p laptop, as well as on a bunch of server boxes.

If we proceed with the Sun T2000 Niagara we have on eval at the moment, we will probably look at Ubuntu on it, now that Jonathan Schwartz and Mark Shuttleworth have shared a stage at JavaOne and announced an Ubuntu server for the Niagara.

Saturday, May 20, 2006

GWT and Twenty First Century Applets

Some time ago I wrote about JavaScript in a browser being a VM worthy of the name and perhaps the ultimate VM for deploying client-side code in a webby world (Twenty First Century Applets).

I had filed it under 'total conjecture' but Google's fascinating GWT means I need to revisit my filing classification for that article.

Of course, 2 picoseconds after I came across GWT , I came accross py-gwt. Subscribed.