<?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 - Software Consultant &#187; JavaScript</title>
	<atom:link href="http://www.leggetter.co.uk/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.leggetter.co.uk</link>
	<description>Real-time web and social media software consultant</description>
	<lastBuildDate>Tue, 07 Sep 2010 07:34:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Geo Grandfather ESRI Makes Strides on the Web</title>
		<link>http://www.leggetter.co.uk/2010/08/23/geo-grandfather-esri-makes-strides-on-the-web.html</link>
		<comments>http://www.leggetter.co.uk/2010/08/23/geo-grandfather-esri-makes-strides-on-the-web.html#comments</comments>
		<pubDate>Mon, 23 Aug 2010 12:30:09 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=14267</guid>
		<description><![CDATA[Most of the time we write about mapping, it admittedly  [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html' rel='bookmark' title='Permanent Link: Which Rich Internet Application Technology will dominate?'>Which Rich Internet Application Technology will dominate?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.programmableweb.com/api/esri-arcgis-javascript"><img src="http://www.programmableweb.com/images/apis/at869.png" alt="ESRI ArcGIS JavaScript" class="imgRight" /></a>Most of the time we write about mapping, it admittedly includes Google Maps (we list over <a  href="http://www.programmableweb.com/api/google-maps/mashups">2000 Google Maps mashups</a>). However, <a  href="http://esri.com/">ESRI</a>, the biggest supplier of geographic tools for the enterprise, has made huge strides this year with its tools, including its own web mapping platform, <a  href="http://www.programmableweb.com/api/esri-arcgis-javascript">ESRI ArcGIS JavaScript API</a>.</p>
<p>Earlier this year ESRI <a  href="http://www.esri.com/news/releases/10_2qtr/arcgis10-download.html">released ArcGIS Server 10</a> and in the the past few months a stream of associated updates and new releases have been announced including version 2.0 of their <a  href="http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2010/06/29/ArcGIS-APIs-for-JavaScript-and-Flex_3A00_-Version-2.0-now-final_2100_.aspx">JavaScript, Flex</a> and <a  href="http://blogs.esri.com/Dev/blogs/silverlightwpf/">Silverlight/WPF</a> APIs. ESRI has also <a  href="http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2010/08/02/Build-applications-for-iOS-using-the-ArcGIS-API-for-Javascript.aspx">announced the release</a> of a compact ArcGIS for JavaScript version designed for building applications where slower Internet speeds and network latency is an issue, such as mobile phones. They also plan to release a native iPhone API (ArcGIS API for iOS), which is slated for the third quarter of 2010, and an ArcGIS for Windows Phone API down for mid-August as part of version 2.1 API releases.</p>
<p style="text-align: center; margin-top: 10px;">
<a  href="http://www.programmableweb.com/api/esri-arcgis-javascript"><img src="http://blog.programmableweb.com/wp-content/arcgis-ios1-158x300.jpg" alt="ArcGIS for iOS" title="ArcGIS for iOS" width="158" height="300"/></a>
</p>
<p>&#8220;It&#8217;s exciting to hear news of ArcGIS Server instances in the cloud, coupled with the new mappings APIs,&#8221; <a  href="http://gisconsultancy.com/blog/about">Rob Dunfey</a>, who has previously worked at ESRI and now works at Shell, said of the new tools. &#8220;We can start to deliver easy to use apps which answer business problems with a geo component. For example, the iPhone app for the CEO which downloads local sales stats as they move from site to site.&#8221;</p>
<p>The version 2.0 API release adds new functionality and exposes a number of new features available in ArcGIS Server 10:</p>
<ul>
<li>A features service which expose access to vector feature geometries and attributes.</li>
<li>Geometry service updates to facilitate Web editing.</li>
<li>Time aware layers to allow you to query or display time-aware layers using a particular slice of time.</li>
<li>Network analysis.</li>
<li>Bing Maps support updates.</li>
<li>Geocoding updates.</li>
<li>Mapping enhancements.</li>
<li>Built-in support for touch gestures in the JavaScript API.</li>
</ul>
<p>For a full list of features see the What&#8217;s New sections of the guides for <a  href="http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//00930000000m000000.htm">ArcGIS Server 10</a>, <a  href="http://help.arcgis.com/en/webapi/javascript/arcgis/help/jshelp_start.htm#jshelp/new_v20.htm">ArcGIS for JavaScript</a>, <a  href="http://help.arcgis.com/en/webapi/flex/help/index.html#whats_new.htm%20">ArcGIS API for Flex</a> and <a  href="http://help.arcgis.com/en/webapi/silverlight/help/?Whats_new.htm">ArcGIS API for Microsoft Silverlight / WPF</a>.</p>
<p>The ESRI mapping APIs, which are <a  href="http://blog.programmableweb.com/2009/07/31/is-free-enough-for-esri-to-gain-web-mapping-traction/">freely available</a>, differentiate themselves from the <a  href="http://www.programmableweb.com/apitag/mapping">plethora of consumer focused mapping APIs</a> out there in their depth of GIS analysis they support, their ability to ask complex questions of spatial proximity and topology. However, to access this extra functionality on your own data you need to buy a license.</p>
<p>The implications of all these APIs means that the accessibility to commercial-grade GIS technology is much greater and as developers become more familiar with GIS they could potentially start bidding for development projects that were previously only accessible to GIS development houses. It also means that platforms and devices that were previously only used by consumers can potentially be used in the field.</p>
<p>With platforms such as the Web (JavaScript, Silverlight and Flex), desktop (WPF and Flex using Air) and mobile (JavaScript, Silverlight for Windows Phone and iOS) covered, and with an extra level of GIS functional, ESRI appears to have everything in place to continue being the go-to company for GIS map-based application development.</p>
<p>
<p style="border-top:1px solid black;" align="center">Sponsored by</p>
<p align="center"><a  href="http://www.programmableweb.com/adserver/www/delivery/ck.php?oaparams=2__bannerid=247__zoneid=33__cb=d4c81f2966__oadest=http://events.nokia.com/developersummit2010/home.htm"><img src='http://www.programmableweb.com/adserver/www/images/fa81ed0fddaad2fd5d1547ec056b547b.png' width='468' height='60' alt='Nokia Developer Summit 2010' title='Nokia Developer Summit 2010' border='0' /></a>
<div id='beacon_d4c81f2966'><img src='http://www.programmableweb.com/adserver/www/delivery/lg.php?bannerid=247&amp;campaignid=129&amp;zoneid=33&amp;cb=d4c81f2966' width='0' height='0' alt='' style='width: 0px; height: 0px;' /></div>
</p>
<div>
<h5>Related ProgrammableWeb Resources</h5>
<p><img src="http://www.google.com/s2/favicons?domain=esri.com" alt="ESRI ArcGIS JavaScript" /> <a  href="http://www.programmableweb.com/api/esri-arcgis-javascript">ESRI ArcGIS JavaScript API Profile</a>, <a  href="http://www.programmableweb.com/api/esri-arcgis-javascript/mashups">6 mashups</a></p>
</div><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;title=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Geo+Grandfather+ESRI+Makes+Strides+on+the+Web+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F23%2Fgeo-grandfather-esri-makes-strides-on-the-web.html&amp;t=Geo+Grandfather+ESRI+Makes+Strides+on+the+Web" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2009/11/07/which-rich-internet-application-technology-will-dominate.html' rel='bookmark' title='Permanent Link: Which Rich Internet Application Technology will dominate?'>Which Rich Internet Application Technology will dominate?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/08/23/geo-grandfather-esri-makes-strides-on-the-web.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plotting tweets in real-time using Smoothie Charts and Kwwika</title>
		<link>http://www.leggetter.co.uk/2010/08/13/plotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html</link>
		<comments>http://www.leggetter.co.uk/2010/08/13/plotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html#comments</comments>
		<pubDate>Fri, 13 Aug 2010 00:35:00 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[Smoothie]]></category>

		<guid isPermaLink="false">http://blog.kwwika.com/plotting-tweets-in-real-time-using-smoothie-c</guid>
		<description><![CDATA[        
	I noticed a tweet today about real-time Java [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/08/10/kwwika-superfeedr-real-time-demo-available-2.html' rel='bookmark' title='Permanent Link: Kwwika-Superfeedr real-time demo available'>Kwwika-Superfeedr real-time demo available</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/11/kwwika-world-cup-2010-real-time-push-web-app-apple-ipad-competition.html' rel='bookmark' title='Permanent Link: Kwwika World Cup 2010 Real-Time Push Web App &#8211; Apple iPad competition'>Kwwika World Cup 2010 Real-Time Push Web App &#8211; Apple iPad competition</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/30/leadersdebate-demo-retrospective.html' rel='bookmark' title='Permanent Link: #LeadersDebate demo retrospective'>#LeadersDebate demo retrospective</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I noticed a tweet today about real-time JavaScript charts and couldn&#8217;t resist having a play. The charts are call <a  href="http://smoothiecharts.org/">Smoothie Charts</a> and have been developed by <a  href="http://joewalnes.com/">Joe Walnes</a>. You can read the blog post where he announced the release of them <a  href="http://joewalnes.com/2010/08/10/introducing-smoothie-charts/">here</a>.</p>
<p>The demos that I&#8217;ve seen don&#8217;t use real-time data so I thought I would create a small demo using real-time tweets being pushed through Kwwika. I updated the Kwwika TweetStreamer component (which I must get around to putting in GitHub) to push through updates from some popular hashtags including #nowplaying, #news, #tech and a few others and then wrote a bit of code to count the number of tweet updates over an interval and push that value into a Smoothie chart. The result looks like this (Smoothie charts use Canvas so only work in some browsers. I&#8217;ve tested this demo in Firefox and Chrome):</p>
<p><a  href="http://posterous.com/getfile/files.posterous.com/kwwika/XGJM92hzwVJon8G7UYu9VoIu8Ncy5AoVYCQyMPtxFEBOL7wNI0ZgzxFjoRe6/smoothie-charts-kwwika-demo.png.scaled.1000.jpg" class="thickbox no_icon" rel="gallery-1324"><img src="http://posterous.com/getfile/files.posterous.com/kwwika/PaXOMHgzq7ZlJRSoWUekNYeXTrBMOcrMokg1wVHAwhV2ABdjYPtNgJSWqHGe/smoothie-charts-kwwika-demo.png.scaled.500.jpg" width="500" height="310"/></a></p>
<p>You can see the <a  href="http://kwwika.com/Standalone/Demos/javascript-examples/smoothie-twitter-charting/">Smoothie Twitter Real-Time Charting demo using Kwwika</a> here:&nbsp;<a  href="http://kwwika.com/Standalone/Demos/javascript-examples/smoothie-twitter-charting/">http://kwwika.com/Standalone/Demos/javascript-examples/smoothie-twitter-charting/</a></p>
<p>I&#8217;ve got the Smoothie chart showing the number of updates for each twitter hashtag, a table showing the count and a list of the tweets at the bottom.</p>
<p>The <a  href="http://github.com/kwwika/javascript-examples/tree/master/smoothie-twitter-charting/">code is in GitHub</a> so feel free to fork/download and have a play yourself. You can run the code on <strong><a  href="http://localhost" rel="nofollow">http://localhost</a></strong> but in order to get the code to work on your own website you&#8217;ll need to register with Kwwika and get in touch to let us know you want access to the real-time Twitter hashtag topics.</p>
<p><strong>Update</strong>: We found a bug in the Smoothie library which&nbsp;<a  href="http://joewalnes.com/">Joe Walnes</a>&nbsp;promptly fixed.</p>
<p><span style="text-decoration: line-through;">One thing we&#8217;ve noticed is that the Smoothie chart stops working and throws an exception and as yet we&#8217;ve not been able to work out what the problem is due to lack of time. It&#8217;s probably something to do with not getting any updated values in a TimeSeries. This is what the exception look like in Firebug:</span></p>
<p><span style="text-decoration: line-through;"><a  href="http://posterous.com/getfile/files.posterous.com/kwwika/Vp23p7cm97EFrfOilESyaIbwqzm7309thB9Qqs0HPIlHiltIiy6mQsUKd2G7/smoothie-error.png" class="thickbox no_icon" rel="gallery-1324"><img src="http://posterous.com/getfile/files.posterous.com/kwwika/aqZ5qseaLq9M5W2QYP0vXoB3VcFpmZY4pTfQZ0e3CFp3VNffBo6thTOLQL1u/smoothie-error.png.scaled.500.jpg" width="500" height="54"/></a><br />
</span></p>
<p><span style="text-decoration: line-through;">If anybody can work out what the problem is please let us know. Failing that we&#8217;ll look into it when we can.</span></p>
<p><a  href="http://blog.kwwika.com/plotting-tweets-in-real-time-using-smoothie-c">Permalink</a> </p>
<p>	| <a  href="http://blog.kwwika.com/plotting-tweets-in-real-time-using-smoothie-c#comment">Leave a comment&nbsp;&nbsp;&raquo;</a></p><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;title=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F08%2F13%2Fplotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html&amp;t=Plotting+tweets+in+real-time+using+Smoothie+Charts+and+Kwwika" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/08/10/kwwika-superfeedr-real-time-demo-available-2.html' rel='bookmark' title='Permanent Link: Kwwika-Superfeedr real-time demo available'>Kwwika-Superfeedr real-time demo available</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/11/kwwika-world-cup-2010-real-time-push-web-app-apple-ipad-competition.html' rel='bookmark' title='Permanent Link: Kwwika World Cup 2010 Real-Time Push Web App &#8211; Apple iPad competition'>Kwwika World Cup 2010 Real-Time Push Web App &#8211; Apple iPad competition</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/30/leadersdebate-demo-retrospective.html' rel='bookmark' title='Permanent Link: #LeadersDebate demo retrospective'>#LeadersDebate demo retrospective</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/08/13/plotting-tweets-in-real-time-using-smoothie-charts-and-kwwika.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://posterous.com/getfile/files.posterous.com/kwwika/Vp23p7cm97EFrfOilESyaIbwqzm7309thB9Qqs0HPIlHiltIiy6mQsUKd2G7/smoothie-error.png" length="" type="image/png" />
		</item>
		<item>
		<title>Kwwika Silverlight API &#8211; Chat Example</title>
		<link>http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html</link>
		<comments>http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html#comments</comments>
		<pubDate>Mon, 10 May 2010 17:30:49 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Chat]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html</guid>
		<description><![CDATA[
    This video shows a chat application built using th [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example.html' rel='bookmark' title='Permanent Link: Kwwika Silverlight API &#8211; Chat Example'>Kwwika Silverlight API &#8211; Chat Example</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html' rel='bookmark' title='Permanent Link: Defining the Kwwika API'>Defining the Kwwika API</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>    This video shows a chat application built using the Kwwika JavaScript API and a chat application built using the Kwwika Silverlight API. Both applications can communicate with each other in real-time using the Kwwika service.
<p />
<div>We&#39;ll release the source code for both applications in the very near future.</div>
<p />
<div><object height="300" width="500"><param name="movie" value="http://www.youtube.com/v/bmkR0tO7WhA&#038;hl=en&#038;fs=1&#038;hd=1" /></param><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /></param><param name="allowscriptaccess" value="always" /></param><embed src="http://www.youtube.com/v/bmkR0tO7WhA&#038;hl=en&#038;fs=1&#038;hd=1" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="window" height="300" width="500"></embed></object></div><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;title=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Kwwika+Silverlight+API+%26%238211%3B+Chat+Example+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F05%2F10%2Fkwwika-silverlight-api-chat-example-2.html&amp;t=Kwwika+Silverlight+API+%26%238211%3B+Chat+Example" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example.html' rel='bookmark' title='Permanent Link: Kwwika Silverlight API &#8211; Chat Example'>Kwwika Silverlight API &#8211; Chat Example</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html' rel='bookmark' title='Permanent Link: Defining the Kwwika API'>Defining the Kwwika API</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Defining the Kwwika API</title>
		<link>http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html</link>
		<comments>http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html#comments</comments>
		<pubDate>Fri, 02 Apr 2010 11:34:48 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Real-Time Web Musings]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=773</guid>
		<description><![CDATA[Update: Hang on a minute. You've not explained what Kww [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html' rel='bookmark' title='Permanent Link: Kwwika Silverlight API &#8211; Chat Example'>Kwwika Silverlight API &#8211; Chat Example</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/19/want-to-try-out-the-kwwika-api-but-dont-want-to-register.html' rel='bookmark' title='Permanent Link: Want to try out the Kwwika API but don&#8217;t want to register?'>Want to try out the Kwwika API but don&#8217;t want to register?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html' rel='bookmark' title='Permanent Link: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest'>Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Update: Hang on a minute. You&#8217;ve not explained what <em>Kwwika</em> is!</strong><br />
In a really <a  href="http://nur.ph/ih7pgw">informative chat using Nurph</a>, which has been really useful in getting feedback, it was pointed out to me by <a  href="http://nur.ph/users/rythie">@rythie</a> and <a  href="http://nur.ph/users/neilcauldwell">@NeilCauldwell</a> that I need to explain what problem Kwwika is trying to solve before asking what the API should look like.</p>
<h2>Why do we need Kwwika?</h2>
<p>There are loads of real-time technologies available at the moment. Almost all of them have a reasonable learning curve and require a developer to sort out server infrastructure, perform installation, do all sort of configuration and then finally get around to writing an application. In the same way that a lot of developers or organisations have moved into managed hosting for their websites, or more recently moved a lot of their IT infrastructure into the Cloud, Kwwika offers a managed and scalable real-time infrastructure so you can concentrate on building your <a  href="http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html">Real-Time Rich Internet Application</a>.</p>
<p>The way I&#8217;m describing Kwwika at the moment is:</p>
<blockquote><p>Kwwika is a real-time web data sharing platform with APIs in JavaScript, Silveright, .NET, Java and C.</p></blockquote>
<h3>An example of where Kwwika could be used</h3>
<p><a  href="http://blog.caplin.com/author/martintcaplincom/">Martin Tyler</a> recently wrote a <a  href="http://blog.caplin.com/2010/02/24/when-were-you-when-tendulkar-scored-200/">blog post</a> that provides a great example of where a service like Kwwika would have been really useful. In the situation described in the blog post <a  href="http://www.cricinfo.com/">CricInfo</a> could simply publish their cricket updates to their defined topic in Kwwika, maybe <em>/CRICINFO/GAMES/INDIA-SOUTHAFRICA/</em>, from a single server. They would then add a small piece of script to their game web page that subscribes to this topic and updates that web page whenever any new data is available. Users would see the real-time in-page updates and would no longer continue to hit &#8220;Refresh&#8221; to see if the score had updated. Kwwika would instead take the hit of the data transfer and push the live updates to the web page. This would take a massive load off of the CricInfo server and clearly save them a lot of time and infrastructure costs.</p>
<h2>How will I use Kwwika?</h2>
<p>When we launch Kwwika all you&#8217;ll need to do to use the service is:</p>
<ol>
<li>Register for Kwwika via a sign up page</li>
<li>Define your topics that you would like to publish data to in the Kwwika dashboard e.g. <em>/PhilLeggetter/Kwwika</em></li>
<li>Find some topics with information on that you are interested in using e.g. <em>/BBC/NEWS/SPORT/FOOTBALL</em> (doesn&#8217;t exist &#8211; just an example &#8211; but how cool would that be!)</li>
<li>Embed the Kwwika &lt;script&gt; tag in your web application or download the API for your chosen technology</li>
<li>Start developing your Real-Time Rich Internet Application</li>
</ol>
<ul></ul>
<p>I think the great thing about this is that developers just use the Kwwika service and only ever need to care about developing their own application. Kwwika provides the server infrastructure so you don&#8217;t have to.</p>
<h2>The Kwwika API</h2>
<p>I&#8217;m in the middle of defining the Kwwika API and thought this would be a great opportunity to get some early feedback. We plan to have initial releases of the API for the following technologies:</p>
<ul>
<li>JavaScript</li>
<li>Java</li>
<li>.NET</li>
<li>Silverlight</li>
<li>C</li>
</ul>
<p>The API is really simple. It has the following functionality:</p>
<ul>
<li>Connect</li>
<li>Receive connection events</li>
<li>Subscribe for data</li>
<li>Receive subscription events such as errors and data updates</li>
<li>Publish data</li>
<li>Receive data publishing events (publish success or failure)</li>
<li>Disconnect</li>
</ul>
<p>At the moment we have two ways of thinking about the API. The following two examples are using the JavaScript API but we plan to make the APIs virtually identical between technologies with the only differences down to following the language specific standards.<br />
<span id="more-773"></span><br />
Our main topic of discussion is around how you initiate your connection to the Kwwika service but for completeness I&#8217;ll provide full examples. The first option we have is to create a <code>Connection</code> object using a factory method on the <code>kwwika</code> namespace.</p>
<pre class="brush: jscript;">
var oConnection = kwwika.connect({
									&quot;connectionStatusUpdated&quot;:function(sStatus)
									{
										document.getElementById(&quot;connectionStatus&quot;).innerHTML = sStatus;
									}
								 });

var oSubscription =
	oConnection.subscribe(&quot;/KWWIKA/LIBRARIES/JavaScriptAPI&quot;,
						  {
						  	&quot;topicUpdated&quot;:function(oSubscription, mUpdate)
						  	{
						  		for(var sFieldName in mUpdate)
						  		{
						  			document.getElementById(&quot;field_&quot; + sFieldName).innerHTML = mUpdate[sFieldName];
						  		}
						  	},
						  	&quot;topicError&quot;:function(oSubscription, sReason)
						  	{
						  		var sMsg = oSubscription.topicName + &quot; error: &quot; + sReason;
						  		document.getElementById(&quot;topicErrorMessage&quot;).innerHTML = sMsg;
						  	});

oConnection.publish(&quot;/KWWIKA/LIBRARIES/JavaScriptAPI&quot;,
					{
						&quot;name&quot;: &quot;Phil Leggetter&quot;,
						&quot;status&quot;: &quot;Getting feedback about the Kwwika API&quot;,
						&quot;datetime&quot;: new Date().getTime()
					},
					{
						&quot;commandSuccess&quot;:function(oSubscription)
						{
							var sMsg = oSubscription.topicName + &quot; message published.&quot;;
						  	document.getElementById(&quot;publishStatus&quot;).innerHTML = sMsg;
						},
						&quot;commandError&quot;:function(oSubscription, sError)
						{
							var sMsg = oSubscription.topicName + &quot; publish error: &quot; + sError;
						  	document.getElementById(&quot;publishStatus&quot;).innerHTML = sMsg;
						}
					});
</pre>
<p>In the second option is to create a new <code>Kwwika</code> object.</p>
<pre class="brush: jscript;">
var oKwwika = new Kwwika({
							&quot;connectionStatusUpdated&quot;:function(sStatus)
							{
								document.getElementById(&quot;connectionStatus&quot;).innerHTML = sStatus;
							}
						 });

var oSubscription =
	oKwwika.subscribe(&quot;/KWWIKA/LIBRARIES/JavaScriptAPI&quot;,
					  {
					  	&quot;topicUpdated&quot;:function(oSubscription, mUpdate)
					  	{
					  		for(var sFieldName in mUpdate)
					  		{
					  			document.getElementById(&quot;field_&quot; + sFieldName).innerHTML = mUpdate[sFieldName];
					  		}
					  	},
					  	&quot;topicError&quot;:function(oSubscription, sReason)
					  	{
					  		var sMsg = oSubscription.topicName + &quot; error: &quot; + sReason;
					  		document.getElementById(&quot;topicErrorMessage&quot;).innerHTML = sMsg;
					  	});

oKwwika.publish(&quot;/KWWIKA/LIBRARIES/JavaScriptAPI&quot;,
				{
					&quot;name&quot;: &quot;Phil Leggetter&quot;,
					&quot;status&quot;: &quot;Getting feedback about the Kwwika API&quot;,
					&quot;datetime&quot;: new Date().getTime()
				},
				{
					&quot;commandSuccess&quot;:function(oSubscription)
					{
						var sMsg = oSubscription.topicName + &quot; message published.&quot;;
					  	document.getElementById(&quot;publishStatus&quot;).innerHTML = sMsg;
					},
					&quot;commandError&quot;:function(oSubscription, sError)
					{
						var sMsg = oSubscription.topicName + &quot; publish error: &quot; + sError;
					  	document.getElementById(&quot;publishStatus&quot;).innerHTML = sMsg;
					}
				});
</pre>
<p>Do the above examples make sense? Is the API easy enough to use? How would you establish a connection to the Kwwika service? Would you do anything differently?</p>
<p>I&#8217;d love to get you feedback so please leave your comments below or email me directly using <a href="mailto:phil@leggetter.co.uk?subject=Defining the Kwwika API">phil@leggetter.co.uk</a>.</p><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;title=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Defining+the+Kwwika+API+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F04%2F02%2Fdefining-the-kwwika-api.html&amp;t=Defining+the+Kwwika+API" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/05/10/kwwika-silverlight-api-chat-example-2.html' rel='bookmark' title='Permanent Link: Kwwika Silverlight API &#8211; Chat Example'>Kwwika Silverlight API &#8211; Chat Example</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/19/want-to-try-out-the-kwwika-api-but-dont-want-to-register.html' rel='bookmark' title='Permanent Link: Want to try out the Kwwika API but don&#8217;t want to register?'>Want to try out the Kwwika API but don&#8217;t want to register?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html' rel='bookmark' title='Permanent Link: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest'>Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Fiddler to help develop cross domain capable JavaScript web applications</title>
		<link>http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html</link>
		<comments>http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html#comments</comments>
		<pubDate>Fri, 19 Mar 2010 10:50:01 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[fiddler]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=758</guid>
		<description><![CDATA[This post is going to be short and sweet. "Short" becau [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html' rel='bookmark' title='Permanent Link: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest'>Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a></li>
<li><a href='http://www.leggetter.co.uk/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='Permanent Link: How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This post is going to be short and sweet. &#8220;Short&#8221; because <a  href="http://www.fiddler2.com/fiddler2/">Fiddler</a> makes working around this problem so simple. And &#8220;Sweet&#8221; because I think this is really powerful and will allow you to develop applications that show why cross domain access, in some situations, should be allowed.</p>
<p>In my last post on <a  href="http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html">Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a> I demonstrated that in order to access a resource (web page/web service) the server needs to respond to your application/JavaScript HTTP requests with an HTTP header of <a  href="http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin">&#8220;Access-Control-Allow-Origin&#8221;</a>. The problem arises when you are trying to access a resource that doesn&#8217;t presently send the required HTTP header, but you really need it to (I&#8217;ve addressed a similar problem to this when developing Silverlight applications and the solution, again, was to use <a  href="http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html">Fiddler to trick Silverlight into allowing a crossdomain Web Request</a>). For development purposes you&#8217;ll need to add the required header to the server HTTP response in your development environment. This is really simple using Fiddler.<br />
<span id="more-758"></span><br />
All you need to do is add a new custom rule. You can do this via the menu option: <strong>Rules -&gt; Customize Rules&#8230;</strong></p>
<div id="attachment_759" class="wp-caption alignnone" style="width: 409px"><a  href="http://www.leggetter.co.uk/wp-content/uploads/2010/03/CustomizeRules.png" class="thickbox no_icon" rel="gallery-758" title="Customize Rules"><img class="size-full wp-image-759" title="Customize Rules" src="http://www.leggetter.co.uk/wp-content/uploads/2010/03/CustomizeRules.png" alt="" width="399" height="289" /></a>
<p class="wp-caption-text">Fiddler Customize Rules option</p>
</div>
<p>This will bring up a JScript.NET file (if you don&#8217;t like the thought of JScript you can just pretend it&#8217;s JavaScript) called <em>CustomRules.js</em>. In that file you will see a number of functions/methods that are called at certain points during an HTTP request or response. The method we are interested in is called <code>OnBeforeResponse</code> and what we want to do is to add the <em>Access-Control-Allow-Origin</em> header to trick the browser/scripting engine into thinking that the resource we are requesting allows the cross domain request.</p>
<pre class="brush: jscript;">
static function OnBeforeResponse(oSession: Session)
{
	oSession.oResponse.headers.Add(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);
}
</pre>
<p>The code above will add this header to all HTTP responses. You can of course add an <code>if</code> statement so that the header is only added when a particular condition is matched, such as a responses from <a  href="http://www.leggetter.co.uk">http://www.leggetter.co.uk</a>.</p>
<pre class="brush: jscript;">
static function OnBeforeResponse(oSession: Session)
{
	if (oSession.HostNameIs(&quot;www.leggetter.co.uk&quot;))
	{
		oSession.oResponse.headers.Add(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);
	}
}
</pre>
<p><small>The code snippet above has not been tested</small></p>
<p>Once you have added your code to the <code>OnBeforeResponse</code> method you can save and close the CustomRules.js file. Fiddler will detect that this file has been modified and compile it in the background so that it can use the new code with each request and response that it processes.</p>
<p>The next time that Fiddler is processing an HTTP response it will call this method, your code will run, and the <em>Access-Control-Allow-Origin</em> HTTP header added to the response.</p>
<pre class="brush: plain;">
HTTP/1.1 200 OK
Connection: close
Date: Fri, 19 Mar 2010 11:04:51 GMT
Server: Microsoft-IIS/6.0
Content-Type: text/html; charset=utf-8
Expires: Fri, 19 Mar 2010 11:03:51 GMT
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Allow-Origin: *
</pre>
<p>For more information on custom rules and generally developing using Fidder see their <a  href="http://www.fiddler2.com/Fiddler/dev/">Developer Info section</a>.</p>
<p><!-- Social Bookmarks BEGIN --></p>
<div class="social_bookmark">
<a><strong><em> </em></strong></a><br />
</p>
<div class="d">
<br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&#038;url=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a><br />
<br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&#038;output=popup&#038;bkmk=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a><br />
<br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications+@+http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a><br />
<a  onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&#038;t=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a><br />

</div>
</div>
<p><!-- Social Bookmarks END --></p>
<p>Related posts:
<ol>
<li><a  href="http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html" rel="bookmark" title="Permanent Link: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest">Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a></li>
<li><a  href="http://www.leggetter.co.uk/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html" rel="bookmark" title="Permanent Link: How to make a cross domain web request with SilverLight 2">How to make a cross domain web request with SilverLight 2</a></li>
<li><a  href="http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html" rel="bookmark" title="Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request">Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;title=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F19%2Fusing-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html&amp;t=Using+Fiddler+to+help+develop+cross+domain+capable+JavaScript+web+applications" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html' rel='bookmark' title='Permanent Link: Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest'>Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</a></li>
<li><a href='http://www.leggetter.co.uk/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='Permanent Link: How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest</title>
		<link>http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html</link>
		<comments>http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html#comments</comments>
		<pubDate>Fri, 12 Mar 2010 18:19:23 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Cross Domain]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[XDomainRequest]]></category>
		<category><![CDATA[XmlHttpRequest]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=741</guid>
		<description><![CDATA[Cross domain requests (also known as Cross Origin Resou [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html' rel='bookmark' title='Permanent Link: Using Fiddler to help develop cross domain capable JavaScript web applications'>Using Fiddler to help develop cross domain capable JavaScript web applications</a></li>
<li><a href='http://www.leggetter.co.uk/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='Permanent Link: How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2007/02/04/how-much-is-your-domain-worth.html' rel='bookmark' title='Permanent Link: How much is your domain worth?'>How much is your domain worth?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Cross domain requests (also known as <a  href="http://www.w3.org/TR/access-control/">Cross Origin Resource Sharing</a>) can be made using JavaScript without trickery, as far as I can tell, in <strong>Firefox 3.5</strong>, <strong>Safari</strong>,<strong> Google Chrome</strong> and <strong>Internet Explorer 8</strong>. This is done with all browsers except IE8 using a standard <a  href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</a> object. The only thing required to notify the browser that JavaScript is allowed to make this request is for the server to send a <a  href="http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin">Access-Control-Allow-Origin</a> response header. Internet Explorer 8 uses an object called <a  href="http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx">XDomainRequest</a> and requires the same HTTP header. If the value of the header is * then requests are allowed from all domains. You can be more restrictive if required.<br />
<span id="more-741"></span><br />
I took the code that I&#8217;ll use below from this <a  href="http://arunranga.com/examples/access-control/">CORS in action page</a> but I couldn&#8217;t find the code required to make this work in Internet Explorer so I&#8217;ve had to modify things a bit.</p>
<h2>See it in action</h2>
<p><script type="text/javascript" src="http://www.leggetter.co.uk/js/xss/simple.js"></script></p>
<form id="controlsToInvoke" action="">
<input type="button" value="Click to Invoke Another Site" onclick="callOtherDomain()" />
</p></form>
<div id="textDiv">
        The information below (when it appears) has been fetched using cross-site XHR.
    </div>
<h2>The code</h2>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot;&gt;

        var isIE8 = window.XDomainRequest ? true : false;
        var invocation = createCrossDomainRequest();
        var url = 'http://www.phobos7.co.uk/research/xss/simple.php';        

        function createCrossDomainRequest(url, handler)
        {
            var request;
            if (isIE8)
            {
                request = new window.XDomainRequest();
            }
            else
            {
                request = new XMLHttpRequest();
            }
            return request;
        }

        function callOtherDomain()
        {
            if (invocation)
            {
                if(isIE8)
                {
                    invocation.onload = outputResult;
                    invocation.open(&quot;GET&quot;, url, true);
                    invocation.send();
                }
                else
                {
                    invocation.open('GET', url, true);
                    invocation.onreadystatechange = handler;
                    invocation.send();
                }
            }
            else
            {
                var text = &quot;No Invocation TookPlace At All&quot;;
                var textNode = document.createTextNode(text);
                var textDiv = document.getElementById(&quot;textDiv&quot;);
                textDiv.appendChild(textNode);
            }
        }

        function handler(evtXHR)
        {
            if (invocation.readyState == 4)
            {
                if (invocation.status == 200)
                {
                    outputResult();
                }
                else
                {
                    alert(&quot;Invocation Errors Occured&quot;);
                }
            }
        }

        function outputResult()
        {
            var response = invocation.responseText;
            var textDiv = document.getElementById(&quot;textDiv&quot;);
            textDiv.innerHTML += response;
        }
    &lt;/script&gt;

    &lt;form id=&quot;controlsToInvoke&quot; action=&quot;&quot;&gt;
        &lt;p&gt;
            &lt;input type=&quot;button&quot; value=&quot;Click to Invoke Another Site&quot; onclick=&quot;callOtherDomain()&quot; /&gt;
        &lt;/p&gt;
    &lt;/form&gt;

    &lt;div id=&quot;textDiv&quot;&gt;
        The information below (when it appears) has been fetched using cross-site XHR.
    &lt;/div&gt;
</pre>
<p>And this is the code on the server</p>
<pre class="brush: php;">
&lt;?php
	header('Content-type: text/html');
    header('Access-Control-Allow-Origin: *');
	$uri = 'http'. ($_SERVER['HTTPS'] ? 's' : null) .'://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
	echo('&lt;p&gt;This information has come from &lt;a href=&quot;' . $uri . '&quot;&gt;' . $uri . '&lt;/a&gt;&lt;/p&gt;');
?&gt;
</pre><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;title=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2010%2F03%2F12%2Fmaking-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html&amp;t=Making+cross+domain+JavaScript+requests+using+XMLHttpRequest+or+XDomainRequest" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/03/19/using-fiddler-to-help-develop-cross-domain-capable-javascript-web-applications.html' rel='bookmark' title='Permanent Link: Using Fiddler to help develop cross domain capable JavaScript web applications'>Using Fiddler to help develop cross domain capable JavaScript web applications</a></li>
<li><a href='http://www.leggetter.co.uk/2008/10/24/how-to-make-a-cross-domain-web-request-with-silverlight-2.html' rel='bookmark' title='Permanent Link: How to make a cross domain web request with SilverLight 2'>How to make a cross domain web request with SilverLight 2</a></li>
<li><a href='http://www.leggetter.co.uk/2007/02/04/how-much-is-your-domain-worth.html' rel='bookmark' title='Permanent Link: How much is your domain worth?'>How much is your domain worth?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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[On or around the 12th of December 2009 Google released  [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/08/27/google-realtime-search-isnt-real-time.html' rel='bookmark' title='Permanent Link: 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='Permanent Link: 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/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Permanent Link: Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</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>

<a  href="http://www.google.co.uk/realtimejs?q=%23leweb" rel="nofollow">http://www.google.co.uk/realtimejs?q=%23leweb</a>

&#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;">
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;">
/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>

<a  href="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" rel="nofollow">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</a>
</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><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;title=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+How+does+Google+Real-Time+Search+work%3F+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F12%2F12%2Fhow-does-google-real-time-search-work.html&amp;t=How+does+Google+Real-Time+Search+work%3F" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<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='Permanent Link: 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='Permanent Link: 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/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Permanent Link: Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</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[I've been a member of the RIA Developers Group on Link [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Permanent Link: Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2010/02/27/using-real-time-web-software-and-technology-to-distribute-events.html' rel='bookmark' title='Permanent Link: Using real-time web software and technology to distribute events'>Using real-time web software and technology to distribute events</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</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><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;title=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Which+Rich+Internet+Application+Technology+will+dominate%3F+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F11%2F07%2Fwhich-rich-internet-application-technology-will-dominate.html&amp;t=Which+Rich+Internet+Application+Technology+will+dominate%3F" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<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='Permanent Link: Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2010/02/27/using-real-time-web-software-and-technology-to-distribute-events.html' rel='bookmark' title='Permanent Link: Using real-time web software and technology to distribute events'>Using real-time web software and technology to distribute events</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/30/using-fiddler-to-trick-silverlight-into-allowing-a-crossdomain-web-request.html' rel='bookmark' title='Permanent Link: Using Fiddler to trick Silverlight into allowing a crossdomain Web Request'>Using Fiddler to trick Silverlight into allowing a crossdomain Web Request</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>Drag Drop bug in JQuery UI 1.5.3</title>
		<link>http://www.leggetter.co.uk/2009/01/31/drag-drop-bug-in-jquery-ui-153.html</link>
		<comments>http://www.leggetter.co.uk/2009/01/31/drag-drop-bug-in-jquery-ui-153.html#comments</comments>
		<pubDate>Sat, 31 Jan 2009 15:11:04 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScript JQuery UI Bug]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=95</guid>
		<description><![CDATA[JQuery UI Update - 31/01/2009 @ 17:15
Richard Worth ju [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h3><em>JQuery UI Update &#8211; 31/01/2009 @ 17:15</em></h3>
<p><a  title="Richard D Worth" href="http://rdworth.org/blog/">Richard Worth</a> just got in touch with me via <a  href="http://twitter.com/rworth">twitter</a> to let me know that JQuery UI 1.5.3 is only compatible with JQuery 1.2.6.</p>
<p><q cite="http://twitter.com/rworth/status/1164840041">The bug is not in jQuery UI 1.5.3, but just that 1.5.3 is only compatible with 1.2.6. Only 1.6rc5+ is compatible with jQuery 1.3</q></p>
<p>Therefore to use <a  href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jqueryUI">JQuery with JQuery UI from the Google Ajax Libraries</a> hosted service you need to do one of the following:</p>
<h4>Script includes</h4>
<pre name="code" class="html">&lt;script type="text/javascript"
             src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
             src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.jss"&gt;
&lt;/script&gt;</pre>
<h4>Google Library loading</h4>
<pre name="code" class="javascript">google.load("jquery", "1.2.6");
google.load("jqueryui", "1.5.3");</pre>
<p>&#8212;</p>
<p><a  href="http://jquery.com/">JQuery</a> seems to be the most active of the JavaScript libraries at the moment so I decided to use it for a little project. I&#8217;ve also decided to use the <a  href="http://code.google.com/apis/ajaxlibs/">Google AJAX Libraries APIs hosted service</a> to serve up the JavaScript files. At present <a  href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jqueryUI">Google is hosting JQuery UI</a> version 1.5.3. After a bit of investigation I&#8217;ve determined that there is a bug in the Drag  and Drop functionality in this version. It would appear that the &#8220;drop&#8221; function is not fired when you try to drop a draggable element on a droppable zone. I verified this by changing the JQuery UI version to the 1.6 RC that the <a  href="http://ui.jquery.com/demos/droppable/">JQuery UI droppable demo</a> is using at the moment. When I did this the drag and drop functionality worked as expected.</p>
<p><img class="alignnone" style="background-color:#5f5f5f;" title="JQuery UI" src="http://ui.jquery.com/images/logo.gif" alt="" width="235" height="55" /></p>
<p>This may be a know issue but I thought a small post on the matter might save other people a bit of time. I did have a look at raising a bug but there appears to be a bug in the <a  href="http://dev.jqueryui.com/report/10?P=droppable">bug tracking system</a>.</p><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;title=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Drag+Drop+bug+in+JQuery+UI+1.5.3+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2009%2F01%2F31%2Fdrag-drop-bug-in-jquery-ui-153.html&amp;t=Drag+Drop+bug+in+JQuery+UI+1.5.3" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2009/01/31/drag-drop-bug-in-jquery-ui-153.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mapping APIs</title>
		<link>http://www.leggetter.co.uk/2007/02/05/mapping-apis.html</link>
		<comments>http://www.leggetter.co.uk/2007/02/05/mapping-apis.html#comments</comments>
		<pubDate>Mon, 05 Feb 2007 20:31:59 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/2007/02/05/mapping-apis-are-all-the-rage.html</guid>
		<description><![CDATA[Mapping APIs have been around for ages now and all the  [...]


Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/08/23/geo-grandfather-esri-makes-strides-on-the-web.html' rel='bookmark' title='Permanent Link: Geo Grandfather ESRI Makes Strides on the Web'>Geo Grandfather ESRI Makes Strides on the Web</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Mapping APIs have been around for ages now and all the big guns (<a  href="http://www.google.com/apis/maps/" title="Google Maps API">Google</a>, <a  href="http://developer.yahoo.com/maps/" title="Yahoo Maps API">Yahoo</a>, <a  href="http://dev.live.com/virtualearth/default.aspx?app=virtual_earth" title="Microsoft Virtual Earth API">Microsoft</a>) have thrown their hat into the ring.Â  You can even get a <a  href="http://avi.alkalay.net/2006/11/google-maps-plugin-for-wordpress.html" title="Avi Alkalay - Google Maps Plugin for WordPress">Google maps plugin for wordpress</a> plugin to allow you to easily put a map in your blog.</p>
<p><a  href="http://maps.google.com/maps?f=q&#038;hl=en&#038;q=Edinburgh&#038;ie=UTF8&#038;om=1&#038;z=12&#038;ll=55.967842,-3.187408&#038;spn=0.066674,0.43396&#038;iwloc=addr" title="googlemap;w:425;nomarker">Wow, it&#8217;s Edinburgh</a></p>
<p>There&#8217;s even an <a  href="http://www.mapstraction.com/" title="Mapstraction">API that allows you to switch between using all three</a> &#8211; but it doesn&#8217;t look like it&#8217;s been updated in quite a while.</p>
<p>All these examples exploded onto the scene but haven&#8217;t really made any major advances, that my naked eye can see, for quite a while. Why is this? Is it that they are as good as they can possibly get? Or is development stagnant for another reason? Maybe it&#8217;s lack of data! Whilst people are forever creating <a  href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)" title="Wikipedia definition: Mashup">mashups</a> of this on top of that with a little bit of the other thrown in the unfortunate thing for me is that there hasn&#8217;t really been anything that has blown my mind since the very early days of DHTML maps. Somebody please prove me wrong!</p>
<p>Maybe it&#8217;s time for the <a  href="http://www.ordnancesurvey.co.uk/oswebsite/" title="Ordnance Survey â€“ Great Britain's national mapping agency">OS</a> to start setting the data free so that people can actually benefit from the high quality data without paying through the nose &#8211; then maybe we&#8217;ll see some great UK mashups.</p><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em> </em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;DotNetKicks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&nbsp;DotNetKicks" alt="Add to&nbsp;DotNetKicks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;title=Mapping+APIs" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Mapping+APIs+@+http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http%3A%2F%2Fwww.leggetter.co.uk%2F2007%2F02%2F05%2Fmapping-apis.html&amp;t=Mapping+APIs" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.leggetter.co.uk/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->


<p>Related posts:<ol><li><a href='http://www.leggetter.co.uk/2010/08/23/geo-grandfather-esri-makes-strides-on-the-web.html' rel='bookmark' title='Permanent Link: Geo Grandfather ESRI Makes Strides on the Web'>Geo Grandfather ESRI Makes Strides on the Web</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2007/02/05/mapping-apis.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
