<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="http://duncan-cragg.org/css/atom.css" type="text/css" ?>
<!-- Copyright (c) 2006 Duncan Cragg -->

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
    <id>http://duncan-cragg.org/blog/</id>
    <title>What Not How - Posts tagged 'xtech'</title>
    <subtitle>Duncan Cragg on Declarative Architectures</subtitle>
    <author><name>Duncan Cragg</name></author>
    <logo>/favicon.gif</logo>
    <icon>/favicon.ico</icon>
    <rights>All content including photos and images by Duncan Cragg. Copyright (c) Duncan Cragg, your rights preserved: see /CXL.html</rights>
    <generator uri="http://www.djangoproject.com">A Django Production.</generator>
    <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/" title="What Not How" />
    <link rel="self" type="application/atom+xml" href="http://duncan-cragg.org/blog/atom/xtech/" />

    <updated>2006-07-13T14:33:00Z</updated>


    <entry>
        <id>http://duncan-cragg.org/blog/post/right-way-to-do-ajax-is-declaratively/</id>
        <title>The Right Way to do Ajax is Declaratively</title>
        <published>2006-07-13T14:33:00Z</published>
        
        <updated>2006-07-13T14:33:00Z</updated>
        
        <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/post/right-way-to-do-ajax-is-declaratively/" title="The Right Way to do Ajax is Declaratively" />
        
        <category term="architecture" />
        
        <category term="xtech" />
        
        <category term="declarative" />
        
        <category term="web2.0" />
        
        <category term="microformats" />
        
        <category term="microsummaries" />
        
        <category term="ajax" />
        
        <category term="event-driven" />
        
        <category term="rest" />
        
        <summary type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>

Don&#39;t write your interactive Web application in custom
Javascript! The Web&#39;s Declarative nature needn&#39;t be
broken just because you want two-way dynamic data instead of
one-way documents on your site.
</p><p>
Instead, write Declaratively to generic Javascripts, plugins
and browser features such as 
<a href="http://domscripting.com/presentations/xtech2006/">Hijax</a>,
<a href="http://www.mnot.net/javascript/hinclude.html">hInclude</a>,
<a href="http://www.formfaces.com/">XForms</a>,
SVG, XBL, etc.
 &#160; ...
</p>

            </div>
        </summary>
        <content type="xhtml" xml:space="preserve">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>
</p><div class="summary"><p>
Don&#39;t write your interactive Web application in custom
Javascript! The Web&#39;s Declarative nature needn&#39;t be
broken just because you want two-way dynamic data instead of
one-way documents on your site.
</p><p>
Instead, write Declaratively to generic Javascripts, plugins
and browser features such as 
<a href="http://domscripting.com/presentations/xtech2006/">Hijax</a>,
<a href="http://www.mnot.net/javascript/hinclude.html">hInclude</a>,
<a href="http://www.formfaces.com/">XForms</a>,
SVG, XBL, etc.
</p></div><p>
This is the last of my 
<a href="http://xtech06.usefulinc.com/">XTech 2006</a>-inspired articles.
(I know: XTech was some weeks ago now, but I&#39;m sure you&#39;ll have
noticed that this is a &#39;contemporary article&#39; blog, not a news
blog!)
</p><p>
The theme for XTech 2006 was &#39;Building Web 2.0&#39;, and as a Web 2.0
Conference  
(<a href="http://www.flickr.com/photo_zoom.gne?id=153074441&amp;size=l">don&#39;t</a> tell 
<a href="http://radar.oreilly.com/archives/2006/05/controversy_about_our_web_20_s.html">O&#39;Reilly</a>),
there was tons of Ajax... And as this is essentially an XML
Conference, there was also a strong Declarative theme. 
</p><p>
And the right way to do Ajax <i>is</i> Declaratively!
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/206">Ajax Lightning Demos</a></b>
</p><p>
Simon Willison presided over this session.  The demo that
impressed me most was 
<a href="http://domscripting.com/presentations/xtech2006/">Hijax: Progressive Enhancement with Ajax</a>,
whose paper is 
<a href="http://xtech06.usefulinc.com/schedule/paper/29">here</a>.
</p><p>
Hijax takes the view that you should design for no Ajax, then
hijack the links, form posts and page construction in Ajax to
speed it up, rather than designing for Ajax in the first place
and excluding users without a capable browser. This is related 
to the <a href="http://microformats.org/wiki/rest/ahah">AHAH</a> idea.
</p><p>
So you don&#39;t build your application in Javascript, but simply
enhance the existing Web model, running all the page&#39;s behaviour
back on the server which owns it. Much more Declarative!
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/203">Web 2.0 On Speed</a></b>
</p><p>
<a href="http://www.mnot.net/blog/">Mark Nottingham</a> is one of those
people whose blogs are top of my feed list. He currently works
for Yahoo! This talk was about using some basic techniques to
ensure Web 2.0 doesn&#39;t grind to a halt with all those dynamic
and personalised pages. Simple fixes can get you very far:
faster servers like <a href="http://www.lighttpd.net/">lighttpd</a>,
various cacheing tricks, etc.  Yahoo! should be implementing
his ideas and insights on their sites (hopefully Mark will then
go on to tell their API designers how to do REST...)
</p><p>
The main idea that interested me was using Ajax for
client-side page construction (think client-side 
<a href="http://www.opensymphony.com/sitemesh/">SiteMesh</a>)
and for inserting personalised URLs into the page.
</p><p>
It&#39;s a bit like Hijax, that I mentioned above. Mark
<a href="http://www.mnot.net/blog/2006/05/16/web_2_caching">says</a>:
</p><blockquote class="others-content"><div><p>What I would like to see is for common JS functions like this
to be sifted out and standardised as declarative markup...</p></div></blockquote><p>
</p><p>
This is good stuff (assuming you agree with us that Declarative
is good!). See more in the 
<a href="http://www.mnot.net/blog/2006/05/16/web_2_caching">summary and slides</a>,
and in Mark&#39;s 
<a href="http://www.mnot.net/javascript/hinclude.html">hInclude proposal</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/19">Ditching the database: XML and the PHP webapp</a></b>
</p><p>
David Megginson basically said we should work in XML throughout
our web apps: cache XML as your datastore, keeping all the
little snippets that make up your pages - dynamic and static -
cached in memory, then just send XML snippets from the server
cache to the Ajax client to render, etc. This is rather like Mark
Nottingham&#39;s tip above on client-side page assembly to achieve
greater cacheability.
</p><p>
<a href="http://xtech06.usefulinc.com/schedule/paper/19">Paper here</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/189">Introduction to XHTML2 and XForms</a></b>
</p><p>
The flamboyant-looking and entertaining 
<a href="http://homepages.cwi.nl/~steven/">Steven Pemberton</a> of
the W3C presented a fast-paced and in-depth overview of XHTML2
and XForms.
</p><p>
Unless I missed something, it looks to me like XHTML2 has taken
a perfect trajectory between backwards-compatible concepts,
semantics and syntax and abstract idealism.  XHTML2 appears to
cleanly fix all the outstanding problems with HTML once and for
all.
</p><p>
Now, part of XHTML2 is XForms. XForms does the same cleaning up
job on HTML forms that XHTML2 does on HTML. 
</p><p>
The important thing to know is that it works as an XML &#39;schema
constraints engine&#39;. That is, it returns to the server a
fully-semantically-valid chunk of XML on a form submission.
The &#39;schema&#39; can include some static data pulled in from
a separate URL to populate drop-downs, etc.
</p><p>
Yet it is more than this: I asked if it was Turing Complete,
and Steven said yes. You can program an application using it.
</p><p>
And that application will be programmed Declaratively!
</p><p>
I can define the constraint that some output element be
dependent on some input, then if the user changes the input,
the output changes accordingly.
</p><p>
It&#39;s like Declarative Ajax. There were further talks on XForms
which I cover just below.
</p><p>
Of course, I asked if it was RESTful, and it seems it was,
mostly. The issue was that a URL may bring you in an editor
XForms page, which then itself brings in some data underneath.
</p><p>
The editor XForms page is the bookmarkable thing but you don&#39;t
see the URL of the <i>populating data</i>, so that&#39;s not
bookmarkable.  The page may change according to this data, but
bookmarking what you see still only bookmarks the editor, not
the editor plus the current visible data.
</p><p>
Also, even though XForms is amazingly programmable, it is still
a forms system at heart. For example, you have explicit input
and output elements; you can&#39;t get input events off the DOM and
rewrite the DOM as output.
</p><p>
Slides <a href="http://www.w3.org/2006/Talks/05-16-steven-XHTML2-XForms/">here</a>.
</p><p>
Read more about XHTML2 <a href="http://www-128.ibm.com/developerworks/xml/library/x-futhtml2.html">here</a>.
</p><p>
Read more on XForms from Mark Birbeck (a Pemberton collaborator)
<a href="http://internet-apps.blogspot.com/2006/02/flickr-search-hello-world-for-ajax.html">starting here</a>.
</p><p>&#160;</p><p>
</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/137">Building Rich, Encapsulated Widgets Using XBL, XForms and SVG</a></b>
</p><p>
Mark Birbeck showed us how to create a Declarative client-side
mash of Flickr. OK, there&#39;s a tiny bit of script in there, but
I&#39;m sure it&#39;s unnecessary, as it only does some simple DOM
manipulation and event handling. Perhaps it can be replaced
somehow, or made part of a generic library.
</p><p>
<a href="http://xtech06.usefulinc.com/schedule/paper/137">Paper here</a>.
</p><p>&#160;</p><p>
</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/133">XForms: an alternative to Ajax?</a></b>
</p><p>
Since XForms is so amazingly programmable, you can use it
instead of Ajax.
</p><p>
Instead of coding a special script on top of an Ajax library,
you can bring in a 
<a href="http://www.formfaces.com/">generic (Ajax) script</a>
that gives you XForms today, and write your application
Declaratively on top of that.
</p><p>
Alternatively, you can do some pre-processing on the server,
which is the approach Erik Bruchez explained here.
</p><p>
<a href="http://xtech06.usefulinc.com/schedule/paper/133">Paper here</a>
</p><p>&#160;</p><p>
</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/93">The Power of Declarative Thinking</a></b>
</p><p>
This talk was more from Steven Pemberton giving us a little
history of his work and showing us how XForms can be used
for Declarative programming.
</p><p>
Some good quotes from the <a href="http://www.w3.org/2006/Talks/05-24-steven-declarative/">slides</a>:
</p><p>
</p><blockquote class="others-content"><div><p>.. a program that is 10 times longer is 32 times
harder to write.
</p><p>
Or put another way: a program that is 10 times smaller needs
only 3% of the effort. </p></div></blockquote><p>
And of course, the point is that Declarative programs are
usually 10 times smaller.
</p><blockquote class="others-content"><div><p>.. no one writes applications except programmers.
</p><p>
Interesting exception: spreadsheets
</p><p>
Mostly because they use a declarative programming
model.
</p><p>
The nice part about declarative programming is that the
computer takes care of all the boring fiddly detail.
</p></div></blockquote><p>
Now I&#39;m as aware as anyone of the dangers of giving
non-technical people the power to program. Spreadsheets are,
let&#39;s say, a mixed blessing.  There&#39;s probably a long way
to go before we can give the business the reins over their own
business rules.
</p><p>
But it will happen: it means splitting programmers into
(Declarative) Business Analysts and (Imperative) Those That
Enhance and Maintain The Underlying Processing Fabric. I 
can tell you now which group will get paid more.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/79">Standardising Web Applications: Rich Web Clients at W3C</a></b>
</p><p>
Dean Jackson gave a talk about what the W3C are doing to play
catch-up with all the latest goings-on in the Wide World of
Web 2.0.
</p><p>
Here&#39;s a quick list of things they&#39;re standardising:
XMLHttpRequest, Networking, Timers, Client-Side Storage, File
Upload, the Window class, DOM Level 3 Events and XPath,
Drag&#39;n&#39;Drop, Remote Events for XML (REX); XBL2, XUL (possibly
alongside XAML, MXML and LZX); Compound Document Formats.
</p><p>
Again, the magic word Declarative came up in the talk.
</p><p>
The Declarative aspects of Rich Web Clients centre around the
<a href="http://www.w3.org/2006/webapi/">DOM Level 3 work, Drag&#39;n&#39;Drop, Remote Events for XML (REX)</a>,
<a href="http://www.w3.org/2006/appformats/">XBL2 and XUL</a> and
<a href="http://www.w3.org/2004/CDF/">Compound Document Formats</a>.
SVG is a common theme between many of these (once again, Sam
Ruby is 
<a href="http://www.intertwingly.net/blog/2006/06/17/Inline-SVG">on</a> the
<a href="http://www.intertwingly.net/blog/2006/06/23/Sculpting-the-Future">case</a>).
</p><p>
The <a href="http://www.whatwg.org/specs/web-apps/current-work/">WHATWG</a>
is an independent collaboration of browser builders (Opera,
Mozilla, Apple) that has its own initiatives in this space -
including HTML 5 and Web Forms 2.0, the Canvas object,
server-sent DOM events, network connections, client-side state,
drag&#39;n&#39;drop, etc. They are happy to work with the W3C to ensure
compatibility and W3C standardisation.
<a href="http://www-128.ibm.com/developerworks/xml/library/x-futhtml1/">Here</a>
is an article covering some of these WHATWG ideas.
</p><p>&#160;</p><p>
<b>Other Declarative Browser-Driving Work</b>
</p><p>
When you look around outside of the Conference, you suddenly
discover numerous further examples of Declarative browser-driving:
</p><p>
<a href="http://www.tbray.org/ongoing/When/200x/2006/02/14/AJAX-Performance">Tim Bray</a>
has been stitching pages together with Ajax.
</p><p>
<a href="http://www.intertwingly.net/blog/2006/06/23/Sculpting-the-Future">Sam Ruby</a>
says Declarative is more mashable.
</p><p>
<a href="http://microformats.org/wiki/rest/ahah">AHAH</a> is &#39;Asychronous
HTML and HTTP&#39;, an apparent attempt to make a big deal out of
rewriting the DOM on receipt of an Ajax HTML response. Same ideas
as above.
</p><p>
<a href="http://blog.ingy.net/2006/02/jemplate_a_template_toolkit_fo.html">Jemplate</a>
looks like a similar kind of thing.
</p><p>
<a href="http://www.nexaweb.com/open/xap/index.aspx?id=382">XAP (Extensible Ajax Platform)</a>
is an interesting project that was given by Nexaweb Technologies
<a href="http://incubator.apache.org/xap/">to Apache</a>. Here&#39;s the elevator pitch:
</p><ul>
<li>Declarative rich user interface via XML;</li>
<li>Data binding for connecting UI to data;</li>
<li>Incremental update of web pages declaratively and programmatically;</li>
</ul><p>
</p><p>
<a href="http://www.readwriteweb.com/archives/widgets_are_the.php">Widgets</a>
intersect with this whole dynamic, client-side page-assembly
space. There are now numerous examples of commercial Widget
approaches.  Some Widgets may be driven by a Web Feed, some may
get their data from a Microformat or from a Web API.
</p><p>
<a href="http://my.opera.com/community/dev/widgets/first/">Opera Widgets</a>
are DHTML packages that break free from the browser and run on
the desktop.  The WHATWG 
<a href="http://listserver.dreamhost.com/pipermail/whatwg-whatwg.org/2006-June/006553.html">could even end up</a>
taking them as the basis of their play in this game.
</p><p>
Of course, we&#39;ve already seen how to do Widgets right, in Mark
Birbeck&#39;s talk above. In general, Compound Documents and
dynamic, POSTable 
<a href="http://duncan-cragg.org/blog/post/microformats-challenge-web-feeds-and-web-apis/">Microformats</a>
are the (Declarative) future of Widgets...
</p><p>&#160;</p><p>
</p><p>
<b>Declarative Meme</b>
</p><p>
We need the &#39;Declarative&#39; meme to consolidate and create a
movement out of all this, otherwise apparently disparate,
work.  Once we have a meme to gather around, we gain
collaborative and cognitive power from its mere existence.
This could work in the same way that the label &#39;Ajax&#39; itself
consolidated (and launched into orbit) techniques that a large
number of us had already been doing for months or years.
</p><p>
The &#39;Declarative&#39; meme also includes and extrapolates the
&#39;REST&#39; meme. REST is Declarative, but not something you may
normally associate with Ajax application programming. Yet
programming a dynamic Web interface Declaratively goes
hand-in-hand with the linkability, cacheability and mashability
of a RESTful back-end interaction, as Mark Nottingham and
others above have shown.
</p><p>&#160;</p><p>
</p><p>
<b>The Right Way to do Web Applications is Declaratively</b>
</p><p>
Specialist client-side Javascripts are a mistake. They break
the generic Web client model: hand-crafted thick clients are
hard to make cross-browser compatible, they add to download
times, they are tied to specific application servers, they
break the browsing experience (bookmarking, linking, history)
and miss the benefits of the Web&#39;s cacheing architecture.
</p><p>
We should be writing Declarative pages to exploit generic
Javascripts and plugins or extensions (such as SVG, XForms
and other Declarative technologies).  These generic facilities
will effectively extend the concept of the browser, from one
that deals primarily with one-way static documents, to one that
deals with two-way dynamic data.
</p><p>
After some time, the browsers themselves will be written to new
standards that make those browser-redefining Javascripts and
plugins irrelevant.
</p><p>
By a &#39;two-way dynamic data&#39; browser, I mean a browser that
constructs pages from several sources - several snippets,
microcontents and widgets.  It will show those pages updating
in real-time as those sources update.
</p><p>
It will be aware of the user&#39;s key and mouse events on the
visible DOM, and relay them back to the affected source, which
may in turn update - for everyone viewing the page.
</p><p>
Programming the behaviour behind the data can be completely
Declarative; rule-driven and event-driven. The programs will
run both on the server, where the Resources are owned, as well
as on the client, as in XForms.
</p><p>
I&#39;ve shown many examples in this article that are heading in
exactly this direction.
</p><p>
New Web (2.0) standards, that respect and extend Web
architecture, can one day replace hand-crafted thick client
scripts and generic scripts and browser extensions, allowing us
to program our dynamic applications Declaratively - directly to
a Web 2.0 browser.
</p><p>
Such a Web 2.0 architecture and platform will still be as
scalable and interoperable as the current Web architecture -
more so, in fact. And it will be much more fun to program for!
</p><p>

</p>

            </div>
        </content>
    </entry>
    
    <entry>
        <id>http://duncan-cragg.org/blog/post/web-20-and-our-digital-rights/</id>
        <title>Web 2.0 and our Digital Rights</title>
        <published>2006-06-23T17:58:00Z</published>
        
        <updated>2006-06-23T17:58:00Z</updated>
        
        <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/post/web-20-and-our-digital-rights/" title="Web 2.0 and our Digital Rights" />
        
        <category term="copyright" />
        
        <category term="xtech" />
        
        <category term="declarative" />
        
        <category term="web2.0" />
        
        <category term="socialsoftware" />
        
        <category term="digital-rights" />
        
        <category term="rest" />
        
        <summary type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>

<a href="http://duncan-cragg.org/blog/post/imperative-declarative-inversion-open-data-ok/">Open Data</a> ..
<a href="http://www.techcrunch.com/2006/06/15/myspace-nukes-singlestatus/">has</a> ..
<a href="http://www.techcrunch.com/2006/06/16/why-is-flickr-afraid-of-zoomr/">recently</a> ..
<a href="http://www.tomcarroll.org/?p=125">been</a>..
<a href="http://jeremy.zawodny.com/blog/archives/006920.html">all</a> ..
<a href="http://www.intertwingly.net/blog/2006/06/18/Accidentally-Closed">over</a> ..
<a href="http://diveintomark.org/archives/2006/06/16/juggling-oranges">the</a> ..
<a href="http://blogs.guardian.co.uk/technology/archives/2006/06/17/schofields_first_law_revisited_and_why_mark_pilgrim_finally_gave_up_on_apple.html">blog</a> ..
<a href="http://ebiquity.umbc.edu/blogger/2006/05/11/were-the-children-of-shoemakers/">o</a> ..
<a href="http://tantek.com/log/2006/06.html#d17t2231">sphere</a>!
</p><p>
Openness is a classic Us-and-Them issue. Big, nasty
Apple/MySpace/Flickr is trying to control what little
me/SingleStatus/Zoomr can do with my/our own stuff.
</p><p>
Open Data vs. Closed; Open Source vs. Proprietary; P2P vs. DRM;
privacy vs. surveillance.  The battles between the freedom of
the pioneer, the individual and the minority against the rules
and stability of the establishment and the majority form the
endless shape of human history.
</p><p>
Us beating Them is Hollywood&#39;s favourite subject on-screen -
and ironically Them fighting Us Hollywood&#39;s favourite battle
off-screen.
</p><p>
As an Us-and-Them issue, with Us less powerful than Them, it&#39;s
also tempting to give up and to follow the crowd - to do what
we&#39;re told, to not ask for or sieze the privacy and open data
we feel entitled to.
</p><p>
However, at XTech 2006 recently, there was a set of talks on
the subject with a more positive approach.
 &#160; ...
</p>

            </div>
        </summary>
        <content type="xhtml" xml:space="preserve">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>
</p><div class="summary"><p>
<a href="http://duncan-cragg.org/blog/post/imperative-declarative-inversion-open-data-ok/">Open Data</a> ..
<a href="http://www.techcrunch.com/2006/06/15/myspace-nukes-singlestatus/">has</a> ..
<a href="http://www.techcrunch.com/2006/06/16/why-is-flickr-afraid-of-zoomr/">recently</a> ..
<a href="http://www.tomcarroll.org/?p=125">been</a>..
<a href="http://jeremy.zawodny.com/blog/archives/006920.html">all</a> ..
<a href="http://www.intertwingly.net/blog/2006/06/18/Accidentally-Closed">over</a> ..
<a href="http://diveintomark.org/archives/2006/06/16/juggling-oranges">the</a> ..
<a href="http://blogs.guardian.co.uk/technology/archives/2006/06/17/schofields_first_law_revisited_and_why_mark_pilgrim_finally_gave_up_on_apple.html">blog</a> ..
<a href="http://ebiquity.umbc.edu/blogger/2006/05/11/were-the-children-of-shoemakers/">o</a> ..
<a href="http://tantek.com/log/2006/06.html#d17t2231">sphere</a>!
</p><p>
Openness is a classic Us-and-Them issue. Big, nasty
Apple/MySpace/Flickr is trying to control what little
me/SingleStatus/Zoomr can do with my/our own stuff.
</p><p>
Open Data vs. Closed; Open Source vs. Proprietary; P2P vs. DRM;
privacy vs. surveillance.  The battles between the freedom of
the pioneer, the individual and the minority against the rules
and stability of the establishment and the majority form the
endless shape of human history.
</p><p>
Us beating Them is Hollywood&#39;s favourite subject on-screen -
and ironically Them fighting Us Hollywood&#39;s favourite battle
off-screen.
</p><p>
As an Us-and-Them issue, with Us less powerful than Them, it&#39;s
also tempting to give up and to follow the crowd - to do what
we&#39;re told, to not ask for or sieze the privacy and open data
we feel entitled to.
</p><p>
However, at XTech 2006 recently, there was a set of talks on
the subject with a more positive approach.
</p></div><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/176">Ignorance Is Not A Defence</a></b>
</p><p>
I&#39;m counted amongst the &#39;founding members&#39; of the UK&#39;s 
<a href="http://www.openrightsgroup.org/">Open Rights Group</a>, having
signed the pledge in <a href="http://www.pledgebank.com/rights">PledgeBank</a>.
So I was delighted to see <a href="http://strange.corante.com/">Suw Charman</a>&#39;s
name on the XTech programme.
</p><p>
Suw gave a talk about the issues they/we are tackling:
ISPs and Telcos tracking our traffic, DRM controlling our media
and even our computers, ID cards, Patents, various government
schemes to undermine our privacy, Copyright extension,
Trusted Computing, etc., etc.
</p><p>
<a href="http://www.openrightsgroup.org/orgwiki">Read about the issues</a>,
then <a href="http://www.openrightsgroup.org/support-org">join the group</a>
(or the <a href="http://www.eff.org">EFF</a>, etc., depending on where you live).
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/60">OpenStreetMap: The First Year</a></b>
</p><p>
Now, this was cool. I&#39;ll start right off by noting that they
have a <a href="http://wiki.openstreetmap.org/index.php/REST">REST</a>
API, not a <a href="http://duncan-cragg.org/blog/post/strest-service-trampled-rest-will-break-web-20/">STREST</a> API..
</p><p>
And it just gets better from there.. OpenStreetMap is like a Geo
Wiki of GPS trails around the world.  The centre of London was
mapped by attaching GPS devices to couriers and plotting the
slug-trails they left behind.  Steve Coast showed an animation
of a day&#39;s tracking.  The trails shot off to various points out
of town at the end of the day. But the animation continued..
</p><p>
And at pub closing time, another burst of trails as the
couriers came home!
</p><p>
A few weeks ago, a crowd of OpenStreetMap volunteers descended
on the Isle of Wight in England to walk around mapping it.  The
enthusiasm generated by this project seems likely to give it
enough momentum that it will very soon be good enough for us to
use for real. A complete, reliable dataset created by the
people, for the people, unencumbered by copyright and
restrictive licensing.
</p><p>
I suggested an idea I had about five years ago in my dot-com
days: let people upload mobile-snapped pictures with GPS
coordinates attached. Central servers scan the pictures for
text and OCR them into a searchable database.
</p><p>
People would snap-and-upload their own street name signs, house
name plaques, shop fronts, station name signs, company office
signs, etc.  Even menus in the local restaurant. We could
construct a &#39;GeoGoogle&#39; of public, mappable, searchable text.
</p><p>
However, Steve told me that OCR and mobile GPS technology still
isn&#39;t up to it; that manual tagging of GPS trails is enough to
make OpenStreetMap work well. Ah well, I&#39;ve waited five years,
so I can wait a bit longer...
</p><p>
<a href="http://www.opengeodata.org/?p=65">Slides, MP3 here</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/125">An Open (Data) Can of Worms</a></b>
</p><p>
Paul Hammond (ex-BBC, Yahoo!) gave a good talk on how to
motivate companies to open up their data to the Mashable Data
Web, hopefully through nice shiny new Web 2.0 APIs.
</p><p>
Here&#39;s your takeaway 
<a href="http://strange.corante.com/archives/2006/05/18/xtech_2006_paul_hammond_an_open_data_can_of_worms.php">quote</a>
courtesy of Suw Charman&#39;s amazing typing:
</p><blockquote class="others-content"><div><p></p><ul>
<li>Be aware of the problems</li>
<li>Demonstrate usefulness, screen scrape if you need to, but don&#39;t get yourself cease-and-desisted</li>
<li>Don&#39;t assume it&#39;s a technology problem</li>
<li>Target the right people, find someone on the inside who can help you</li>
<li>Talk about benefits to the provider, not the consumer. If you talk about the benefits to you, they&#39;ll see you just as someone who wants something for free.</li>
<li>Have patience. It is getting better every day, and it takes time for business to come round.</li>
</ul><p></p></div></blockquote><p>
The Data Web will be created mostly from the edges, but the
middle should be encouraged to see the benefits, too.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/178">Native to a Web of Data: Designing a Part of the Aggregate Web</a></b>
</p><p>
Yahoo! had a big presence at XTech - as did the BBC - and this
Yahoo! - and ex-BBC - presenter was 
<a href="http://www.plasticbag.org/">Tom Coates</a>.
</p><p>
Tom&#39;s talk extended the previous one of his colleague, Paul
Hammond, by going over some principles of opening data and
helping build the Data Web.
</p><p>
Principles such as finding data sources, giving them nice
representations and URLs then distributing them in a most
accessible and navigable way.
</p><p>
A bit Web 1.0, in truth; he looked rather blankly at me when I
suggested adding some concept of data events or updates to his
list of data-opening principles.
</p><p>
Again, Suw has this
<a href="http://strange.corante.com/archives/2006/02/08/fowa_native_to_a_web_of_data_tom_coates.php">written up</a>
(actually, a better-looking version of the same talk from 
<a href="http://www.carsonworkshops.com/summit/">FoWA</a>).
</p><p>
Oh - here&#39;s a good article by Tom on the power of 
<a href="http://www.plasticbag.org/archives/2005/04/the_age_of_pointatthings.shtml">pointability</a>
</p><p>&#160;</p><p>
<b>Harnessing the Collective</b>
</p><p>
All of these talks had a positive spin on the Us-and-Them issue.
</p><p>
We <i>can</i> do something about the creeping imbalance of Digital
Rights, tipping slowly but persistently from Us to Them.
</p><p>
Web 2.0 and the Social Software it underpins <i>can</i>
actually empower those of us that are willing to use it.
</p><p>
As taxpayers, voters, shareholders, pensionholders, customers
and employees, we really do own and control Them. We are just
one Social Networking movement away from realising that - in
both senses of the word.
</p><p>
So: stop staring at YouTube, sign up to your local Digital Rights
organisation, get out on your bike with your GPS, understand
and talk nicely to that unenlightened, data hoarding corporation
and start a bottom-up revolution to take back control over your
own data...
</p><p>
Above all, design your systems to put 
<a href="http://duncan-cragg.org/blog/post/imperative-declarative-inversion-open-data-ok/">Open Data</a>
at the top of your list of priorities...
</p><p>

</p>

            </div>
        </content>
    </entry>
    
    <entry>
        <id>http://duncan-cragg.org/blog/post/microformats-challenge-web-feeds-and-web-apis/</id>
        <title>Microformats Challenge Web Feeds and Web APIs!</title>
        <published>2006-06-07T19:10:00Z</published>
        
        <updated>2006-06-07T19:10:00Z</updated>
        
        <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/post/microformats-challenge-web-feeds-and-web-apis/" title="Microformats Challenge Web Feeds and Web APIs!" />
        
        <category term="semanticweb" />
        
        <category term="xtech" />
        
        <category term="declarative" />
        
        <category term="web2.0" />
        
        <category term="publishsubscribe" />
        
        <category term="app" />
        
        <category term="microformats" />
        
        <category term="microsummaries" />
        
        <category term="rest" />
        
        <category term="atom" />
        
        <summary type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>

<a href="http://microformats.org">Microformats</a> are subversive:
they not only challenge the approach of full-blown Semantic Web
approaches, but even question fundamental Web 2.0 building
blocks such as Web Feeds and Web APIs.
</p><p>
I recently attended
<a href="http://xtech06.usefulinc.com/">XTech 2006</a>,
where there were a few talks related to Microformats.
</p><p>
After summarising these talks, I&#39;ll finish with my shocking
revelations about the subversive nature of Microformats!
 &#160; ...
</p>

            </div>
        </summary>
        <content type="xhtml" xml:space="preserve">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>
</p><div class="summary"><p>
<a href="http://microformats.org">Microformats</a> are subversive:
they not only challenge the approach of full-blown Semantic Web
approaches, but even question fundamental Web 2.0 building
blocks such as Web Feeds and Web APIs.
</p><p>
I recently attended
<a href="http://xtech06.usefulinc.com/">XTech 2006</a>,
where there were a few talks related to Microformats.
</p><p>
After summarising these talks, I&#39;ll finish with my shocking
revelations about the subversive nature of Microformats!
</p></div><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/190">Microformats from the Ground Up</a></b>
</p><p>
<a href="http://theryanking.com/">Ryan King</a> and 
<a href="http://suda.co.uk/">Brian Suda</a> from 
<a href="http://technorati.com/">Technorati</a> presented
a half-day tutorial.
</p><p>
You can describe social networks, calendars and various other
semantic relationships by annotating page elements or embedding
small XML structures into your page according to a Microformat spec.
</p><p>
Microformats take Declarative or semantic markup (e.g. in
XHTML) to the next logical level.  Microformats have been
called the &#39;lower case Semantic Web&#39;, because they fill the
need for a lightweight set of conventions for data in Web pages
that transcends the merely renderable.
</p><p>
HTML has a number of extension points that make this kind
of thing easier. For example, the &#39;rel&#39; and &#39;rev&#39; attributes 
on a link (say what type of link it is - maybe a tag); the
&#39;class&#39; attributes (used for CSS but can also carry add-on
semantics); the &#39;profile&#39; element (say what kind of thing
the whole document represents).
</p><p>
Microformats examples include 
<a href="http://microformats.org/wiki/rel-tag">rel-tag</a> (for tagging your blog entries in Technorati, etc),
<a href="http://microformats.org/wiki/hcard">hCard</a> (like vCard-on-a-page),
<a href="http://microformats.org/wiki/hcalendar">hCalendar</a> (like iCalendar-on-a-page), 
<a href="http://microformats.org/wiki/xoxo">XOXO</a> (outlines) and
<a href="http://gmpg.org/xfn/">XFN</a> (social networking).
Technorati have an hCalendar <a href="http://feeds.technorati.com/event/">subscription service</a>.
</p><p>
However, the one that stood out for me was
<a href="http://microformats.org/wiki/hatom">hAtom</a>, with which you can
publish a blog and then let feed readers poll the actual page.
They can read the hAtom markup and treat it as an Atom feed.
</p><p>
<a href="http://theryanking.com/presentations/2006/xtech/tutorial/">Slides here</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/148">The Intelligent Design of Microformats</a></b>
</p><p>
<a href="http://theryanking.com/">Ryan King</a> also presented a talk on
the motivation and style of the Microformats effort.
</p><p>
There is no official standards body defining
<a href="http://microformats.org">Microformats</a>, just an 
&quot;Open Source&quot;-style engineering effort, which follows the
following list of Worthy Engineering Principles: &quot;Rough
Consensus and Working Code&quot;, &quot;Paving the Cowpath&quot;, &quot;Keep It
Simple and Stupid&quot;, &quot;You Ain&#39;t Gonna Need It&#39; and &quot;Don&#39;t Repeat
Yourself&quot;.
</p><p>
<a href="http://xtech06.usefulinc.com/schedule/paper/148">Paper here</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/201">Microsummaries in Firefox and on the Web</a></b>
</p><p>
Myk Melez gave a presentation about
<a href="http://wiki.mozilla.org/Microsummaries">Microsummaries</a> in the
up-coming Firefox releases.
</p><p>
To <a href="http://xtech06.usefulinc.com/schedule/detail/201">quote</a>:
</p><blockquote class="others-content"><div><p>Microsummaries are regularly-updated compilations of the most
important and timely information on web pages. For example:
</p><ul>
<li>current stock price and movement for a company profile: &quot;GOOG: 406.74 + 0.58&quot;</li>
<li>latest headline for a news site: &quot;BBC: US dismisses Iran attack claims&quot;</li>
<li>highest bid and time remaining for an auction item: &quot;Godzilla DVD: $15 / 2 minutes left&quot;</li>
</ul><p>
</p></div></blockquote><p>
One way to create this information is to link
(&#39;rel=&quot;microsummary&quot;&#39;) from a page to its associated
Microsummary document. You can also use XSLT to build the
summary on the client. Both approaches struck me as clumsy.
</p><p>
I commented that it would be more Microformat-like to allow
embedded markup (just annotate the Microsummary information
right in the page; perhaps call it &#39;hSummary&#39;?).
</p><p>
Myk used the bandwidth and page generation cost argument
against that, but good XHTML pages should be very lightweight,
and there are various AJAX techniques that can assemble heavier
pages.
</p><p>
The current manifestation of the idea is to write this summary
on a corresponding bookmark button in the chrome.
</p><p>
Allowing just bookmark buttons seems rather restricted to me.
I&#39;d be happy with a whole page in its own tab (or a widget in
an Ajax desktop).
</p><p>
A drag-and-drop prototype was also shown, where you visually
mark up the parts of the source page you want summarised.  I
commented that a good extension of that would be dragging
across elements to a whole new page, whose construction would be
dependent on the information in one or more source pages.
</p><p>
Myk didn&#39;t jump up and down with joy at my suggestions, so I
guess we&#39;ll have to wait before we get Microsummaries written
into Web pages that generate more Web pages.
</p><p>
<a href="http://developer.mozilla.org/presentations/xtech2006/microsummaries/">Slides here</a>;
<a href="http://wiki.mozilla.org/Microsummaries">Paper here</a>.
</p><p>&#160;</p><p>
<b><a href="http://xtech06.usefulinc.com/schedule/detail/58">RDFa: The Easy Way to Publish Your Metadata</a></b>
</p><p>
Of course, the Semantic Web folk have their own Microformat
approaches, including this one.
</p><p>
To quote from their <a href="http://xtech06.usefulinc.com/schedule/paper/58">paper</a>:
</p><blockquote class="others-content"><div><p>
The approach taken by RDFa is that ultimately any RDF structure
should be representable. This means that instead of having
to &#39;codify&#39; each format to describe how it must be marked up,
we simply provide a set of rules that explain how any RDF can
be marked up, and than any RDF &#39;language&#39; can be used.
</p></div></blockquote><p>
The &#39;a&#39; stands for &#39;attribute&#39;: RDF encoded as attributes in XML.
</p><p>
The example shown was FoaF, whose Microformat competition is
<a href="http://gmpg.org/xfn/">XFN</a> and <a href="http://microformats.org/wiki/hcard">hCard</a>.
You can use attributes like <code>&lt;link rel=&quot;foaf:mbox&quot;&gt;</code>,
<code>&lt;span property=&quot;foaf:name&quot;&gt;</code>, <code>&lt;span property=&quot;foaf:phone&quot;&gt;</code>
to encode RDF triple information at various points around your
document.
</p><p>
RDFa has some arguable benefits over their competition, but I
don&#39;t see why both sides shouldn&#39;t get along and share ideas.
And, indeed, why the other alternatives 
(<a href="http://www.structuredblogging.org/">structured blogging</a>,
<a href="http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml">embedded RDF</a>)
shouldn&#39;t all find a place, too. There is a 
<a href="http://www.bnode.org/archives2/58">comparison here</a>.
Another speaker at XTech, <a href="http://xtech06.usefulinc.com/schedule/speaker/86">Uche Ogbuji</a>, has also
<a href="http://www.xml.com/pub/a/2006/04/26/microformats-grddl-rdfa-nvdl.html">discussed</a>
some of these issues.
</p><p>&#160;</p><p>
<b>Web 2.0 Centraal</b>
</p><p>
Microformats not only challenge the Semantic Web, they even
challenge such basic Web 2.0 technologies as Web feeds and Web
APIs.
</p><p>
Shouldn&#39;t we be subscribing to and interacting with semantic
Web pages (note the lower case &#39;s&#39;!), not using invisible Web
Feeds and Web APIs?  Technorati think so: they are 
<a href="http://technorati.com/weblog/2006/05/108.html">leading the way</a>
in searching and subscribing to Microformats.
</p><p>
The redundancy of Atom itself (and feeds in general) has been
<a href="http://hsivonen.iki.fi/need-atom/">remarked upon</a> before.
Further, since we&#39;re using REST in the Atom Publishing
Protocol, why not use the same protocol to publish directly to
an hAtom annotated site? (e.g., just POST a new article to your
own blog&#39;s main page!)  Web &#39;API&#39;s are redundant when our pages
are just XML data anyway.
</p><p>
Writing data pages instead of document pages, then allowing
those pages to be updated and then subscribed to, is the future
of the Web: it&#39;s Web 2.0 Centraal.
</p><p>
The new lightweight, Declarative, Microformat-rich XHTML pages
we&#39;re going to be generating can be polled just as Web feeds
are, and events made from their changes. Then re-presented via
Ajax in dynamic pages.  Such standardised page formats and
micro-formats 
<a href="http://duncan-cragg.org/blog/post/strest-service-trampled-rest-will-break-web-20/">should also accept standardised POSTs</a>
where appropriate.
</p><p>
Microformats represent some first steps towards the Data Web
replacing the Document Web.  Although there has been some
thought given to extracting full-blown Semantic Web data from
Microformats, there&#39;s a significant chance that this bottom-up,
simple, minimal, <i>change-aware</i> (i.e., updateable,
subscribable) approach may teach the Semantic Web practitioners
a thing or two about the Worthy Engineering Principles that
enable the social and technical proliferation of a good idea.
</p><p>
Standardising common formats and structures is a precursor to 
this two-way, dynamic Data Web. Both the bottom-up
practitioners of Microformats and the top-down practitioners of
the Semantic Web have much to learn from each other on this path.
</p><p>&#160;</p><p>

</p>

            </div>
        </content>
    </entry>
    
</feed>

