January 2007

W3C Workshop on Enterprise Computing

The programme is out for the W3C Workshop on Web of Services for Enterprise Computing. Seems I’m first up in a morning of Web love from Mark, Mark and Hugo. Guess overlap is why Nick Gall of Gartner isn’t up to present, but make sure you read his paper. It’s a stormer!

To quote from my own, pretty robust, paper:

many of these scenarios span multiple organisations, which themselves can be quite fluid or virtual; capabilities may be bought in, outsourced or exposed as a product at very short notice to meet a business opportunity. In certain cases BT is required to expose services used internally in an equivalent form to competitors as a result of regulation. For BT, the term “enterprise computing” does not imply “within a single organisation”.

Yes, the Web is the answer to all your problems, now what is this “enterprise” thing of which you speak?

Technorati Tags: ,

Comments (0)

Permalink

WS-Irony

WS-I.org: Service Unavailable

Technorati Tags: ,

Comments (0)

Permalink

OpenID Does One Small Thing ..

But it does it pretty well: it lets your users use their own ids to login to your site. And that’s it. That way you don’t need to manage their usernames and passwords. But any further questions you might have about your user, like “who the heck are they“, “how old are they”, and “can they pay me” are left quietly unsaid. For now.

Technorati Tags: ,

Comments (2)

Permalink

Microformats Metaphor

Cool AOL’er Kevin laid down a challenge on Twitter for a non-technical definition of Microformats. Rather than a definition, I came up with a metaphor:

Microformats are standard colours on a Web page for common things such as “date”, “phone number” or “zip-code” which only a computer can see.

Technorati Tags:

Comments (0)

Permalink

Aliens Stole My Atom Feed

Valid-Atom

Something strange happened and for a while I was feeding you all pug-ugly RSS 2.0, but it’s hopefully back to gloriously Valid Atom 1.0 again, all be it with a couple of warnings from the embedded Google Video. Let’s thank Nic, for pointing that out.

Update: it was worse than that, thanks to an interaction between wp-atom10 and wp-cache I was serving it as text/html. Excuse me while I go to stand in the corner of the room.

Technorati Tags:

Comments (1)

Permalink

Whatfettle 360

A planet all about me, me, me: Whatfettle 360

Comments (0)

Permalink

BPEL Begone

Anne came out and said it, the BPEL Emperor must be feeling very chilly:

I think BPEL is fundamentally flawed. I don’t think an execution language is the right way to manage orchestration.

Testify! Give me a declarative choreography than imperative orchestration any day.

BPEL is so constrained in its capabilities that almost all vendors have had to extend it to make it do more than just simple orchestrations, and these extensions destroy any potential value that BPEL might provide as a “portable” process execution language.

Right, you’ll never be able to take your BPEL out of one “engine” and plug it into another one. A “standard” which doesn’t enable interoperability or portability is worse than useless, especially one this enterprisey.

Update: added a vote-against link pointing to the Wikipedia page, thus killing two birds with one stone ;-)

Technorati Tags: , ,

Comments (1)

Permalink

Why LinkedIn?

Like many people I’ve managed to collect a few nice scalps on LinkedIn, but often wondered why. Luckily we have Guy Kawasaki to help us feel like it wasn’t totally pointless after all.

Update: and now they publish your profile using the hresume Microformat. Cool!

Comments (1)

Permalink

A Moral Tale

Here’s a tale of woe from not so far away, not so long ago …

The board at Megacorp were unhappy; their IT was complex, rigid and brittle. The mess caused by years of building bespoke systems to meet the demands of “next week’s launch”, integrating new products, systems and architectures from companies being bought in, hived off and reorganised meant they could no longer do anything new without breaking lots of things old.

So the CTO looked to Bigvendor to save his job: “your ad-hoc unprofessional developers are to blame”, they said, “make ‘buy not build’ your mantra, embrace our best-of-breed package ‘Broom’, it’s only $$, and you’ll no longer have to be nice to all those badly dressed computing types.”

Unfortunately Broom didn’t quite work out of the box or quite do what it said on the tin, so a swarm of be-suited Broom $$$ consultants infested Megacorp to do the integration and indoctrinate all and sundry in The Way of The Broom. The bristle components were replaced with softer ones to work with Megacorp’s PineFlooring system and Broom’s handles were lengthened to deal with their tables.

Success! So Megacorp ditched most of its developers, the savvy ones leaving first of their own accord.

Meanwhile Bigvendor, who had been using its $$$$$$ wisely, released Broom 2.0 with stiffer bristles and a shorter handle incompatible with Broom 1.0’s.

With a new product on the market, Bigvendor and its consultants quickly lost all interest in maintaining Broom 1.0, especially where the customer has dared to change the bristles and handles.

It was only then that Megacorp realised it didin’t actually own its Broom 1.0 installation, or would ever find anyone able to fix it.

Moral: you have to be daft as a brush not to embrace Open Source.

Update: I’m reminded by someone in Megacorp that actual ratio between $$ and $$$ is estimated to be around 1:80. Oi Veh!

Technorati Tags:

Comments (1)

Permalink

Web APIs Are Just Web Sites

Warning

A short presentation on how you might like to build a simple “Web API”.

Updated: an accessible version with errata fixes and links:

  1. A Web Friendly API?
  2. Javascript AJAX Python Ruby PHP Perl Curl
  3. [Picture: collection of Web 2.0 logos from flickr, Google, Yahoo!, last.fm, etc]
  4. One thing in common ..
  5. They HATE SOAP
  6. But LOVE The Web
  7. URIs identify stuff
  8. And can be anywhere
  9. [photo of shower head with URI WWW.SPEAKERMAN.COM]
  10. Use cool URIs
  11. Read RFC 2616
  12. Constrain Verbs: GET/HEAD and POST (PUT, DELETE, OPTIONS - YAGNI?)
  13. Ask “IS IT SAFE?” [photo of the dentist from Marathon Man]
  14. Understand HTTP Methods:
    method     safe    idempotent   semantics    resource     cacheable
                 -----------------------------------------------------------
       GET       |  X          X            X           X             X    |
       HEAD      |  X          X            X           X             X    |
       PUT       |             X            X           X                  |
       POST      |                                                    *    |
       DELETE    |             X            X           X                  |
       OPTIONS   |  X          X            X                              |
                 -----------------------------------------------------------
       PROPFIND  |  X          X            X           X             *    |
       PROPPATCH |             X            X           X                  |
       MKCOL     |             *            X           X                  |
       COPY      |             X            X           X                  |
       MOVE      |             ?            X           X                  |
       LOCK      |                          X           X                  |
       UNLOCK    |             X            X           X                  |
       PATCH     |             *            X           X                  |
                 -----------------------------------------------------------
    
  15. think about representations: HTML, RSS/Atom, XML, JSON, whatever
  16. Warning! You are about to see Naked Protocol Headers!
  17. Content-Negotiation:
    HTTP GET ...
    Accept: application/weatherml+xml; q=1.0,
            application/xml; q=0.8,
            text/html; q=0.5
    Apache Server .htaccess
    AddType application/weatherml+xml wea
      Options +MultiViews
        ./index.wea
        ./index.xml
        ./index.html
    
  18. enjoy the free caching
    HTTP GET http://flickr.com/photos/psd/2450160
    If-Modified-Since:  Fri, 31 Dec 1999 23:59:59 GMT
    If-None-Match: 'guid-21343244324' 
    HTTP/1.1 304 Not Modified
  19. make Phone Call
    HTTP POST http://example.com/calls
    Content-Type: application/x-www-form-urlencoded
    Accept: text/xml; charset=utf-8 
    
    callingParty=tel:+447918808
    calledParty=sip:Merlin
    
    =>
    
    HTTP 1.1 201 Created
    Location: http://example.com/calls/123213
    Content-Type: text/xml; charset=utf-8 
    
    <callInfo>
      <callId>http://example.com/calls/123213</callId>
      <callStatus>Initial</callStatus>
    </callInfo>
    
  20. get Call Info
    HTTP GET http://example.com/calls/123213
    Accept: text/xml 
    
    =>
    
    200 OK
    Content-Type: text/xml; charset=utf-8 
    
    <callInfo>
      <callId> http://example.com/user/fred/calls/123213
      <callStatus> CallInitial
      <callingParty> tel:+447918880...
      <calledParty> tel:+447918880...
      <timeStarted> 2007-01-09 11:45:20
      <duration> 502
      <terminationStatus> CallNotTerminated
    </callInfo>
  21. end Call
    HTTP POST http://example.com/calls/123213
    Content-Type: application/x-www-form-urlencoded 
    
    callStatus=Terminated 
    
    => 
    
    202 Accepted
    Location: http://example.com/calls/123213
  22. list Recent Calls [Feed Icon]
    HTTP GET http://example.com/calls/feed 
    
    =>
    
    200 OK
    Content-Type: application/atom+xml 
    
    <feed xmlns="http://www.w3.org/2005/Atom">
      <title>Phone Calls
      <link rel="self" href="http://example.com/calls/"
            rel="alternate" type="text/html"/>
      <updated>2007-01-0911:45:02Z
      <author><name>Phonebox
      <id>tag:example.com,2007-01-09:/calls
      <entry>
       <link href="http://example.com/user/psd/calls/1234567/"/>
        <title>Call 1234567
        <id>tag:example.com/calls/1234567-200701091223313
        <summary>CallInformation
        <updated>2005-10-13T18:30:02Z
      </entry>
      <entry>
       <link href="http://example.com/user/fred/calls/17231667/"
        ...
  23. Overall:
    http://example.com/calls
    http://example.com/calls/feed
    http://example.com/user/paul/calls/feed
    http://example.com/user/paul/calls/7d6374da5
    http://example.com/user/paul/calls/search?callingParty=tel:%3A44791888
    http://example.com/sms
    http://example.com/sms/feed
    http://example.com/user/fred/sms/7d6374da5
    http://example.com/user/fred/sms/inbox/feed
    http://example.com/user/fred/sms/inbox/7d6374da5
    http://example.com/user/fred/sms/inbox/search?from=tel:%3A44791888
    ....
  24. Yes, Dear Reader, there’s no API as such it’s just yet another Web site ..
  25. Surf long and prosper!

Technorati Tags: , ,

Comments (24)

Permalink