<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Out of Rhythm</title>
	<atom:link href="http://www.outofrhythm.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.outofrhythm.com</link>
	<description>Explorations in Web Architecture and Erlang</description>
	<lastBuildDate>Tue, 15 Sep 2009 02:44:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>REST Redux</title>
		<link>http://www.outofrhythm.com/2007/05/03/rest-redux/</link>
		<comments>http://www.outofrhythm.com/2007/05/03/rest-redux/#comments</comments>
		<pubDate>Thu, 03 May 2007 09:45:38 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ATOM]]></category>
		<category><![CDATA[ReST]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/05/03/rest-redux/</guid>
		<description><![CDATA[The Rise of REST! Iâ€™ve noticed an increasing number of â€œWhat is REST?â€, or alternatively, explanations of REST appearing lately. Most attempt to compare REST to SOAP which is basically the wrong argument. SOAP and REST cannot be directly compared, though for the last seven plus years it has been. Keep in mind that REST does not mean exclusively HTTP. Just take a look at the Java content-management standards JSR 170 and JSR 283 for an example of an API based on REST using Java.

]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">The Rise of REST! Iâ€™ve noticed an increasing number of â€œWhat is REST?â€, or alternatively, explanations of REST appearing lately. Most attempt to compare REST to SOAP which is basically the wrong argument. SOAP and REST cannot be directly compared, though for the <a title="Makr's seven year aniversary" href="http://www.markbaker.ca/blog/2007/03/12/seven-years-of-ws-bashing/">last seven</a> years it has been. Keep in mind that REST does not mean exclusively HTTP. Just take a look at the Java content-management standards <a title="JSR170" href="http://jcp.org/en/jsr/detail?id=170">JSR 170</a> and <a title="JSR283" href="http://jcp.org/en/jsr/detail?id=283">JSR 283</a> for an example of an API based on REST using Java.</p>
<p class="MsoNormal">Before I attempt to put my own spin on what and why you would use REST; If you are interested at all on <a title="Software Architecture Group UCI" href="http://www.isr.uci.edu/architecture/">Software Architecture</a>, then I highly recommend that you take the time to read <a title="Architectural Styles and the Design of Network-based Software Architectures" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Royâ€™s dissertation</a> â€“ maybe even twice. It is a tour-de-force of what Software Architecture is. And if you feel really brave read <a title="Extending the REpresentational State Transfer Architectural Style for Decentralized Systems " href="http://www.ics.uci.edu/~rohit/Khare-Thesis-FINAL.pdf">Rohitâ€™s companion dissertation</a>.</p>
<p class="MsoNormal"><strong>Why base your software architecture on REST?</strong></p>
<p class="MsoNormal">The high-level answer: When you don&#8217;t &#8220;own&#8221; each component along the wire it is important that each component be allowed to evolve independently. What matters in this context is the ability to work with components at different levels of implementation. That means constraining the interface to a commonly agreed standard so every component along the wire can understand what it means to GET, PUT, POST, DELETE etc.</p>
<p class="MsoNormal">Secondly no matter how fast the wire becomes we are still constrained by the speed of light i.e. there will always be latency. To combat this you end up using a course grained Document-Centric mode of interaction &#8211; sending HTML/XML/JSON documents etc &#8211; instead of a fine grained Control-Centric mode. The latter is RPC the former REST.</p>
<p class="MsoNormal">To make sure that each component knows what is being talked about it needs to be identified. Hence URIs identify a Resource. Response meta-data describes the context of the document that was returned. [in REST terms the context of the Representation returned.]</p>
<p class="MsoNormal">A Resource can be thought of as an object that implements various interfaces. It is a concept, a notional software component that implements many interfaces. In REST those interfaces are identified by URIs.</p>
<p class="MsoNormal">Without constrained interfaces, a data-centric mode of interaction and identity, caches won&#8217;t work for example. This also means that Hypertext now becomes the engine of application state. Every component interface implements a state machine regardless of the underlining component technology, hence in REST URI become a way of making the application state explicit.  <a title="I finally get REST, Wow" href="http://pluralsight.com/blogs/tewald/archive/2007/04/26/46984.aspx">Tim Ewald</a> framed it nicely:</p>
<blockquote>
<p class="MsoNormal">â€œThe essence of REST is to make the states of the protocol explicit and addressible by URIs. The current state of the protocol state machine is represented by the URI you just operated on and the state representation you retrieved. You change state by operating on the URI of the state you&#8217;re moving to, making that your new state. A state&#8217;s representation includes the links (arcs in the graph) to the other states that you can move to from the current state. This is exactly how browser based apps work, and there is no reason that your app&#8217;s protocol can&#8217;t work that way too. (The <a title="ATOM Publishing protocol" href="http://www.ietf.org/internet-drafts/draft-ietf-atompub-protocol-14.txt">ATOM Publishing protocol</a> is the canonical example, though its easy to think that its about entities, not a state machine.)â€</p>
</blockquote>
<p class="MsoNormal">RPC (and therefore SOAP) rely on tool support to be vaguely usable. REST works because humans can do a wget and see what comes back. That reduces the coordination costs of building systems.</p>
<p class="MsoNormal">If you control all the components in the chain and you release them all at the same time and there is no latency issue to worry about, use a RPC style of interaction. Otherwise use REST. In today&#8217;s Web2.0 climate that means using a REST style, as a minimum, for externally exposed Resources via APIs.</p>
<p class="MsoNormal"><strong>An Architectural Style</strong></p>
<p>REST is an Architectural Style in the true sense of <a title="Christopher Alexander" href="http://en.wikipedia.org/wiki/Christopher_Alexander">Alexanderâ€™s patterns</a>, compared to, the more prescriptive approach adopted by the Design Patterns movement, lead by the <a title="Design Patterns" href="http://en.wikipedia.org/wiki/Design_Patterns">Gang of Four</a>. SOAP is a XML language for specifying and constructing messages for a network protocol. The typical message exchange pattern is modelled after the RPC style. So just to confuse the matter SOAP can be compared more directly to HTTP; the latter being a Network API that attempts to conform to the REST style.</p>
<p>If REST is to be compared then it should be compared to RPC or SOA. Both are approaches to software architecture. SOAP is an implementation that can be used in either a Control-centric (RPC/SOA) style or a Document-centric (REST) style. It just happens than most uses of SOAP are RPCs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/05/03/rest-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Web Apps now a lot more achievable</title>
		<link>http://www.outofrhythm.com/2007/05/03/offline-web-apps-now-a-lot-more-achievable/</link>
		<comments>http://www.outofrhythm.com/2007/05/03/offline-web-apps-now-a-lot-more-achievable/#comments</comments>
		<pubDate>Wed, 02 May 2007 15:13:46 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Offline]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/05/03/offline-web-apps-now-a-lot-more-achievable/</guid>
		<description><![CDATA[Early last week the Dojo Toolkit launched a toolkit extension for making the development of offline web applications a lot easier. From the launch announcement:]]></description>
			<content:encoded><![CDATA[<p>Early last week the <a title="Dojo Toolkit" href="http://www.dojotoolkit.org">Dojo Toolkit</a> launched a toolkit extension for making the development of offline web applications a lot easier. From the <a title="Dojo Toolkit Offline launch announcement" href="http://www.dojotoolkit.org/dojo-offline-beta-released-toolkit-offline-web-apps">launch announcement</a>:</p>
<p>&#8220;Dojo Offline is a free, open source toolkit that makes it easy for web applications to work offline. It consists of two pieces: a JavaScript library bundled with your web page and a small (~300K) cross-platform, cross-browser download that helps to cache your web application&#8217;s user-interface for use offline.&#8221;</p>
<p>The 300K download is actually a locally installed web proxy that makes the detection, caching and online/offline transitions seemless. Part of the approach is to define a framework for handling the connectivity so that it is as easy and transparently from an end-users&#8217; perspective. This includes a Dojo UI Widget that detects the presences of the Offline Proxy, prompting the user to download and install it. Being only 300K makes this a very quick process. If the proxy is installed then the widget will indicate the &#8220;connected&#8221; status.</p>
<p>This checking of connectivity goes beyond local network connectivity, by sending pings out across the Internet, it actually determines if Internet connectivity is present. This avoids the trap of being locally connected but globally disconnected.</p>
<p>From a implementation perspective the local proxy will cache all those files (XHTML, CSS, Javascript) to ensure that the Web application will still operate even if started offline. Once online the Sync component of the toolkit kicks in, performing a transparent merge operation with the back-end. The reason it is transparent is to avoid confusing the user. Instead the approach is to perform the sync transparently but let the user view the audit log of what happened if they wish too. Most won&#8217;t.</p>
<p>The Offline toolkit extends the Dojo offline storage engine. A portable, browser and OS, storage engine. Basically if you are using Firefox 2.x, then the storage engine uses Firefox&#8217;s offline storage capability, otherwise it uses Flash as the storage engine. This functionality has been in Dojo for sometime, so is well baked.</p>
<p>At the <a target="_blank" title="Web2.0 Expo" href="http://web2expo.com/">Web 2.0 Expo</a>, Brad Neuberg (the developer) gave a presentation on the Offline Toolkit; watch is his presentation for more details.</p>
<p><embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/media/swf/FLVVideoSolo.swf' flashvars='id=2437229&#038;emailUrl=http%3A%2F%2Fvideo.yahoo.com%2Futil%2Fmail%3Fei%3DUTF-8%26vid%3D427145%26fr%3Dyfp-t-501&#038;imUrl=http%253A%252F%252Fvideo.yahoo.com%252Fvideo%252Fplay%253Fei%253DUTF-8%2526vid%253D427145&#038;imTitle=Creating%2BOffline%2BWeb%2BApplications%2BWithin%2BThe%2BBrowser&#038;searchUrl=http://video.yahoo.com/video/search?p=&#038;profileUrl=http://video.yahoo.com/video/profile?yid=&#038;creatorValue=YnJhZG5ldWJlcmc%3D&#038;vid=427145' type='application/x-shockwave-flash' width='425' height='350'></embed></p>
<p>Having the capability to build web applications that are &#8220;connectivity&#8221; aware is a big boost to the acceptance of web applications. Ubiquitous connectivity is still a dream. The thing is that the way Web applications are designed and developed changes as a result. The <a title="Model View Controller Pattern" href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> structure of your typical Web application now needs to push the entire <a title="Model View Controller Pattern" href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> structure into the Javascript. Rock on <a title="Presentation Absction Control Architechural Pattern" href="http://en.wikipedia.org/wiki/Presentation-abstraction-control">PAC</a>! Dojo is well suited for this architecture as it includes many features for neatly structuring the Javascript application and deploying just what is needed and it can incorporate <a title="Comet" href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/05/03/offline-web-apps-now-a-lot-more-achievable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurrency: You&#8217;ll have to understand it one day soon.</title>
		<link>http://www.outofrhythm.com/2007/04/30/concurrency-youll-have-to-understand-it-one-day-soon/</link>
		<comments>http://www.outofrhythm.com/2007/04/30/concurrency-youll-have-to-understand-it-one-day-soon/#comments</comments>
		<pubDate>Mon, 30 Apr 2007 10:27:47 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Scaling]]></category>
		<category><![CDATA[Web2.0]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/04/30/concurrency-youll-have-to-understand-it-one-day-soon/</guid>
		<description><![CDATA[It is pretty clear that scale is an important topic these days. Scaling cheaply and reliably in a seamless fashion to boot. I noticed recently several talks/tutorials on scale and concurrency at OSCON 2007 and that Web2.0 Expo and ETech07 had their share too. There have also been numerous mentions of Live Journal's and Myspace's approach to scaling out recirculating recently. These approaches are considered the current blue-print for handling scale of web applications based on LAMP. I suspect mostly because it suggests you should forget about scaling and just let your architecture evolve along the lines prescribed i.e. Scale is a nice problem to have. And in a pragmatic-way I totally agree with that.]]></description>
			<content:encoded><![CDATA[<p>It is  pretty clear that scale is an important topic these days. Scaling cheaply and reliably in a seamless fashion to boot. I noticed recently several talks/tutorials on scale and concurrency at <a title="OSCON 2007: Scalable Internet Architectures" href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12458">OSCON 2007</a> and that <a title="Web2.0 Expo" href="http://www.web2expo.com/">Web2.0 Expo</a> and  <a title="Etech07 Conference Schedule" rel="external" href="http://conferences.oreillynet.com/pub/w/52/schedule.html">ETech07</a><span class="urlexpansion"> had their share too. </span>There have also been numerous mentions of <a title="Scaling Live Journal" rel="external" href="http://www.slideshare.net/sekimura/inside-livejournals-backend-april-2004/1">Live Journal&#8217;s</a><span class="urlexpansion"> </span>and <a title="Scaling MySpace" rel="external" href="http://www.baselinemag.com/article2/0,1540,2082921,00.asp">Myspace&#8217;s</a><span class="urlexpansion"> </span>approach to scaling out recirculating recently. These approaches are considered the current blue-print for handling scale of web applications based on LAMP. I suspect mostly because it suggests you should forget about scaling and just let your architecture evolve along the lines prescribed i.e. Scale is a nice problem to have.  And in a pragmatic-way I totally agree with that.</p>
<p><!-- Tidy found serious XHTML errors:  --><a title="A Returning Forager" href="http://www.flickr.com/photos/max_westby/15289490/"><img width="125" height="175" align="left" alt="Returning forager " id="image19" title="Returning forager " src="http://www.outofrhythm.com/wp-content/uploads/2007/04/15289490_7b2f9beb43.thumbnail.jpg" /></a>The general approach at the application layer can be summed up as: Partition your database around  some key  object in the system, typically a user. Replicate these partitions around your various  database servers. Deploy your front-end on a web-farm and potentially factor out some application functionality to dedicated servers. Manage sessions separately either by creating a discrete service within the architecture or by resolving sessions to a particular database partition &#8211; basically push state down to a data-store where the application coordination happens. Then cache whatever you can. That&#8217;s it &#8211; well the devil is in the details.</p>
<p><a title="Don over at SmugMug" href="http://blogs.smugmug.com/don/">Don  MacAskill&#8217;s</a> <a title="ETech07: Set Amazon's Servers on Fire no yours." href="http://blogs.smugmug.com/onethumb/files/ETech-SmugMug-Amazon-2007.pdf">presentation at ETech07</a> details <a title="SmugMug" href="http://www.smugmug.com/">SmugMug&#8217;s</a> architecture using Amazon&#8217;s <a title="Amazon Simple Storage Service" href="http://www.amazon.com/S3-AWS-home-page-Money/b/ref=sc_fe_l_2/103-5348951-5425413?ie=UTF8&#038;node=16427261&#038;no=3435361&#038;me=A36L942TSJ2AJA">S3</a> and experiments with <a title="Amazon Elastic Compute Cloud" href="http://www.amazon.com/b/ref=sc_fe_l_2/103-5348951-5425413?ie=UTF8&#038;node=201590011&#038;no=3435361&#038;me=A36L942TSJ2AJA">EC2</a> and <a title="Amazon's Simple Queue Service" href="http://www.amazon.com/Simple-Queue-Service-home-page/b/ref=sc_fe_l_2/103-5348951-5425413?ie=UTF8&#038;node=13584001&#038;no=3435361&#038;me=A36L942TSJ2AJA">SQS</a>. It contains a great lot of information about using Amazon&#8217;s Web Services. The utility model &#8211; or compute power on demand &#8211; of deploying services will become very prevalent over the next few years. While Amazon are the first movers, <a href="http://www.outofrhythm.com/www.google.com">others</a> will follow with potentially <a title="Google's MapReduce Paper" href="http://labs.google.com/papers/mapreduce.html">more powerful computing models</a>.</p>
<p>All good. Basically they are all large grained approaches to leveraging concurrent execution using lots of boxes. Application design is just chopped up into a few tiers. It is easy to understand and at this point we can happily forget about concurrency because each component in the system is a big black box with synchronous calls between them.</p>
<p>Several things are happening that suggest our sequential synchronous existence may be over.  <a title="OSCON2007: Programming for low power usage: It's everyones responsibility" href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12958">Power consumption</a>, Multi-core cpu&#8217;s, on-demand scaling as exemplified by Amazon&#8217;s EC2 service, transaction reliability and the rise of data mining; All make confronting scaling issues early on important for your application architecture.</p>
<p>The situation for CPU design and the implications for software design was clearly discussed, back in 2005, in a Dr Dobbs article by Herb Sutter. <a title="The Free Lunch is over." rel="external" href="http://www.gotw.ca/publications/concurrency-ddj.htm"><em>The Free Lunch is Over: A Fundamental Turn Towards Concurrency in Software</em></a><span class="urlexpansion" />. In the article Herb discusses the limitations of chip design and why this will lead to a focus on multi core design rather than increasing clock cycles on a single core. A key barrier to increasing the clock speed is power consumption.  Heat is a by product of power consumption so power consumption isn&#8217;t related just to the operation of a machine but the cooling required to keep it operating. Power consumption is a major issue for <a title="Data center power consumption" rel="external" href="http://www.public-cio.com/story.php?id=2006.12.19-102970">Google and any company that runs data centers</a><span class="urlexpansion" />.  Even my little server room at home should have air conditioning during the summer months! Server power consumption is one of the motivations given as <a title="Justification for Energy Innovation Conference" rel="external" href="http://radar.oreilly.com/archives/2007/01/call_for_energy.html">justification</a><span class="urlexpansion"> </span>for O&#8217;Reilly Media&#8217;s <a class="external" title="http://radar.oreilly.com/archives/2007/02/energy on the a.html" rel="external" href="http://radar.oreilly.com/archives/2007/02/energy_on_the_a.html">conference on energy innovation</a><span class="urlexpansion"> </span>later this year.</p>
<p>While two or four core cpu architectures are now mainstream we are seeing an increase in the number of cores. An example demostrated recently is <a title="Intel's 80-core CPU" rel="external" href="http://www.eetasia.com/ART_8800453831_1034362_db7dce9c200702_no.HTM">Intel&#8217;s 80-core research chip crunches 1 Tflop at 3.2 GHz</a><span class="urlexpansion"> </span></p>
<p>&#8220;Intel&#8217;s 80-core chip is basically a mainframe-on-a-chip-literally,&#8221; said McGregor. &#8220;It&#8217;s the equivalent of 80 blade processors plugged into a high-speed backplane, or 80 separate computers using a high-speed hardware interconnect.&#8221;</p>
<p>I suspect that given Moore&#8217;s Law we can expect some associated Law regarding the number of cores on a square inch wafer increasing exponentially over the coming years. No doubt there will be some correlation to Peak Oil issues and increasing awareness of Global Warming as the market impetus for more cores. If approaches to concurrency in software are any indication, I can easily imagine clock speeds decreasing. Chip designers would focus on throughput rather than outright performance. This would suggest the rise of commercial asynchronous chip designs. [Maybe they are already - I know nothing about current chip designs beyond their multi-coreness.] It would also fit with Clayton Christensen&#8217;s &#8220;<a title="law of conservation of modularity; a.k.a Law of attractive profits" rel="external" href="http://www.itconversations.com/transcripts/135/transcript-print135-1.html"><strong>law</strong> of conservation of <strong>modularity</strong></a>&#8220;.</p>
<p>Current software development techniques can only hide so much. Eventually we will need to utilise the multiple cores to maximise the benefit they provide. Multi-threading is notoriously difficult to do correctly so I don&#8217;t see that as a solution. Asynchronous event or message passing approaches provide a better way. Basically they model how hardware works and <a title="Mach Kernel Concepts" rel="external" href="http://en.wikipedia.org/wiki/Mach_microkernel#Mach_concepts">micro-kernel operating systems</a><span class="urlexpansion" /> have been modelled in a similar fashion.</p>
<p>We have being doing this application composition stuff with messages for a while now (albeit synchronous in nature) with Unix pipes and the Web but these architectures are only just beginning to be appreciated beyond administration script-based coordination Unix pipes have been traditionally used for.</p>
<p>Google have raised awareness and appreciation with publication on internal toolkits like <a title="Google's Map Reduce paper" rel="external" href="http://labs.google.com/papers/mapreduce.html">MapReduce</a><span class="urlexpansion" />, <a title="Google's Chubby lock manager paper" rel="external" href="http://labs.google.com/papers/chubby.html">Chubby</a><span class="urlexpansion"> </span>and <a title="Google's Big Table column database paper" rel="external" href="http://labs.google.com/papers/bigtable.html">BigTable</a><span class="urlexpansion" />.</p>
<p>One thing that surprises me about various presentations around scaling web applications is the lack of mention about message passing, specifically message queues or event buses. These are the staple tools when you want to scale and ensure data doesn&#8217;t get lost. Then again many of the consumer oriented services don&#8217;t need such reliability. The cost of losing a customers IM message, or comment post, or uploading of an image is minimal. An annoyance at worst. As web applications evolve into business applications losing data, due to scale demands, has real costs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/04/30/concurrency-youll-have-to-understand-it-one-day-soon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The next thing after 2.0!</title>
		<link>http://www.outofrhythm.com/2007/04/14/the-next-thing-after-20/</link>
		<comments>http://www.outofrhythm.com/2007/04/14/the-next-thing-after-20/#comments</comments>
		<pubDate>Sat, 14 Apr 2007 00:16:25 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ATOM]]></category>
		<category><![CDATA[Content Routing]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Personalisation]]></category>
		<category><![CDATA[Web3.0]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/04/14/the-next-thing-after-20/</guid>
		<description><![CDATA[It seems technology suffers from fashion as much as the fashion industry in that we must keep moving on to the next big thing before we have even understood the current thing. Regardless, despite disliking the term and being too lazy to even attempt defining a new one, recently I took the bait over at [...]]]></description>
			<content:encoded><![CDATA[<p>It seems technology suffers from fashion as much as the fashion industry in that we must keep moving on to the next big thing before we have even understood the current thing. Regardless, despite disliking the term and being too lazy to even attempt defining a new one, recently I took the bait over at <a title="Read Write Web" href="http://www.readwriteweb.com/">ReadWriteWeb</a> to <a title="Web Expo Competition" href="http://www.readwriteweb.com/archives/web_20_expo_giveaway.php">provide a definition for Web3.0</a>; It seems <a title="Definition of Web3.0" href="http://www.readwriteweb.com/archives/define_web_30_contest_winners.php">they liked my definition of  Web3.0</a>. Here is what I wrote:</p>
<p><strong><em>Web 1.0 â€“ Centralised Them.<br />
Web 2.0 â€“ Distributed Us.<br />
Web 3.0 â€“ Decentralised Me</em></strong></p>
<p>Hindsight: Web 1.0 turned into a broadcast medium. It was all about them. A case of industrial age thinking applied to a new landscape. Web 2.0, largely based on an analysis of what worked in Web1.0, is an alignment with TBLâ€™s initial vision of the Web. The Web as connective tissue between us. Platform, participation and conversation. Really it is more than the Web. It is the Internet. It is new practices too. Ultimately it is about connectivity; applying constrains in the form of some sort-of agreed upon standards that make it easier to talk to one another. With new layers of connective wealth come new tools. In Web2.0â€™s case that allowed new forms of communication. With it associated â€˜acceptableâ€™ business models â€“ hence the Google economy.</p>
<p>Web 1.0 was the first time to show the value of standards, Web 2.0 is teaching us how liberating standards can be. Web 3.0 will reflect on what worked in Web2.0. It will mean more constraints for better communication/connectivity. Improved connectivity will mean revised practice and new business models.</p>
<p>Therefore Web 3.0 must be about me! Itâ€™s about me when I donâ€™t want to participate in the world. Itâ€™s about me when I want to have more control of my environment particularly who I let in. When my attention is stretched who/what do I pay attention to and who do I let pay attention to me. It is more effective communication for me!</p>
<p>When it is about me it means Web 3.0 must be about more semantics in information, but not just anything. Better communication comes from constraints in the vocabularies we use. Micro formats will lead here helping us to understand RDF and the Semantic Web. With more concern over my attention comes a need to manage the flow of information. This is about pushing and pulling information into a flow that accounts for time and context. Market based reputation models applied to information flows become important. Quality of Service (QOS) at the application and economic layer where agents monitor, discover, filter and direct flows on information for me to the devices and front-ends that I use. The very notion of application [Application is a very stand-alone PC world-view. Forget the Web, Desktop, Offline/Online arguments] disappears into a notion of components linked by information flows. Atom, the Atom API and semantics, particularly Micro formats initially, are the constraints that will make this happen. Atom features not because of technical merit but by virtue of itâ€™s existing market deployment in a space that most EAI players wonâ€™t even consider a market opportunity. Hence Web based components start using Atom API as the dominate Web API â€“ Feed remixing is indicative. Atom will supplant WS* SOA.</p>
<p>User centric identity takes hold. This extends the idea that everyone has an email address and mobile number, why not manage it for single sign-on and more. Universal Address-book anyone?</p>
<p>More Market based brokerage business models emerge, earning revenue on the â€˜turnâ€™, as we learn more about the true power of AdSense/Adwordâ€™s underling business model and realise there are close parallels to the worlds financial markets.</p>
<p>Reliable vocabularies, user identity and trusted [i.e. user controllable] reputation models, market based brokerage business models all become a necessity as the more decentralized event driven web becomes a reality.</p>
<p><strong><em>Web 3.0 â€“ a decentralized asynchronous me.</em></strong></p>
<p>There were a few things I forgot to put into the above definition and from the comments a few things that need explanation. I&#8217;ll attempt to expand on the above in latter posts as I&#8217;m a little stuck for time.</p>
<p>What I left off is the relationship to the physical world; &#8220;the Internet of Things&#8221; with 2D Bar Codes, RFID etc. and Just-in-time just-about-one-to-one manufacturing that is partly represented by what <a title="Threadless" href="http://www.threadless.com/">Threadless</a> and others are doing. I&#8217;ll also need to clarify what I mean by Them, Us, Me. And why Web 3.0 cannot be classified as &#8220;Read / Write / Execute.&#8221;</p>
<p>Some comments past on to me ask how is this different from what Web2.0 is about? At a technology level it really isn&#8217;t, the technology is already here. From a cultural and hence practice level it is. As we starting seeing more value in using things like Atom, Meta-Data, Open-Data and feed remixing etc, then how we use the Internet and our connected devices will change. That is what, at the core, is the basis of Web2.0 &#8211; changing usage and practice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/04/14/the-next-thing-after-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Is Erlang the language of choice</title>
		<link>http://www.outofrhythm.com/2007/03/07/13/</link>
		<comments>http://www.outofrhythm.com/2007/03/07/13/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 03:52:29 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/03/07/13/</guid>
		<description><![CDATA[Commenting on the recent (early) announcement of the new Pragmatics book on Programming Erlang, Tim asks if Erlang will be &#8220;language of choice for concurrent programming.&#8221; I&#8217;ve had this discussion with people over the few years that I have been dabbling in Erlang. Firstly there is a question of Erlang adoption, regardless of Erlang&#8217;s suitability [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="external" href="http://radar.oreilly.com/archives/2007/03/concurrent_prog_1.html">Commenting on</a><span class="urlexpansion"> </span>the recent (early) announcement of the new Pragmatics book on <a rel="external" href="http://www.pragmaticprogrammer.com/titles/jaerlang/">Programming Erlang</a><span class="urlexpansion" />, Tim asks if <a href="http://www.outofrhythm.com/www.erlang.org">Erlang</a> will be &#8220;<span style="font-style: italic">language of choice for concurrent programming.</span>&#8221; I&#8217;ve had this discussion with people over the few years that I have been dabbling in Erlang.</p>
<p>Firstly there is a question of Erlang adoption, regardless of Erlang&#8217;s suitability for concurrent programming. Two barriers stand in the way of Erlang adoption for many people, Erlang two strengths:concurrency and functional language.</p>
<p>Functional Programming is not culturally accept or understood very widely. Still considered as more academic. Real effort is required to learn a new programming paradigm so you do it out of interest. It is great that languages like Ruby, Python, XSLT and a rise in the love for Javascript (Javascript is a Functional Programming Language at it&#8217;s core), all help raise the level of understanding for expressive power in languages. These languages all make functional primitives available which is good. However unless you have read <a rel="external" href="http://mitpress.mit.edu/sicp/">Abelson</a><span class="urlexpansion"> </span>or similar, done <a rel="external" href="http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/">a course in functional languages</a><span class="urlexpansion" /> the concepts, when directly confronted with them, are just to foreign to get to grips with. We don&#8217;t think functionally even though it is not that different from an Object Oriented perspective. Maybe that illustrates my point; most OO languages are used in a object based fashion. It is just so hard to shake our procedural world view.</p>
<p>I&#8217;m sure there is a relationship between this and the <a class="external" title="http://www.salas.com/weblogs/archives/000522.html" rel="external" href="http://www.salas.com/weblogs/archives/000522.html">markets acceptance</a><span class="urlexpansion"> </span>of <a class="external" title="http://en.wikipedia.org/wiki/Lotus Improv" rel="external" href="http://en.wikipedia.org/wiki/Lotus_Improv">Lotus Improv</a><span class="urlexpansion"> </span>(now <a class="external" title="http://www.quantrix.com/" rel="external" href="http://www.quantrix.com/">Quantrix</a><span class="urlexpansion" /> &#8211; think OLAP spreadsheet and is really good for financial modelling); in Excel you could be <span class="external">ad-hoc and <a href="http://web.archive.org/web/20041120033732/http://www.adambosworth.net/archives/000031.html">evolve</a></span><span class="urlexpansion"> </span>what you did, Improv forced you to think first.  Which reminds me that millions of people program in a <a class="external" title="http://www.noahcampbell.info/2007/02/11/excel-is-not-a-functional-langauge-got-it/" rel="external" href="http://www.noahcampbell.info/2007/02/11/excel-is-not-a-functional-langauge-got-it/">functional manner</a><span class="urlexpansion" />, they just don&#8217;t know it. Anyway it doesn&#8217;t help that a lot of writing about functional programming concepts are just explained badly.<br />
<!-- Tidy found serious XHTML errors:  --><br />
The second difficulty with Erlang is concurrency. Again the concepts behind concurrent asynchronous message passing software development are just unnatural. We solve and think of problems synchronously. Weird since we live and operate in an asynchronous world. The odd thing is that in Object Oriented systems &#8220;messages&#8221; are passed between objects. Component development is not that different either. In Erlang Processes are objects and messages are passed between them.</p>
<p>Aside from the above I can&#8217;t really comment on Erlang being the language of choice for concurrent systems. For me it is, therefore I&#8217;ll just spread the word. Take a <a class="external" title="http://www.erlang.org/" rel="external" href="http://www.erlang.org/">look</a><span class="urlexpansion" />. A clean simple language with a supporting framework for building robust systems. <a href="http://armstrongonsoftware.blogspot.com/index.html">Joe&#8217;s</a> latest book, that I purchased immediately, will be a great contribution to the language and no doubt will introduce many more people to the language too.</p>
<p>Update: Seems Ralph Johnson thinks Erlang is Object Oriented too. In a recent post &#8220;<a title="Erlang, the next Java" href="http://www.cincomsmalltalk.com/userblogs/ralph/blogView?entry=3364027251">Erlang, the next Java</a>&#8221; he expresses a similar view: that Erlang is an Object Oriented Language&#8230;Therefore the Erlang Community (Joe Armstrong in particular) needs to down play the importance of the Functional Language aspects and instead focus on the Message passing between processes (i.e. Processes are just objects that receive and send messages).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/03/07/13/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Waka: Paddling a new canoe</title>
		<link>http://www.outofrhythm.com/2007/02/09/waka-paddling-a-new-canoe/</link>
		<comments>http://www.outofrhythm.com/2007/02/09/waka-paddling-a-new-canoe/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 03:08:38 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ReST]]></category>
		<category><![CDATA[Waka]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/02/09/waka-paddling-a-new-canoe/</guid>
		<description><![CDATA[As I mentioned in a earlier post Roy Fielding has started a ASF Lab for Web Architecture that is intended to be a place to work on documentation regarding Web Architecture. This includes existing protocol improvements and Waka a new HTTP upgrade. Waka is still in the head of Roy Fielding and the changes have [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in a earlier <a title="Apache Lab Established for Waka" href="http://www.outofrhythm.com/2007/01/30/waka-apache-lab-established/">post</a> <a title="Roy Fielding" href="http://roy.gbiv.com/">Roy Fielding</a> has started a <a title="Apache Labs" href="http://labs.apache.org/">ASF Lab</a> for Web Architecture that is intended to be a place to work on documentation regarding Web Architecture. This includes existing <a title="Many labs or one" href="http://mail-archives.apache.org/mod_mbox/labs-labs/200611.mbox/browser">protocol improvements and Waka a new HTTP upgrade</a>. Waka is still in the head of Roy Fielding and the changes have been eluded to over eight years in various ApacheCon presentations; in various Apache 2.0 design notes and emails focused mostly around the IO-layer and request-response processing chains in Apache 2.0; emails to <a title="ReST Discuss List" href="http://tech.groups.yahoo.com/group/rest-discuss/">rest-discuss</a> and references to various draft RFC and previous HTTP next generation efforts &#8211; rHTTP, W3C&#8217;s HTTP-NG and Spero&#8217;s HTTP-ng.</p>
<p>From a <a title="Jon Udell talks to Roy Fielding" href="http://weblog.infoworld.com/udell/2006/08/25.html#a1514">podcast</a> with Jon Udell, Roy describes Waka thus.</p>
<blockquote><p>Waka is a binary token based replacement protocol for HTTP. The goal is to create a language independent mechanism for exchanging data oriented messages using the ReST architectural style &#8211; the principals and design.</p>
<p>An application protocol that is efficient as any custom protocol yet generally applicable like HTTP. The difference is that we get rid of HTTP syntax, make it possible to interleave meta-data and data in independent streams/frames. Doing this in a way that is efficient as possible without being entirely generic i.e. Waka is not attempting to replace TCP. This means Waka would be suitable to application integration inside the firewall and well as outside.</p></blockquote>
<p><a title="Maaori Waka" href="http://www.flickr.com/photos/martinhipp/80436938/"><img align="left" alt="Maori Waka" id="image7" title="Maori Waka" src="http://www.outofrhythm.com/wp-content/uploads/2007/01/80436938_afe0a6020a.thumbnail.jpg" /></a>Why name it Waka? Waka is the <a href="http://en.wikipedia.org/wiki/Aotearoa">Aotearoa</a> (New Zealand) <a href="http://en.wikipedia.org/wiki/M%C4%81ori_language">MÄori </a>name for Canoe still used for ceremonial purposes. It is one of the few four-letter words suitable for a protocol name. And Roy is part MÄori.</p>
<p>From the last <a href="http://gbiv.com/protocols/waka/200211_fielding_apachecon.ppt">substantial presentation</a> Roy gave about Waka the following can be gleaned.</p>
<p><strong>Deployment</strong></p>
<p>Deployable within an HTTP connection via the HTTP/1.1 Upgrade header field with a defined mapping to HTTP/1.1 proxies.</p>
<p><strong>Syntax</strong></p>
<p>A uniform syntax regardless of the message type and direction that also allows for padding for 32/64 bit alignment. There is a discussion in <a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm">Chapter 6</a> of Roy&#8217;s dissertation covering uniform syntax and numerous discussions about the short-comings of layered encodings and MIME.</p>
<p>Messages are self-descriptive using explicit typing for message structure and fields. An indication of mandate and scope of the fields.</p>
<p>Association of meta-data to control, resource and representation. Allows for Premature termination of request or response.</p>
<p>To be more efficient the protocol will use tokens for all standard elements where a URI reference can be used in place of any token. Macros (client-defined syntax short-hand) can be established per connection. Meta-data delivery can be interleaved with data.</p>
<p><strong>New Request Semantics</strong></p>
<p><em>RENDER</em>: display/print/speak this representation.</p>
<p><em>MONITOR:</em> set up a subscription to be notified of resource state changes. Notification are sent to a resource specified as part of the request. Another name commonly used for these semantics is WATCH.</p>
<p><em>Authoring Method:</em> DAV simplified and by that I would assume removal of the DAV property methods. Elimination of non-resource identifiers and reintroduction of PATCH.</p>
<p><em>Request control data:</em> request identifier to support request pipelining removing the head-of-line bottleneck in HTTP. A Transaction identifier, a URI, meaning transactions can be treated as resources. And relative priority &#8211; relative to requests in a connections pipeline.</p>
<p><strong>New Response Semantics</strong></p>
<p>Self-descriptive binding to the request by echoing the request id, method and target URI. This basically enables an asynchronous transport.</p>
<p>Cache key explicitly described; caches no longer need to save request fields or guess about Vary information.</p>
<p><!-- Tidy found serious XHTML errors:  --></p>
<p>Unsolicited Responses for cache invalidation messages and multicast event notices.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/02/09/waka-paddling-a-new-canoe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scaling Yahoo! Pipes</title>
		<link>http://www.outofrhythm.com/2007/02/09/scaling-yahoo-pipes/</link>
		<comments>http://www.outofrhythm.com/2007/02/09/scaling-yahoo-pipes/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 00:45:14 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ATOM]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Content Routing]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/02/09/scaling-yahoo-pipes/</guid>
		<description><![CDATA[If you&#8217;ve been trying to access Yahoo! Pipes and come up with a request for Mario then have some sympathy for Yahoo! as Dare Obasanjo comments. As someone who works on large scale online services for a living, Yahoo! Pipes seems like a scary proposition. Basically the service is likely to have hit the twin [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left" alt="Yahoo! Pipes are Clogged" id="image11" src="http://www.outofrhythm.com/wp-content/uploads/2007/02/yahoo-pipes-clogged.thumbnail.png" />If you&#8217;ve been trying to access <a href="http://pipes.yahoo.com">Yahoo! Pipes</a> and come up with a request for <a href="http://en.wikipedia.org/wiki/Mario_%28Nintendo_Character%29">Mario </a>then have some sympathy for Yahoo! as <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=258d634c-df5e-4420-a986-3e9d87a8f6da">Dare Obasanjo</a> comments.</p>
<blockquote><p>As someone who works on large scale online services for a living, Yahoo! Pipes seems like a scary proposition.</p></blockquote>
<p>Basically the service is likely to have hit the twin sisters of scaling large systems, CPU and I/O bounds.The nature and flexibility that Yahoo! Pipes provides: User defined queries over changing data streams that are activated every time a pipe is &#8220;pulled&#8221; will create a heavy load. Dare continues.</p>
<blockquote><p>It combines providing a service that is known for causing scale issues due to heavy I/O requirements (i.e. serving RSS feeds) with one that is known for scaling issues due to heavy CPU <strong>and </strong>I/O requirements (i.e. user-defined queries over rapidly changing data).  I suspect that this combination of features makes <a href="http://pipes.yahoo.com/">Yahoo! Pipes</a> resistant to popular caching techniques especially if the screenshot below is any indication of the amount of flexibility [and thus processing power required] that is given to users in creating queries.</p></blockquote>
<p>This has always been an issue if you consider a centralised event routing infrastructure. I suspect it is made worse by the &#8220;pull&#8221; nature of feeds. Even if if-modified headers or etags are used in the HTTP request. To determine if a user-defined feed has changed it would require processing the whole chain effectively adding a whole lot of processing over head. This is however a naive way of approaching the problem. An internal event architecture and caching are applicable. The caching is just different to the way content caching currently works. However the answer, I suspect, is not to centralise. The general infrastructure represented by Yahoo! Pipes should be deployed by millions. I have my own router for IP traffic so why not have my own router for application data traffic?</p>
<blockquote />
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/02/09/scaling-yahoo-pipes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo Pipes a Cloud based Feed Router</title>
		<link>http://www.outofrhythm.com/2007/02/09/yahoo-pipes-a-cloud-based-feed-router/</link>
		<comments>http://www.outofrhythm.com/2007/02/09/yahoo-pipes-a-cloud-based-feed-router/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 23:26:32 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ATOM]]></category>
		<category><![CDATA[Content Routing]]></category>
		<category><![CDATA[Personalisation]]></category>
		<category><![CDATA[Visual Programming]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/02/09/yahoo-pipes-a-cloud-based-feed-router/</guid>
		<description><![CDATA[Yahoo Pipes was released yesterday (last night NZ Time). What Yahoo Pipes represents is the next stage in using the Web as a platform. That is: RSS and Atom are becoming the connective tissue of the web and web applications the components. This was the basis of my Talk at Kiwi Foo &#8211; &#8220;Replacing my [...]]]></description>
			<content:encoded><![CDATA[<p>Yahoo Pipes was released yesterday (last night NZ Time). What Yahoo Pipes represents is the next stage in using the Web as a platform. That is: RSS and Atom are becoming the connective tissue of the web and web applications the components. This was the basis of my Talk at Kiwi Foo &#8211; &#8220;Replacing my Wife with Atom.*&#8221; I commented I was surprised this [general routing infrastructure for Atom, not the replacement of my Wife] had not been done yet, after all the ideas of routing and remixing feeds have been discussed for a <a href="http://technology.burningbird.net/stuff/who-is-your-audience-and-what-are-you-trying-to-acccompish-2/">long time</a> in the early history of RSS. <a href="http://207.22.26.166/bytecols/2001-11-26.html">Before that</a> if you consider RSS/ATOM and the infrastructure around it as a Universal Event Bus. As <a href="http://jeremy.zawodny.com/blog/archives/008513.html">Jeremy Zawodny</a> states <em>&#8220;For far too long now RSS has been used in ways that don&#8217;t really tap its true potential.&#8221;</em> Well now Yahoo is making a start in the right direction.</p>
<p>Unfortunately I can&#8217;t get in, just getting &#8220;Our Pipes are Clogged!&#8221; &#8211; missed opportunity or what? Well it shows, to some degree that at least, the info junkies want this sort of thing. As a result I can&#8217;t really comment too much on the service itself, but I can comment on the underlining ideas &#8211; this was after all the motivation for re-entering the blogsphere.</p>
<p><em>[Tim O'Reilly has a good <a href="http://radar.oreilly.com/archives/2007/02/pipes_and_filte.html">write-up</a> as does <a href="http://www.readwriteweb.com/archives/yahoo_pipes_rss_remixer.php">ReadWriteWeb</a> and <a href="http://www.dashes.com/anil/2007/02/08/yahoo_pipes">Anil Dash</a>. While Brady Forrest looks a <a href="http://radar.oreilly.com/archives/2007/02/yahoo_pipes_the.html">little</a> <a href="http://radar.oreilly.com/archives/2007/02/yahoo_pipes_dec.html">closer</a>. ]</em></p>
<p>The basis of the talk I gave at Kiwi Foo was this:</p>
<blockquote><p>Atom and the Atom publishing protocol will disrupt the way &#8216;network&#8217; applications are integrated and become the way Internet scale Pub+Sub and routable applications architectures will evolve&#8230;Therefore make your Web API&#8217;s atom based to make integration easier &#8211; Look Ma no code!</p></blockquote>
<p>While to some degree the arguments apply to RSS, ATOM [IMHO] has the advantage in the longer term. The arguments are not new. <a href="http://www.ics.uci.edu/%7Erohit/">Rohit Khare</a> has been thinking about this stuff for a long time. He gave a talk about <a href="http://www.ics.uci.edu/%7Erohit/ETcon-SOAProuting.ppt">SOAP routing</a> at <a href="http://conferences.oreillynet.com/cs/et2002/view/e_sess/2234">ECON 2002</a>. I just applied similar arguments to ATOM but tried to include the human component &#8211; conceptually feeds are more human friendly than SOAP ever will be. That observation then naturally leads into a <a href="http://www.itconversations.com/shows/detail135.html">Disruptive Technology</a> argument w.r.t. <a href="http://en.wikipedia.org/wiki/Enterprise_Application_Integration">EAI</a>. Just take a look at the <a href="http://dabbledb.com/blog/?p=47">dabbleDB demo</a> that <a href="http://dabbledb.com/blog/?p=48">Avi Bryant</a> put together at  FOO last year, or <a href="http://www.rssbus.com/">RSSBus</a> for examples. (there are several other examples that I&#8217;ll leave for now.)</p>
<p>An observation I attempted to justify was: prior technologies have attempted to implement Internet Scale Pub+Sub but failed not because the technologies weren&#8217;t up to it (they may not have been) but that as a broader community we still haven&#8217;t grokked what the Web as a platform really means. As a result we haven&#8217;t understood what integrating applications  beyond the Point-2-Point mashup type actually involves. Oddly enough though we are use to solving these integration issues at the network-level. Just look at the Internet and TCP/IP. The same principles of message (packet) based approaches apply in the Enterprise as any EAI vendor will tell you. ATOM is approaching the EAI issue from the grass-roots up. Unlike SOAP that was top down even though it professed not to be. More importantly for this sort of service composition to really take off Atom and the Web needs a &#8220;joe average&#8221; programming model.</p>
<p>Yahoo Pipes is a giant leap in that direction for the Web even though we have been programming the Web, for human consumption, for sometime now. Every time you add a feed URL to a feed reader or personalised home page you are connecting disparate web services together, you are programming. <a href="http://www.ni.com/labview/">Labview </a>has been doing this sort of thing for a long time. Lego <a href="http://www.lego.com/eng/education/mindstorms/home.asp?pagename=robolab">RoboLab</a> and the Lego Robotics programming environment, <a href="http://msdn.microsoft.com/robotics/learn/default.aspx#vpl">Microsoft Robotics Studio Visual programming</a> are other great examples. <a href="http://www.bengoodger.com/">Ben Goodger</a> recently pointed me to another example on OSX, <a href="http://www.apple.com/macosx/features/automator/">Automato</a><a href="http://www.apple.com/macosx/features/automator/">r</a>.</p>
<p>Does this mean the programming model for the Web platform is a visual wiring diagram. Why not? Nor does it have to be provided as a cloud based service like Pipes. Since Pipes produces feeds these can then be glued to an instance of Pipes (RSSBus/Automator) running inside my firewall, on my desktop, or in my Browser making the offline and online divide seamless &#8211; portable &#8216;backend&#8217; widgets for the Web (more on this later). Aside from all this, Pipes adds an interesting twist to information personalisation.<br />
* [in case you are wondering the title of my talk refers to a user scenario managing and filtering many information sources and notifying me of things that are important at a given time or place using the most appropriate delivery. A job my partner, Lynne,  currently does to some extent and Gmail does for my email.]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/02/09/yahoo-pipes-a-cloud-based-feed-router/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recovering from Kiwi Foo</title>
		<link>http://www.outofrhythm.com/2007/02/05/recovering-from-kiwi-foo/</link>
		<comments>http://www.outofrhythm.com/2007/02/05/recovering-from-kiwi-foo/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 03:57:59 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/02/06/recovering-from-kiwi-foo/</guid>
		<description><![CDATA[It&#8217;s over. I&#8217;m shattered. And it was absolutely fantastic. Lack of sleep is however has taken a toll. Kiwi Foo (a.k.a Baa Camp), an O&#8217;Reilly Media spin-off unconference organised by Nat Torkington was held in Warkworth over the weekend. The photo-stream over at flickr captures the activities. Attended by a mixed bag of individuals from [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s over. I&#8217;m shattered. And it was absolutely fantastic. Lack of sleep is however has taken a toll. Kiwi Foo (a.k.a Baa Camp), an <a href="http://www.oreilly.com/">O&#8217;Reilly Media</a> spin-off <a href="http://en.wikipedia.org/wiki/Unconference">unconference </a>organised by <a href="http://radar.oreilly.com/nat/">Nat Torkington</a> was held in Warkworth over the weekend. The <a href="http://www.flickr.com/search/?q=kiwifoo">photo-stream</a> over at flickr captures the activities.</p>
<p>Attended by a mixed bag of individuals from geeks, user experience designers, artists generally &#8211; we&#8217;re all artists in some way &#8211; business bods, government; you get the picture. The one shared interest was the emerging technology space, how it is changing our society and making sure that we are doing the changing. It was the cross section of interesting individuals, the interactions, the sharing of perspectives that made the event very special from my point-of-view. I&#8217;ve taken away a lot of tacit knowledge I doubt I would have obtained elsewhere &#8211; Thanks Nat and Jenine. Also if it wasn&#8217;t for the Great Coffee that <a href="http://www.publicaddress.net/hardnews">Russell</a> procured I doubt I could have operated on so little sleep.</p>
<p>Friday evening started with a powhiri that I caught the tail end of. A few formalities of the administration and group introduction type followed. Then the establishment of the schedule for the next few days. In the <a href="http://en.wikipedia.org/wiki/Foo_Camp">FOO tradition</a> the schedule is not predetermined but constructed adhoc on the first evening. Participants made a mad rush to large sheets of paper with day and time slots hanging from the Mahurangi College staff room walls. Filling out their particular  topic. This was all done a couple of hours before the first session. I managed to get a reasonable time on Saturday afternoon to put my case for <a href="http://www.atomenabled.org/">Atom</a> based Web APIs to the test [more on this in later posts].</p>
<p>The first formal session I attended, along with many others, was a discussion (and it was a discussion) on broadband issues and policy with David Cunliffe the Communications and Technology Minister. I have to say I was impressed with his understanding of the issues and his willingness to listen and take on what was being raised by the audience.</p>
<p>Not being a &#8216;networking&#8217; wonk, nor someone who has been following local issues, I didn&#8217;t realise how bad the current situation actually is. Especially with regards to peering and the robustness of our backbone. Basically the market hasn&#8217;t provided so now the issue is being addressed at the first level: unbundling the local loop. Though that is just the beginning. The point was clearly made there has been massive under investment in the network and unbundling is a great, if belated, start to getting things on track again. However as the network is upgraded policies have to be adopted to ensure that enough space and power is placed in the boxes at street level. This is required ensure third-parties can put their equipment in and to enable peering at the street level. It was clearly articulated by several in the audicence the economic impact the lack of peering has had and how it extended beyond bandwidth issues right up to day-to-day Internet usage. <a href="http://www.drury.net.nz/">Rod Dury</a> declared the need as the &#8220;Internet Efficiency Policy.&#8221; Peering is a really big issue that needs to be sorted and David declared &#8220;from tonight peering is now a primary issue.&#8221; Of course the huge round of applause, with a few hoots, followed such a definitive statement. The next morning I had a follow-up conversation with Andy Linton that clarified some issues from the night before that I had not understood.</p>
<p>Another round of sessions followed but at 9:30pm I decided to socialise and partake in the fruits of the more &#8220;interactive&#8221; sessions: quadraphonic music and <a href="http://www.flickr.com/photos/freitasm/379065134/">body illumination</a> &#8211; if that is what you can call it. Both very cool. I particularly liked the quadraphonic sound arrangement that blasted from four car stereos parked around the school netball courts. Unfortunately I cannot remember the name of the artist.</p>
<p>Saturday started early. I decided to stay in the Whare Nui and despite the cacophony of sleepers&#8217; vocals I had a good four hours of sleep. Up, bright eyed ready for great breakfast discussion.</p>
<p>The first session I attended was Tim Norton  giving a description of his trials and tribulations with starting and funding technology businesses. The discussions contributed further &#8220;stories&#8221; and perspectives from others on both-sides: investors and business start-ups. I always find the in-person &#8220;war stories&#8221; really helpful as they lend a personal touch to an individuals experience that I just don&#8217;t get from other sources other than your own experience.  Following this I attended  sessions on  Rapid  Web application development  that discussed various languages, frameworks, patterns and approaches to application composition. <a href="http://www.adobe.com/products/flex/">Flex</a>, Jiffy, <a href="http://www.djangoproject.com/">Django</a>, <a href="http://pylonshq.com/">Pylons</a> and <a href="http://www.rubyonrails.org/">Rails</a> where all discussed in some way. I also attended sessions on User Experience Design, Copyright Amendment Bill, <a href="http://www.boxesandarrows.com/view/ambient_signifi">Ambient Signifiers</a>, User Stories and a demo of <a href="http://www.xero.com/">Xero</a>. I really wish there was two of me so I could have attend numerous sessions running in parallel.</p>
<p>Saturday night went for a while. After a lot of socialising and meeting new people I end-up playing <a href="http://en.wikipedia.org/wiki/Mafia_%28game%29">Werewolf </a>until 4:30am. The game is a stable at O&#8217;Reilly gigs but I had never played it before. It was great fun and a fantastic way to meet others. Having started totally green and being identified for what I was &#8211; a Werewolf &#8211; I ending up being the evil participant four times in a row. At least I learned the game fast &#8211; orchestrating a complete clean up of the Werewolves in the final early morning game.</p>
<p>I attended only a single session on Sunday. This was not planned. Instead I ended up talking to Ian Hay (from <a href="http://orange.co.uk/">Orange</a>) and Don Christie for most of the morning about mobile technologies and applications. A fantastic discussion. The final session I attended was on the <a href="http://wiki.laptop.org/go/Home">One Laptop Per Child</a> project it&#8217;s aims, issues and expected time frames. Chris DiBona had brought a prototype with him so every one had a good look at the hardware and the sugar GUI. After that I managed to have some interesting conversations with <a href="http://weblogs.mozillazine.org/roc">Robert O&#8217;Callahan</a> and Ben Goodger both working on Firefox about <a href="http://developer.mozilla.org/en/docs/DOM:Storage">offline storage</a> , application composition with routing and directions of Firefox. Basically I had many interesting discussions throughout the camp.<br />
Anyway it was great fun. I was absolutely stuffed but stoked to have attended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/02/05/recovering-from-kiwi-foo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waka Apache Lab Established</title>
		<link>http://www.outofrhythm.com/2007/01/30/waka-apache-lab-established/</link>
		<comments>http://www.outofrhythm.com/2007/01/30/waka-apache-lab-established/#comments</comments>
		<pubDate>Tue, 30 Jan 2007 05:14:43 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[ReST]]></category>
		<category><![CDATA[Waka]]></category>

		<guid isPermaLink="false">http://www.outofrhythm.com/2007/01/30/waka-apache-lab-established/</guid>
		<description><![CDATA[A couple of weeks ago Roy Fielding established an Apache lab for the development of Waka and related improvements to other specifications. From the DOAP: The Web Architecture Lab is a work area for specifying and experimenting with the interrelated shared agreements (protocols) that make the World Wide Web a happy place. The goal is [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago <a href="http://roy.gbiv.com/">Roy Fielding</a> established an <a href="http://labs.apache.org/">Apache lab</a> for the development of <a href="http://en.wikipedia.org/wiki/Waka_%28protocol%29">Waka</a> and related improvements to other specifications. From the <a href="http://svn.apache.org/repos/asf/labs/webarch/doap.rdf">DOAP</a>:</p>
<blockquote><p>The Web Architecture Lab is a work area for specifying and experimenting with the interrelated shared agreements (protocols) that make the World Wide Web a happy place. The goal is to produce a central storage for Web protocol evolution, including both existing Web protocols and new ones, that Apache developers can refer to, comment on, prototype alternatives, and provide examples and test cases. A secondary goal is to experiment with tools for integrating public commentary with the specification process.</p></blockquote>
<p>Nothing in the lab at the moment but Roy has been <a href="http://weblog.infoworld.com/udell/2006/08/25.html#a1514">discussing</a> Waka recently breaking a long silence after throwing a tempting morsel at <a href="http://gbiv.com/protocols/waka/200211_fielding_apachecon.ppt">ApacheCon2002</a>. As Mark Nottingham has <a href="http://www.mnot.net/blog/2006/03/15/transfer">stated</a>:</p>
<blockquote><p>Is WAKA still vaporspec? Totally. Does it still have to overcome the inertia of HTTP by proving at least an order of magnitude improvement (which HTTPNG and others failed to do)? Yes. Still, Roy has a pretty good track record, and Iâ€™d put my money on him (especially when backed<br />
up by the <a class="offsite" href="http://www.apache.org/">ASF</a>) over a bunch of vendors trying to sell â€œplatformâ€ any day.</p></blockquote>
<p>The Apache Lab was <a href="http://labs.apache.org/faq.html#q2">set up to allow failure</a>. I for one am very interested in playing with Waka using <a href="http://yaws.hyber.org/">Yaws</a>.</p>
<p><em>A little more info in Roy&#8217;s <a title="Apache Lab Proposal from Roy Fielding" href="http://mail-archives.apache.org/mod_mbox/labs-labs/200701.mbox/browser">Lab proposal</a>. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofrhythm.com/2007/01/30/waka-apache-lab-established/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

