<?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>Phil Leggetter - Real-Time Web Software and Technology Evangelist &#187; Ajax</title>
	<atom:link href="http://www.leggetter.co.uk/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://www.leggetter.co.uk</link>
	<description>Real-Time Web, Real-Time Data and Social Media Software and Technology Evangelist and Consultant</description>
	<lastBuildDate>Sun, 29 Jan 2012 05:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>How does Google Real-Time Search work?</title>
		<link>http://www.leggetter.co.uk/2009/12/12/how-does-google-real-time-search-work.html</link>
		<comments>http://www.leggetter.co.uk/2009/12/12/how-does-google-real-time-search-work.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 14:18:20 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Le Web]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time web]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=600</guid>
		<description><![CDATA[<p>On or around the 12th of December 2009 Google released a feature they are calling &#8220;real-time search&#8221;.</p> <p>Our real-time search enables you to discover breaking news the moment it&#8217;s happening, even if it&#8217;s not the popular news of the day, and even if you didn&#8217;t know about it beforehand.</p> <p>Although I&#8217;d still argue that we&#8217;re [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/08/27/google-realtime-search-isnt-real-time.html' rel='bookmark' title='Google realtime search isn&#8217;t real-time'>Google realtime search isn&#8217;t real-time</a></li>
<li><a href='http://www.leggetter.co.uk/2010/05/18/add-real-time-news-to-your-site-with-google-add-any-real-time-data-to-your-site-with-kwwika.html' rel='bookmark' title='Add real-time news to your site with Google. Add any real-time data to your site with Kwwika'>Add real-time news to your site with Google. Add any real-time data to your site with Kwwika</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/25/is-it-finally-the-end-for-real-time-search-engines.html' rel='bookmark' title='Is It Finally the End for Real-time Search Engines?'>Is It Finally the End for Real-time Search Engines?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>On or around the 12th of December 2009 Google released a feature they are calling &#8220;real-time search&#8221;.</p>
<blockquote cite="http://googleblog.blogspot.com/2009/12/relevance-meets-real-time-web.html"><p>Our real-time search enables you to discover breaking news the moment it&#8217;s happening, even if it&#8217;s not the popular news of the day, and even if you didn&#8217;t know about it beforehand.</p></blockquote>
<p>Although I&#8217;d still argue that we&#8217;re not seeing the real-time web with this solution I thought I&#8217;d go in to a bit of detail about how Google are achieving this HTTP polling solution.</p>
<h2>Summary</h2>
<ul>
<li>Google are consuming and indexing real-time data from multiple social networks</li>
<li>It&#8217;s not real-time HTTP PUSH yet, it&#8217;s HTTP PULL using a polling interval</li>
<li>The polling interval seems to vary but this needs to be confirmed.</li>
<li>The polling result returns an encoded JSON response containing the next request to be made and the HTML of any new results. These results are injected into the &#8220;Latest results&#8221; section of the page</li>
<li>The HTML returned is quite verbose and could be refined</li>
<li>87% from a sample of 30 polled requests returned no new results meaning the request was a waste of resources</li>
</ul>
<p><span id="more-600"></span></p>
<h2>Data Sources</h2>
<p>Google now has an agreement in place with Twitter, Facebook, MySpace, FriendFeed, Identi.ca and Jaiku to consume and index their real-time data and make the results available in a &#8220;Latest Results&#8221; section of the Google search results. A number of social networks have APIs and some of these APIs have a real-time streaming feed and it&#8217;s likely that Google is simply connecting to this. For example, MySpace have <a  href="http://developer.myspace.com/Community/blogs/devteam/archive/2009/12/08/opening-the-flood-gates-and-unleashing-the-data.aspx">released a Real-Time Stream API</a> and Twitter has a Firehose feed, both of which Google will be using in their real-time search results. The Twitter Firehose feed is <a  href="http://apiwiki.twitter.com/FAQ#CanIhavetheFirehose">&#8220;not generally available&#8221;</a> at the moment but Ryan Sarver, who is Director of Platform at Twitter, <a  href="http://www.ustream.tv/recorded/2748326">announced at Le Web</a> that the Firehose stream would become generally available in the future.<br />
<br />
<object id="utv142723" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_321380" /><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=2748326" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/2748326" /><embed id="utv142723" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/2748326" allowscriptaccess="always" allowfullscreen="true" flashvars="loc=%2F&amp;autoplay=false&amp;vid=2748326" name="utv_n_321380"></embed></object><br />
</p>
<h2>How Google put the real-time data into their search results?</h2>
<p>Since Google now have access to the data as soon as it is generated by the social network the next thing they need to do is get that into your search results. As soon as you make your search Google can put information that has just become available straight into the page. However, how do they get information that becomes available after your search results page has already loaded? Simple. They poll for new results regular intervals (as I mentioned in my <a  href="http://www.leggetter.co.uk/2009/12/09/how-real-time-does-real-time-have-to-be.html">How real-time does real-time have to be?</a> blog post). So far I&#8217;ve seen a 20 second polling interval but recently, with a <a  href="http://www.google.co.uk/search?q=%23leweb">search for #leweb</a>, I&#8217;ve seen a 30 second polling interval. It&#8217;s possible that they may have an idea how likely it is that your search subject will have new information available and change this polling interval accordingly.</p>
<p>These polling search requests look like this:</p>
<pre>

http://www.google.co.uk/realtimejs?q=%23leweb

&#038;hl=en
&#038;polltype=mb
&#038;since=1260622409000000
&#038;sessionstart=1260623982000000
&#038;ei=bpgjS5zOG8j54Ab5kMzpCQ
&#038;usg=05e5
</pre>
<p>And the responses:</p>
<pre class="brush: jscript; title: ; notranslate">
mbrt0.insert('{\x22nextRequest\x22:\x22/realtimejs?q\\x3d%23leweb\\x26hl\\x3den\\x26output\\x3dsearch\\x26since\\x3d1260623734161591\\x26sessionstart\\x3d1260623385000000\\x26ei\\x3dbpgjS5zOG8j54Ab5kMzpCQ\\x26usg\\x3d3760\x22,\x22results\x22:[{\x22date\x22:\x221260623734161590\x22,\x22html\x22:\x22\\x3cli class\\x3d\\x22g s\\x22 style\\x3d\\x22line-height:16px;margin:0 0 8px;overflow:hidden\\x22\\x3e\\x3ctable class\\x3d\\x22ts\\x22\\x3e\\x3ctr\\x3e\\x3ctd colspan\\x3d3 class\\x3drt2 style\\x3d\\x22overflow:none\\x22\\x3e\\x3cdiv class\\x3drt1 style\\x3d\\x22background-position:-4px 0;width:6px;height:4px;float:right\\x22\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3drt1 style\\x3d\\x22width:4px;height:4px\\x22\\x3e\\x3c/div\\x3e\\x3ctr\\x3e\\x3ctd class\\x3drt1 style\\x3d\\x22background-position:-10px 0;background-repeat:repeat\\x22\\x3e\\x3cdiv style\\x3d\\x22width:2px\\x22\\x3e\\x3c/div\\x3e\\x3ctd style\\x3d\\x22padding:0 5px 1px;width:100%\\x22\\x3eFinally back at home after a long week in Paris. Great time at \\x3ca href\\x3d\\x22/search?q\\x3d%23LeWeb+site%3Atwitter.com\\x26amp;tbs\\x3dmbl:1\\x26amp;tbo\\x3d1\\x26amp;hl\\x3den\\x26amp;output\\x3dsearch\\x26amp;ei\\x3dcZgjS8PMNZbSjAfnl_nYBw\\x26amp;sa\\x3dX\\x26amp;oi\\x3dmicroblog_result\\x26amp;resnum\\x3d1\\x26amp;ct\\x3dresult\\x26amp;cd\\x3d1\\x26amp;ved\\x3d0CAMQoAQoADAA\\x22\\x3e#\\x3cem\\x3eLeWeb\\x3c/em\\x3e\\x3c/a\\x3e. Reconnected with lots of old friends etc,\\x3ctd class\\x3drt1 style\\x3d\\x22background-position:-14px 0;background-repeat:repeat\\x22\\x3e\\x3cdiv style\\x3d\\x22width:3px\\x22\\x3e\\x3c/div\\x3e\\x3ctr\\x3e\\x3ctd colspan\\x3d3 class\\x3drt2 style\\x3d\\x22background-position:-4px\\x22\\x3e\\x3cdiv class\\x3drt1 style\\x3d\\x22background-position:-4px -4px;width:6px;height:6px;float:right\\x22\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3drt1 style\\x3d\\x22background-position:0 -4px;width:4px;height:6px\\x22\\x3e\\x3c/div\\x3e\\x3c/table\\x3e\\x3cdiv class\\x3drt1 style\\x3d\\x22background-position:-17px 0;margin-top:-3px;margin-left:5px;padding:4px 0 0 23px\\x22\\x3e\\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://twitter.com/bdesarnauts\\x22 class\\x3dl onmousedown\\x3d\\x22return clk(this.href,\\x27microblog_result\\x27,\\x27\\x27,\\x27result\\x27,\\x271\\x27,\\x27\\x27,\\x270CAIQoAQwAA\\x27)\\x22\\x3ebdesarnauts\\x3c/a\\x3e\\x3c/span\\x3e - \\x3cspan class\\x3da\\x3etwitter.com\\x3c/span\\x3e - \\x3ca href\\x3d\\x22/url?q\\x3dhttp://twitter.com/bdesarnauts/status/6598672912\\x26amp;ei\\x3dcZgjS8PMNZbSjAfnl_nYBw\\x26amp;sa\\x3dX\\x26amp;oi\\x3dmicroblog_result\\x26amp;resnum\\x3d1\\x26amp;ct\\x3dresult\\x26amp;cd\\x3d2\\x26amp;ved\\x3d0CAQQoAQoADAA\\x26amp;usg\\x3dAFQjCNEyjEaOrJexPm6wUgqqVEDg24BOFQ\\x22 style\\x3d\\x22text-decoration:none\\x22\\x3e\\x3cspan class\\x3d\\x22f rtdm\\x22\\x3e4 minutes ago\\x3c/span\\x3e\\x3c/a\\x3e\\x3c/div\\x3e\x22}]}');
</pre>
<p>The response is an encoded JSON response and contains two things:</p>
<ul>
<li><strong>nextRequest</strong>: The next polling search request to make</li>
<li><strong>results</strong>: An Array of Encoded HTML for any results that have been found for the current polling request.</li>
</ul>
<p>In the example response above we get a next request of:</p>
<pre class="brush: plain; title: ; notranslate">
/realtimejs?
q\\x3d%23leweb\\x26hl\\x3den\\x26output\\x3dsearch\\x26since\\x3d1260623734161591\\x26sessionstart\\x3d1260623385000000\\x26ei\\x3dbpgjS5zOG8j54Ab5kMzpCQ\\x26usg\\x3d3760
</pre>
<p>Which translates to the following URL:</p>
<pre>

http://www.google.co.uk/realtimejs?q=%23leweb&#038;hl=en&#038;output=search&#038;since=1260623734161591&#038;sessionstart=1260623385000000&#038;ei=bpgjS5zOG8j54Ab5kMzpCQ&#038;usg=3760
</pre>
<p>From looking at the parameters it would appear that the <strong>since</strong> parameter would be very useful and would allow you to retrieve historical updates.</p>
<p>Each encoded HTML result in the results array will be decoded on the client using JavaScript and injected into the &#8220;Latest Results&#8221; section within the search result listings. It&#8217;s quite surprising that they return quite so much encoded HTML content and not just the information and then generate the HTML on the client. I suppose this is a new feature and it will be refined over time.</p>
<p>One point worth mentioning is that because Google are using a polling technique they are performing a lot of HTTP PULL requests to the server that return no results. This is a wasted request. From a sample size of 30 polled requests only 4 requests actually returned new results. This means that 87% of requests are a complete waste of resources.</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2010/08/27/google-realtime-search-isnt-real-time.html' rel='bookmark' title='Google realtime search isn&#8217;t real-time'>Google realtime search isn&#8217;t real-time</a></li>
<li><a href='http://www.leggetter.co.uk/2010/05/18/add-real-time-news-to-your-site-with-google-add-any-real-time-data-to-your-site-with-kwwika.html' rel='bookmark' title='Add real-time news to your site with Google. Add any real-time data to your site with Kwwika'>Add real-time news to your site with Google. Add any real-time data to your site with Kwwika</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/25/is-it-finally-the-end-for-real-time-search-engines.html' rel='bookmark' title='Is It Finally the End for Real-time Search Engines?'>Is It Finally the End for Real-time Search Engines?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/12/12/how-does-google-real-time-search-work.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which Rich Internet Application Technology will dominate?</title>
		<link>http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html</link>
		<comments>http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html#comments</comments>
		<pubDate>Sat, 07 Nov 2009 01:34:29 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=534</guid>
		<description><![CDATA[<p>I&#8217;ve been a member of the <a href="http://www.linkedin.com/groups?home=&#038;gid=112239&#038;trk=anet_ug_hm">RIA Developers Group</a> on LinkedIn for a short while now and the other day <a href="http://ca.linkedin.com/in/patrickbay">Patrick Bay</a> posted a link to an interesting <a href="http://www.computerweekly.com/Articles/2009/11/04/238406/rich-internet-applications-come-to-the-fore.htm">article on Computer Weekly</a> about the prominence of RIAs. A few comments were posted and then Patrick questioned which RIAs would &#8220;bubble to the top&#8221;.</p> [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2010/10/25/government-invests-200m-in-technology-centres-but-no-mention-of-software-or-information-technology.html' rel='bookmark' title='Government invests £200m in technology centres but no mention of Software or Information Technology'>Government invests £200m in technology centres but no mention of Software or Information Technology</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a member of the <a  href="http://www.linkedin.com/groups?home=&#038;gid=112239&#038;trk=anet_ug_hm">RIA Developers Group</a> on LinkedIn for a short while now and the other day <a  href="http://ca.linkedin.com/in/patrickbay">Patrick Bay</a> posted a link to an interesting <a  href="http://www.computerweekly.com/Articles/2009/11/04/238406/rich-internet-applications-come-to-the-fore.htm">article on Computer Weekly</a> about the prominence of RIAs. A few comments were posted and then Patrick questioned which RIAs would &#8220;bubble to the top&#8221;.</p>
<blockquote><p>I think the UI revolution&#8217;s already here; now we see which ones bubble to the top!</p></blockquote>
<p>This got me thinking about the criteria that may determine which RIA technology would be most successful.</p>
<p>I think there are a number of things that will determine which one will ultimately win, or at least become the dominant choice. At the moment I can think of three categories; <a  href="http://www.leggetter.co.uk/2009/11/07which-rich-internet-application-technology-will-dominate.html#technology-buy-in">Technology buy-in</a>, <a  href="http://www.leggetter.co.uk/2009/11/07which-rich-internet-application-technology-will-dominate.html#development-environment">Development environment</a> and <a  href="http://www.leggetter.co.uk/2009/11/07which-rich-internet-application-technology-will-dominate.html#data-access-capabilities-and-choice">Data access capabilities and choice</a>.<br />
<span id="more-534"></span><br />
<a name="technology-buy-in"></a></p>
<h2>Technology buy-in</h2>
<p>Some companies buy-in to a technology because they have always used that technology. For example, a company that have always used Java will be more likely to opt for the Adobe solution where they can write their server components using Java and their client in Flash/ActionScript/<a href="http://www.adobe.com/products/flex/">Flex</a> (<em>this terminology is still a bit unclear to me. I think this is why Adobe are renaming Flex Builder to Flash Builder</em>) but a company that have traditionally used Microsoft products will undoubtedly go for <a  href="http://silverlight.net/">Silverlight</a>. More traditional web developers, who probably build upon the <a  href="http://en.wikipedia.org/wiki/LAMP_(solution_stack)">LAMP stack</a>, that have been hand coding PHP on the server and JavaScript on the client tend to go for creating RIAs using Ajax.<br />
<a name="development-environment"></a></p>
<h2>Development environment</h2>
<p>I believe that Microsoft have a massive advantage in having <a href="http://www.microsoft.com/visualstudio/en-gb/products/professional/default.mspx">Visual Studio</a> as a server and client IDE. It has it&#8217;s faults but in general it&#8217;s a fantastic development environment. Those choosing Flex (Java -&gt; ActionScript/Flash) will more than likely choose the <a  href="http://www.eclipse.org/">Eclipse IDE</a>, which is powerful, but it&#8217;s ActionScript/Flex development tools are lacking maturity. I&#8217;ve recently used the <a  href="http://labs.adobe.com/technologies/flashbuilder4/">Flash Builder 4 beta</a> and it&#8217;s miles behind Visual Studio in terms of coding productivity features. I&#8217;ve heard that the Flex UI component development features may be better than Visual Studio&#8217;s support for Silverlight UI. The LAMP with Ajax stack suffers much the same problems as Flex with, as far as I know, Eclipse being the IDE of choice and client-side productivity tools still very much in their infancy. It&#8217;s clearly very difficult to write an IDE to enhance JavaScript/Ajax productivity.</p>
<div class="information">I quite frequently develop JavaScript in Eclipse using the <a  href="http://www.aptana.org/">Aptana</a> plugin so I&#8217;d be interested in getting suggestions on other Ajax IDE choices.</div>
<p><a name="data-access-capabilities-and-choice"></a></p>
<h2>Data access capabilities and choice</h2>
<p>I think this has been one of the last things to be considered in the RIA stack. Previously browsers have locked down where you can get your data from. Developers were always trying to implement hacks to allow them to do things such as make a web request to a server on a different domain or <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">cross-site scripting</a> to implement <a  href="http://ajaxpatterns.org/HTTP_Streaming">HTTP streaming</a>. As the web has opened up to the idea of <a  href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">Mashups</a>, browser and RIA plugin vendors have had to change their stance on cross site security. It&#8217;s a difficult line to walk but I believe that the technology that makes retrieving data from multiple sources the easiest, without having to go via a proxy, will have a distinct advantage. Flash and Silverlight are winning the race at the moment with Silverlight&#8217;s use of <a  href="http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx">security policy files</a> and Flash&#8217;s support for <a  href="http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e08.html#WS366737CC-0BD3-47b4-8292-569FB3AA276B">master policy files</a>. For the Ajax solution I still need to research information on <a  href="https://developer.mozilla.org/en/HTTP_access_control">HTTP cross domain access control</a> headers and which browsers have implemented support for them. I still think there will be an argument for mashing up your data on the server and I have a blog post planned on <a  href="http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html">RTRIA</a> server technologies.</p>
<p>The important questions around RIA data are:</p>
<ul>
<li>Which RIA will be more efficient at consuming data?</li>
<li>Which one will prove to be the most capable as a <a  href="http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html">Real-Time Rich Internet Application (RTRIA)</a>?</li>
<li>Will RIA technology vendors try to lock developers into using a client-server technology stack, such as Adobe may be trying to do with <a  href="http://www.adobe.com/products/livecycle/dataservices/">LCDS</a> and Flex, and will this put developers off?</li>
<li>Is decoupling of server and client technology, and communication protocol, important? I think it is, do you?</li>
</ul>
<p>Although RIAs have been around for a while now, as Patrick said, the race to dominate the Rich Internet Application Technology space is on.</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2010/10/25/government-invests-200m-in-technology-centres-but-no-mention-of-software-or-information-technology.html' rel='bookmark' title='Government invests £200m in technology centres but no mention of Software or Information Technology'>Government invests £200m in technology centres but no mention of Software or Information Technology</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What is the “real-time web”?</title>
		<link>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html</link>
		<comments>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html#comments</comments>
		<pubDate>Mon, 20 Apr 2009 11:00:54 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://blog.caplin.com/?p=89</guid>
		<description><![CDATA[Are we really seeing the real-time web? The phrase &#8220;real-time web&#8221; has been streaming its way around the Internet for a while now. It&#8217;s presently being used to describe information being available in search results as soon as it has been published by its author. Examples of this are Twitter...
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html' rel='bookmark' title='Caplin Systems Blog Post &#8211; What is the real-time web?'>Caplin Systems Blog Post &#8211; What is the real-time web?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2><strong>Are we really seeing the real-time web?</strong></h2>
<p>The phrase &#8220;<em>real-time web</em>&#8221; has been streaming its way around the Internet for a while now. It&#8217;s presently being used to describe information being available in search results as soon as it has been published by its author. Examples of this are Twitter or FriendFeed search.</p>
<p>As far as I&#8217;m aware it was Robert Scoble who made this phrase mainstream. Here&#8217;s an example from the start of February, but by this time Robert had been using the term for a while and a quick Google finds the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFkd3JpdGV3ZWIuY29tL2FyY2hpdmVzL2dvb2dsZV9maW5hbmNlX2FuZF90aGVfcmVhbF90aW1lX3dlYi5waHA=">term used</a> as early as June 2008:</p>
<blockquote><p>Let&#8217;s do a search for anyone who has written about the Canon 5D MK II but lets constrain that to posts that have at least one like and at least four comments. <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ZyaWVuZGZlZWQuY29tL3NlYXJjaD9xPUNhbm9uKzVEK01LK0lJJmFtcDtpbnRpdGxlPSZhbXA7aW5jb21tZW50PSZhbXA7c2VydmljZT0mYW1wO2Zyb209JmFtcDtyb29tPSZhbXA7Y29tbWVudD0mYW1wO2xpa2U9JmFtcDtjb21tZW50cz00JmFtcDtsaWtlcz0x">Here&#8217;s the search</a>. Note that the post I wrote just one minute ago is already in the results page. This is the real-time web. &#8211; Robert Scoble (<a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDkvMDIvMDkvaXMtdGhlLXJlYWwtdGltZS13ZWItYS10aHJlYXQtdG8tZ29vZ2xlLXNlYXJjaC8=">http://scobleizer.com/2009/02/09/is-the-real-time-web-a-threat-to-google-search/</a>)</p>
</blockquote>
<p>Whilst this is an example of something being almost instantly available from search does it really qualify as being &#8220;real-time&#8221;?</p>
<p><span id="more-89"></span><br />
The first thing to do, as others have done, is understand what the term &#8220;real-time&#8221; means. Rather than going into this I recommend you have a read of the wikipedia definition of <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWFsLXRpbWU=">real-time</a> and watch a Kaazing presentation on <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dzIuc3lzLWNvbi5jb20vd2ViaW5hcmFyY2hpdmUuY2ZtP3NraXA9b24mYW1wO3BpZD13Y19hdzhlX2QyX3M0X3QxX2thYXppbmcmYW1wO3JlZ2lkPTMzOTA0">What is the Real-Time Web</a>. There have been fewer attempts at defining &#8220;real-time web&#8221;. Even Wikipedia presently (19/04/2009) lacks a definition.</p>
<p>For me for something to be real-time web it should meet the following criteria:</p>
<ol>
<li>Get up to the second information on a chosen subject.</li>
<li>Make an initial request for information to be delivered across the Internet. Subsequent updates to that information, or information stream, should be delivered as soon as possible without the need to make a additional requests.</li>
<li>Initial information and subsequent updates should be delivered in an acceptable amount of time.</li>
</ol>
<h2>The real-time web experience</h2>
<p>If I go to <a  0="0="title="Phil"" 1="Leggetter" 2="on" 3="3="Twitter""" href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tL2xlZ2dldHRlcg==">my twitter homepage</a> I don&#8217;t want to have to refresh the page, by clicking the refresh button, or hitting the F5 key, in order to see new messages from the people that I&#8217;m following. Twitter doesn&#8217;t really want users doing this either as it puts load on their server &#8211; but let&#8217;s leave this for another time.</p>
<div class="wp-caption alignnone" style="width: 220px"><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29t"><img title="Twitter" src="http://assets0.twitter.com/images/twitter.png" alt="" width="210" height="49" /></a>
<p class="wp-caption-text">Twitter</p>
</div>
<p>This lack of real-time updates on the Twitter site has lead to a surge in Twitter client applications such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2VldGRlY2suY29tLw==">TweetDeck</a> and <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2hpcmwub3JnLw==">Thwirl</a>. These clients simulate real-time by polling the <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2FwaXdpa2kudHdpdHRlci5jb20v">Twitter API</a> at intervals. I&#8217;d like to highlight the word &#8220;<em>simulate</em>&#8221; again and clarify what polling is. What the Twitter client applications are actually doing is making requests to Twitter at periodic intervals to see if the user has had any messages and if they have it displays them, if there are no new messages then it&#8217;s a wasted request.</p>
<div class="wp-caption alignleft" style="width: 290px">
<div style="background-color:black"><img class="alignnone size-full wp-image-548" title="tweetdeck_logo" src="http://blog.caplin.com/wp-content/uploads/tweetdeck_logo.png" alt="tweetdeck_logo" width="251" height="50" /></div>
<p>
<p class="wp-caption-text">TweetDeck</p>
</div>
<div class="wp-caption alignleft" style="width: 290px"><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50d2hpcmwub3JnLw=="><img title="Twhirl" src="http://www.twhirl.org/themes/twhirl/logo.jpg" alt="Twhirl" width="220" height="105" /></a>
<p class="wp-caption-text">Twhirl</p>
</div>
<p>A much better model would be for Twitter to notify the client that new messages are available by passing the additional messages straight to the Twitter client.</p>
<h2>Real-time web delivery time</h2>
<p>What determines the amount of time that is acceptable between a message being published and it being received by the consumer (user) depends on the context of its use. For something such as instant messaging or a Twitter conversation the time between publication and consumption can be reasonably large, maybe 10 seconds. However, if the publisher is a trading system sending a price and the consumer is a trader 10 seconds is far too long. By the time the price reaches the trader it may be out of date.</p>
<h2>Real-time technology</h2>
<p><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3htcHAub3JnLw==">XMPP</a> and <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3NpbXBsZXVwZGF0ZXByb3RvY29sLw==">SUP</a> have been touted as the technology to deliver the real-time web but they appear to be server side solutions or require clients with knowledge of the specific technologies. For a web solution people start to turn to Comet server solutions. Caplin Systems &#8211; the real-time web company &#8211; have had the technology available to deliver real-time data for many years now so I wanted to understand why, only now, has the idea of a &#8220;real-time web&#8221; really taken off.</p>
<div class="wp-caption alignnone" style="width: 220px"><img alt="Caplin Systems" src="http://www.caplin.com/assets/templates/caplin/img/logo.gif" title="Caplin Systems" width="210" height="37" />
<p class="wp-caption-text">Caplin Systems</p>
</div>
<p>Caplin Systems have a high performance scalable <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5jYXBsaW4uY29tL2NhcGxpbnBsYXRmb3JtLz9jdXJhcnRfaWQ9MzY=">real-time comet server called Liberator</a> that can push updates to subscribing clients as soon as it receives information. The clients are:</p>
<ul type="disc">
<li>Java      clients: standalone application or applet</li>
<li>.NET      clients such a windows desktop application or web page embedded      SilverLight widget</li>
<li>JavaScript      clients: any website such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3R3aXR0ZXIuY29tLw==">http://twitter.com</a> or <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2ZyaWVuZGZlZWQuY29tLw==">http://friendfeed.com</a></li>
</ul>
<p>Twitter and FriendFeed don&#8217;t use Liberator but they could easily do so. All that needs to be done to integrate <em>Real-time Rich Internet Application</em> (<em>RTRIA</em> ?) functionality to an existing web site is include a JavaScript library called <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5mcmVlbGliZXJhdG9yLmNvbS9kb2N1bWVudGF0aW9uL3NsNGIvaW50cm9kdWN0aW9uLmh0bWw=">SL4B (StreamLink for Browsers)</a>. The <em>RTRIA</em> functionality can then be added to an existing site in the same way that RIA functionality can be introduced to a website using other JavaScript libraries such as <a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pxdWVyeS5jb20v">JQuery</a>. However, in this case the <em>RIA</em> functionality that can be added is a true real-time web experience of data being pushed to the client as soon as it becomes available, without any need for the user to check to see if any new information is available.</p>
<h2>Conclusion</h2>
<p>My opinion is that the instant availability of information via search straight after it&#8217;s published doesn&#8217;t really justify the term &#8220;real-time web&#8221;. To be truely real-time the information needs to be pushed to the user. The true real-time web experience and the technology to achieve this is already here but at the moment few people are aware of it and therefore it&#8217;s not in mainstream use. The ideas behind Comet, the Liberator server and Liberator clients provide technology and infrastructure to push data to clients without the need for polling or a user driven information request. Scalability and side by side integration with existing systems are already possible which means there&#8217;s no reason why existing clients such as websites can&#8217;t start taking advantage of it.</p>
<p>Some relevant links:</p>
<ul style="text-align: left;">
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5yZWFkd3JpdGV3ZWIuY29tL2FyY2hpdmVzL3NvcnJ5X2dvb2dsZV95b3VfbWlzc2VkX3RoZV9yZWFsX3RpbWVfd2ViLnBocA==">http://www.readwriteweb.com/archives/sorry_google_you_missed_the_real_time_web.php</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5nbmlwY2VudHJhbC5jb20v">http://www.gnipcentral.com/</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDkvMDIvMDkvaXMtdGhlLXJlYWwtdGltZS13ZWItYS10aHJlYXQtdG8tZ29vZ2xlLXNlYXJjaC8=">http://scobleizer.com/2009/02/09/is-the-real-time-web-a-threat-to-google-search/</a></li>
<li><a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3Njb2JsZWl6ZXIuY29tLzIwMDgvMTIvMjEvcnNzLXNob3dzLWl0cy1hZ2UtaW4tcmVhbC10aW1lLXdlYi1zdXAtYW5kLXhtcHAtdG8tdGhlLXJlc2N1ZS8=">http://scobleizer.com/2008/12/21/rss-shows-its-age-in-real-time-web-sup-and-xmpp-to-the-rescue/</a></li>
<li>Kaazing presentation on &#8220;<a  href="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dzIuc3lzLWNvbi5jb20vd2ViaW5hcmFyY2hpdmUuY2ZtP3NraXA9b24mYW1wO3BpZD13Y19hdzhlX2QyX3M0X3QxX2thYXppbmcmYW1wO3JlZ2lkPTMzOTA0">What is real-time web</a>&#8220;</li>
</ul>
<p> <img src="http://blog.caplin.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=89" width="1" height="1" style="display: none;" /></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/04/28/caplin-systems-blog-post-what-is-the-real-time-web.html' rel='bookmark' title='Caplin Systems Blog Post &#8211; What is the real-time web?'>Caplin Systems Blog Post &#8211; What is the real-time web?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/04/20/what-is-the-%e2%80%9creal-time-web%e2%80%9d.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 21/64 queries in 0.035 seconds using disk: basic

Served from: www.leggetter.co.uk @ 2012-02-04 20:12:49 -->
