<?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 'socialsoftware'</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/socialsoftware/" />

    <updated>2007-06-26T15:17:00Z</updated>


    <entry>
        <id>http://duncan-cragg.org/blog/post/how-ruby-can-enable-web-20-platform/</id>
        <title>How Ruby can enable the Web 2.0 Platform</title>
        <published>2007-06-26T15:17:00Z</published>
        
        <updated>2007-06-26T15:17:00Z</updated>
        
        <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/post/how-ruby-can-enable-web-20-platform/" title="How Ruby can enable the Web 2.0 Platform" />
        
        <category term="django" />
        
        <category term="web2.0" />
        
        <category term="atom" />
        
        <category term="ajax" />
        
        <category term="yaml" />
        
        <category term="rest" />
        
        <category term="event-driven" />
        
        <category term="publishsubscribe" />
        
        <category term="architecture" />
        
        <category term="declarative" />
        
        <category term="socialsoftware" />
        
        <category term="strest" />
        
        <category term="app" />
        
        <category term="microformats" />
        
        <category term="scalability" />
        
        <category term="json" />
        
        <category term="openid" />
        
        <category term="redux" />
        
        <category term="ruby" />
        
        <summary type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>

<a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">Web 2.0&#39;s definition</a>
includes seeing the Web as an application platform. Which means it
is in competition with Java and .Net, and with SOA, for both local
and widely distributed applications.
</p><p>
If the Web is going to be a platform, the skills you need to learn
to program it are the core Web 2.0 technologies such as Ajax, JSON,
Atom, Microformats and OpenID.
</p><p>
And Ruby. This language, that&#39;s capturing the hearts of many Web 2.0
programmers, is ideal for easing the transition from the Java
and .Net platforms to the Web platform, as I will show.
</p><p>
Even if you&#39;re part of a big company that is generally immune to the
latest trends, the marriage of Ruby and the Web-as-platform may be
something to prepare for. It could even displace your SOA agenda...
 &#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://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">Web 2.0&#39;s definition</a>
includes seeing the Web as an application platform. Which means it
is in competition with Java and .Net, and with SOA, for both local
and widely distributed applications.
</p><p>
If the Web is going to be a platform, the skills you need to learn
to program it are the core Web 2.0 technologies such as Ajax, JSON,
Atom, Microformats and OpenID.
</p><p>
And Ruby. This language, that&#39;s capturing the hearts of many Web 2.0
programmers, is ideal for easing the transition from the Java
and .Net platforms to the Web platform, as I will show.
</p><p>
Even if you&#39;re part of a big company that is generally immune to the
latest trends, the marriage of Ruby and the Web-as-platform may be
something to prepare for. It could even displace your SOA agenda...
</p></div><p>
Few would disagree that the Ruby language is riding the wave generated
by Ruby-on-Rails. In turn, Rails is riding the Web 2.0 wave, coming
as it does from underpinning the very Web 2.0 
<a href="http://www.37signals.com">37signals</a> 
product suite.  
</p><p>
Rails and Ruby have tapped into the tech Zeitgeist of friendly,
simple and powerful. The speed with which the Ruby and Rails
communities have delivered the key components of Web 2.0 is matched
by the speed at which 
<a href="http://radar.oreilly.com/archives/2007/05/state_of_the_co_10.html">Ruby and Rails books are leaving the shelves</a>.
</p><p>
What is the ideal platform of Web 2.0? Will it be Rails and Ruby?
Will Ruby ride the Web 2.0 wave into the mainstream in the same way
Java rode the Web 1.0 wave?
</p><p>
Well, here&#39;s the problem with that question: Web 2.0 is supposed to
be primarily about the <i>Web</i> itself as the platform, as 
<a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">explained first</a>
by Tim O&#39;Reilly and then by a thousand Web 2.0 vendors and industry
watchers after him.
</p><p>
Web-as-platform is not just vendor hype or pundit hand-waving.
Let&#39;s think about what O&#39;Reilly meant by that.
</p><p>&#160;</p><p>
<b>Web as Platform</b>
</p><p>
Web 2.0 is about making the Web more interactive, and thus able to
support applications where Java and .Net would once have been
considered the sole delivery platforms.
</p><p>
The fact that the technologies of the Web can be turned to this
use is a shift with far-reaching implications.
</p><p>
Broadly, the shift we are seeing is from the one-way, static
document delivery of Web 1.0 towards the two-way, dynamic data
exchange of Web 2.0.
</p><p>
This fundamental repurposing is delivering more complex, interactive
applications that work inside our browsers and which fully leverage
the benefits of online operation. 
</p><p>
Web 2.0 is bringing the user and their stuff <i>into</i> the very Web
that they hitherto only passively consumed.  This network-enablement
of the user in turn enables their <i>social</i> networking and their
shared creativity and self-expression. 
</p><p>
Web 2.0 has tapped into a deep human need - a fact reflected in the
vast traffic volumes and correspondingly vast valuations of Web 2.0
startups that we&#39;re currently seeing.
</p><p>
But Web 2.0 is not just for the startups: Enterprise Web 2.0 is
coming! The bigco.com site is going to be looking a little, well,
static and lifeless when compared to the new sites that are
springing up everywhere, and that most of BigCo&#39;s employees are
using. Further, BigCo can gain huge benefits from Web 2.0 approaches
empowering and connecting those employees on the Intranet. And that
Intranet is an ideal platform for deploying company-wide, interactive
applications.
</p><p>
This shift in the Web to two-way dynamic data is being powered by a
set of technologies that a Web platform programmer is going to have
to learn.
</p><p>&#160;</p><p>
<b>Web 2.0 Platform Technologies</b>
</p><p>
Anything that claims to be an application platform must support
data. Web 2.0 is above all the data Web. Web 2.0 is about
semantics, not free text and font sizes. Hence, it inevitably starts
with data-oriented formats such as 
<a href="http://en.wikipedia.org/wiki/XHTML">XHTML</a>, 
<a href="http://www.yaml.org/">YAML</a> and 
<a href="http://json.org/">JSON</a>.  In Web 2.0
more than ever, we talk about data not documents and about
separating data from its presentation.  CSS is big in Web 2.0, for
good reason (not just for gradient fills). Inside the page of a
self-respecting Web 2.0 application, you&#39;ll often find 
<a href="http://microformats.org/">Microformats</a> - again, 
semantics in the page: publishing concise data of widely-understood
standard formats. Some of those Microformats may be 
<a href="http://support.technorati.com/support/siteguide/tags">tags</a>, and in
Web 2.0 the simplest and most powerful semantics are those little
pivot points in Webspace.
</p><p>
Again, if you&#39;re going to be a general purpose platform, you need to
be able to fetch, update, notify and display that data.  Web 2.0
integration usually happens via JSON data structures and 
<a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a>
interfaces (some of which, especially those based on 
<a href="http://atompub.org/">AtomPub</a>,
are true REST).  Following on from the data-like pages we serve to
browsers, come the data-like feeds we publish to feed readers and to
other applications.  After feeds, the core technology that gives
Web 2.0 its dynamism and interactivity is 
<a href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a> and 
<a href="http://en.wikipedia.org/wiki/DHTML">DHTML</a>, and
increasingly 
<a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a>
(server push to the browser). The core technology
that gives Web 2.0 its users is increasingly 
<a href="http://openid.net/">OpenID</a>.
</p><p>
All of the above are open technologies. You can do Web 2.0 without
proprietary technologies, just like Web 1.0. Indeed, keeping to the
principles that made the Web successful is also essential to the
success of Web 2.0. The Web platform is the first application
platform that has to consider scalability and interoperability, and
will ignore them at its cost.  I have written before about open
data, use of standard data formats and using REST properly to avoid
creating unscalable, walled-garden sites. You don&#39;t need Flash or
SilverLight, you don&#39;t need vast amounts of custom Javascript, you
don&#39;t need function calls tying you to your servers.
</p><p>&#160;</p><p>
<b>Programming the Web 2.0 Platform</b>
</p><p>
So, we&#39;ve got the dynamic data that you&#39;d expect of a would-be
platform. But how to drive changes in those data? How do we
program the Web platform to animate all this data?
</p><p>
All Rails programmers will know the above technology list; it comes
with the territory. The Web 2.0 Platform can be very succesfully
powered by Rails and Ruby. Ruby and Rails make Web 2.0
applications simple and quick to program, addressing many of the
needs of simple Web 2.0 applications out of the box. There&#39;s little
doubt that Ruby and Rails will have a secure future riding the
Web 2.0 wave.
</p><p>
However, for many Web 2.0 applications, programming may not even be
necessary, at least not in the procedural or imperative style
programmers expect. 
</p><p>
Look back to the early 90&#39;s: &#39;Web 1.0&#39; made a whole class of
applications easy to write without programming: applications for
navigating information. You just wrote in HTML, declaratively.
</p><p>
Now look back at the long path of evolution of Java, through J2EE,
Spring, AOP, IoC, Domain Driven Design, POJOs. All trying to
achieve the simple goal of &#39;remove all that MVC and persistence
stuff and let us concentrate on business or domain objects&#39;. But
they never quite seemed to get it right. 
</p><p>
But then Rails comes along, and has succeeded by simple virtue of
concentrating on easy manipulation of the 
&#39;<a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html?page=3">Intel Inside</a>&#39;
of Web 2.0 - data. 
</p><p>
It&#39;s reminiscent of the 
&#39;<a href="http://nakedobjects.org/wiki/Main_Page">Naked Objects</a>&#39;
approach to application building with minimal programming (just
business or domain code in POJOs that expose state into the GUI and
are transparently persisted). The 
<a href="http://ajaxian.com/archives/streamlined-naked-objects-for-the-web">Streamlined</a>
project takes Rails even further down this path. Rails&#39; nearest
competitor, <a href="http://www.djangoproject.com/">Django</a>,
has an admin interface that works in a similar way, automatically
generating edit pages based on the data model.
</p><p>
Web 2.0 is about data, about semantics. Web 2.0 is inherently
declarative.  So Web 2.0 applications can be written declaratively -
Web 2.0 mashups can be just wired together and their data animated
by business rules. A bit like programming spreadsheets. 
</p><p>
<a href="http://www.techcrunch.com/2007/03/02/5-ways-to-mix-rip-and-mash-your-data/">Teqlo</a>, 
<a href="http://www.techcrunch.com/2007/04/16/coghead-announces-17000-developers-building-applications-visually/">Coghead</a>, 
<a href="http://www.techcrunch.com/2007/03/02/5-ways-to-mix-rip-and-mash-your-data/">Pipes</a>, 
<a href="http://www.techcrunch.com/2006/03/11/dabbledb-online-app-building-for-everyone/">DabbleDB</a>, 
<a href="http://www.techcrunch.com/2007/06/19/new-site-jumps-into-the-application-creation-space/">LongJump</a>, 
<a href="http://www.techcrunch.com/2007/05/18/microsoft-launches-popfly-mashup-app-creator-built-on-silverlight/">Popfly</a>, 
<a href="http://www.techcrunch.com/2006/08/21/salesforce-dives-deep-into-google-adwords/">AppExchange</a> and
<a href="http://www.techcrunch.com/2006/04/30/wyaworks-app-builder-for-non-coders/">Wyaworks</a> 
are all examples of the different ways to program the new Web 2.0
platform without imperative code.
</p><p>
That&#39;s what we mean by Web-as-platform - not only is the underlying
programming language irrelevant, it will often not even be needed,
certainly for simple data manipulation applications and for many
simple mashups. Being RESTful gives you a massive head start in
this, of course.
</p><p>
While Rails is already in the game with its innate understanding of
Web 2.0 techniques and philosophies, Ruby itself has a huge amount
to offer the would-be declarative programmer, who is making the
transition to this new Web platform from their traditional Java
or .Net platform.  In particular, it is easy to write your domain
logic in a declarative style in Ruby: they call them &#39;DSLs&#39; these
days, but the idea is the same in most examples I&#39;ve seen.
</p><p>&#160;</p><p>
<b>Web 2.0 - The Web Redux</b>
</p><p>
Now, if you&#39;ve been following this blog, you&#39;ll know I have a
few opinions on 
<a href="http://duncan-cragg.org/blog/post/right-way-to-do-ajax-is-declaratively/">Declarative Web 2.0</a> and on
<a href="http://duncan-cragg.org/blog/post/distributed-observer-pattern-rest-dialogues/">patterns for programming REST</a>.
Essentially I argue that, if you want to play in the Web 2.0
platform game, you don&#39;t want to be writing screeds of Javascript
functions that call more functions on your servers. 
</p><p>
I recently presented some ideas along these lines at
the WWW2007 conference, entitled 
&#39;<a href="http://www2007.org/prog-Developers.php#saturday">The Micro Web: putting the Web back into Web 2.0</a>&#39;,
where I also showed a demo written in Python.
</p><p>
This approach combines my 
<a href="http://duncan-cragg.org/blog/post/distributed-observer-pattern-rest-dialogues/">Distributed Observer Pattern</a>
with Comet push to enable highly dynamic Web 2.0 applications to be
coded RESTfully and declaratively, with zero Javascript.  The
Distributed Observer Pattern offers a clean programming model for
animating the Web 2.0 dynamic-data technology set I described above. 
</p><p>
I believe the Observer Pattern is core to the way we&#39;ll be
programming when the Web 2.0 Platform hits mainstream.  It enables
the kind of event- and rule-driven programming that matches the
characteristics of the Web 2.0 dynamic data platform. As a 
further killer benefit, it also directly addresses the optimal
utilisation of multicore processors.
</p><p>
I am currently porting my Python implementation of this approach to
Ruby, in the
<a href="http://rubyforge.org/projects/redux/">Redux</a> 
project on Rubyforge.  Redux stands for &#39;Ruby Event-Driven Update
Exchange&#39;.  It uses the highly scalable
<a href="http://rubyforge.org/projects/eventmachine">EventMachine</a>
epoll-based event loop to power its event-driven architecture.
This will be essential when Redux is asked to scale up a 
Comet-based application.
</p><p>
Like Rails, Redux will be a Web (2.0) application framework, but
unlike Rails, it puts the Observer Pattern and event- and
rule-driven programming at its core. 
</p><p>
Redux&#39;s headline is &#39;Web 2.0 in-a-box&#39; or &#39;Naked Objects on the Web&#39;.
</p><p>&#160;</p><p>
<b>Conclusion</b>
</p><p>
If you&#39;re in BigCo, and are responsible for setting BigCo&#39;s
technical strategy, then train your Java devs up on Web 2.0 core
technologies such as Ajax, JSON, Atom, Microformats and OpenID.  
</p><p>
And fire up their enthusiasm by tapping into Ruby (perhaps via
JRuby) on your way to the Web 2.0 platform. 
</p><p>
Learn patterns for mashing and integrating. Learn about REST and
event- and rule-driven programming, including declarative DSLs.
</p><p>
When this Web platform hits BigCo, you will probably find that its
REST or ROA style make your SOA integration strategy look rather
complex and unweildy.
</p><p>
Check out the
<a href="http://duncan-cragg.org/blog/post/distributed-observer-pattern-rest-dialogues/">Distributed Observer Pattern</a>,
and download
<a href="http://rubyforge.org/projects/redux/">Redux</a>
when it&#39;s done (I&#39;ll let you know if you subscribe here!).
</p><p>
In 2007 and beyond, its the Web itself that&#39;s the platform, not
Java or .Net. But if you want to get there via a language-based
platform, Ruby could be the best way to transition to it.
</p><p>
<i>Note: Everything I said about Ruby and Rails applies equally in
technical terms to Python and Django, but regardless of the
significant benefits of the latter, Ruby and Rails have the Web 2.0
market and mindshare. I&#39;ll probably switch this blog from Django to
Redux sometime this year..</i>
</p><p>
<i>(c) 2007 Duncan Cragg</i>
</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/welcome-to-what-not-how/</id>
        <title>Welcome to &#39;What Not How&#39;</title>
        <published>2006-03-22T17:00:48Z</published>
        
        <updated>2006-03-22T17:00:48Z</updated>
        
        <link rel="alternate" type="text/html" href="http://duncan-cragg.org/blog/post/welcome-to-what-not-how/" title="Welcome to &#39;What Not How&#39;" />
        
        <category term="semanticweb" />
        
        <category term="architecture" />
        
        <category term="declarative" />
        
        <category term="web2.0" />
        
        <category term="socialsoftware" />
        
        <category term="p2p" />
        
        <category term="event-driven" />
        
        <category term="rest" />
        
        <summary type="xhtml">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>

Declarative Architectures focus on the What, not the How, of programming.  The How has dominated the field - perhaps 80% of programming is done in the traditional Imperative style, where we tell the computer How to do a task in explicit steps.
</p><p>
I&#39;d like to show in this blog how Declarative Architectures and technologies are not just an interesting sideshow to the main Imperative attraction, but a complete and powerful programming alternative in their own right - indeed, one which has already dominated certain fields.  
</p><p>
Imagine being able to simply express What we want the computer to do - to give it constraints and rules - then let it work out for itself How to achieve our goals.
</p><p>
I believe that saying What, not How, will become the dominant paradigm in programming.
 &#160; ...
</p>

            </div>
        </summary>
        <content type="xhtml" xml:space="preserve">
            <div xmlns="http://www.w3.org/1999/xhtml">

<p>
</p><div class="summary"><p>
Declarative Architectures focus on the What, not the How, of programming.  The How has dominated the field - perhaps 80% of programming is done in the traditional Imperative style, where we tell the computer How to do a task in explicit steps.
</p><p>
I&#39;d like to show in this blog how Declarative Architectures and technologies are not just an interesting sideshow to the main Imperative attraction, but a complete and powerful programming alternative in their own right - indeed, one which has already dominated certain fields.  
</p><p>
Imagine being able to simply express What we want the computer to do - to give it constraints and rules - then let it work out for itself How to achieve our goals.
</p><p>
I believe that saying What, not How, will become the dominant paradigm in programming.
</p></div><p>
</p><p>
<b>What?</b>
</p><p>
Declarative Architectures are about data: documents, assertions, truths, rules, tables, structures, state, bits. Data storage, changes, constraints, transformation, sharing, querying, fetching, interaction, presentation, subscription, tagging.  
</p><p>
In summary, we talk about stuff, changes to stuff and rules governing stuff. Not processes, actions, jobs or functions.
</p><p>
It&#39;s amazing how many interesting Declarative technologies are actually out there already - especially given that most programming is Imperative.  They tend to go unnoticed; subservient to their Imperative masters.
</p><p>
Here are some examples from our daily work life (assuming you work in computing!):
</p><ul>
<li>    XML: XSL, XPath, XQuery, Schematron, RelaxNG, Xcerpt, XForms, XRules</li>
<li>    Other MLs: XUL, XForms, XAML, YAML, ...</li>
<li>    Relational DBs, SQL</li>
<li>    Publish / Subscribe: &#39;this has changed&#39;, not &#39;do this&#39;</li>
<li>    Observer Pattern, MVC (maybe)</li>
<li>    EII: architectures for business data and events &#39;landscapes&#39;</li>
<li>    JCache, SpiritCache: updateable, cascadable caches, &#39;active queries&#39;</li>
<li>    Business Rule programming</li>
<li>    Spreadsheets</li>
<li>    JNDI</li>
<li>    Makefiles, Ant; Source Control: versioning, deltas</li>
</ul><p>
What all these have in common is that they are purely data- and event-driven or oriented. Not a thread in sight (if used properly). No method calls. Just querying, fetching, subscribing, tagging, declaring truths and rules, making changes to stuff, etc.
</p><p>
On the &#39;Net, all the dominant technologies are actually Declarative, not Imperative:
</p><ul>
<li>    DNS</li>
<li>    REST: URIs, HTTP</li>
<li>    Mail, News: SMTP, NNTP</li>
<li>    Instant Messaging; VoIP</li>
<li>    P2P: BitTorrent, Gnutella</li>
<li>    Multimedia: streaming, multicasting, PeerCast</li>
<li>    Compression, Information Theory, Cryptography, Trust</li>
</ul><p>
Again, the same things are happening: querying, fetching, subscribing, tagging, declaring truths and rules, making changes to stuff. 
</p><p>
Email (SMTP) is a great example of a Declarative Architecture, with its routing and transformation rules and self-addressed store-and-forward transmission. And, in fact, much the same applies to the rest of this list, where the Declarative aspects may include network querying and data events.  
</p><p>
Imperative protocols such as RPC, RMI, CORBA, SOAP, etc. haven&#39;t had anywhere near the impact of their Declarative cousins.
</p><p>
Now, consider the &#39;Web 2.0&#39; technologies:
</p><ul>
<li>    HTTP/1.1, XHTML</li>
<li>    Metadata: RSS, RDF, Atom, MicroFormats, tagging engines</li>
<li>    REST Web APIs for XML metadata (including RSS/Atom)</li>
<li>    DHTML; AJAX (when used as DOM updater), mod_pubsub</li>
<li>    Identity; Single Sign-On Web-APIs: OpenID</li>
</ul><p>
This is a wonderful list of Declarative approaches (as long as we use REST APIs and talk about Resources, not SOAP ones talking about functions and jobs!).
</p><p>
So far, I&#39;ve mentioned technologies that have attached themselves to the periphery of Imperative programming, where the actual behaviour is still driven procedurally, or How-like. 
</p><p>
However, Declarative programming itself has a history at least as long as Imperative programming,
and includes:
</p><ul>
<li>    Lisp, Rewriting systems</li>
<li>    Prolog, Deductive Databases, The Semantic Web</li>
<li>    Rule-Driven systems, Knowledge Engineering, Cyc, Ontologies</li>
<li>    Tuple Spaces, Javaspaces</li>
<li>    Neural Networks, Genetic Algorithms, Cellular Automata</li>
<li>    Example-based programming: Subtext</li>
</ul><p>
We can, if we choose, write 100% Declarative systems (even down to asynchronous or event-driven operating systems and hardware).
</p><p>&#160;</p><p>
<b>Wherefore?</b>
</p><p>
In this blog, I&#39;ll be pointing out opportunities where we can benefit from the Declarative approach when it&#39;s ready. 
</p><p>
Perhaps the biggest example of a Declarative Architecture that is ready to benefit us now is the Web.  In contrast, the Imperative Service-Oriented Architecture model and so-called &#39;Web&#39; Services are still weaning; still trying to get a life free of their huge standards consortia. REST, in its simplicity, ubiquity and straightforward usefulness is orders of magnitude more deployed than SOAP will likely ever be.
</p><p>
This blog is for discussing the common problems and solutions in Declarative technologies; seeing if ideas in one area can be used in another and seeing if we can distill their lessons and their approaches.  
</p><p>
Ultimately, heading towards a unified, distributed Declarative programming technology landscape. 
</p><p>
I hope you&#39;ll join me in my explorations into Declarative Architectures, in particular if you&#39;re interested in the currently most promising segment I mentioned: Web 2.0, and its application in Social Software. 
</p><p>
Or the currently massive but little-mentioned segment: Peer-to-Peer, and its application to the disruption of, well you know, all those big technological and commercial hierarchies...
</p><p>

</p>

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

