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

<channel>
	<title>Phil Leggetter - Real-Time Web Software and Technology Evangelist &#187; real-time data</title>
	<atom:link href="http://www.leggetter.co.uk/tag/real-time-data/feed" rel="self" type="application/rss+xml" />
	<link>http://www.leggetter.co.uk</link>
	<description>Real-Time Web, Real-Time Data and Social Media Software and Technology Evangelist and Consultant</description>
	<lastBuildDate>Sun, 29 Jan 2012 05:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Glug, Glug: Guzzle Ayup a Hosted PubSubHubbub Hub Service</title>
		<link>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html</link>
		<comments>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html#comments</comments>
		<pubDate>Wed, 18 May 2011 07:00:22 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Ayup]]></category>
		<category><![CDATA[Guzzle Ayup]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Superfeedr]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=19415</guid>
		<description><![CDATA[PubSubHubbub has become the standard protocol for real-time RSS and Atom feed subscription and delivery. But not everybody wants to host their own PubSubHubbub hub in the same way that hardly anybody hosts their own website, and why cloud services in general have become so popular. Guzzle Ayup has entered the market to offer a [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html' rel='bookmark' title='Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest'>Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.programmableweb.com/api/guzzle-ayup"><img src="http://www.programmableweb.com/images/apis/at3641.png" alt="Guzzle Ayup!" class="imgRight" /></a>PubSubHubbub has become the standard protocol for real-time RSS and Atom feed subscription and delivery. But not everybody wants to host their own PubSubHubbub hub in the same way that hardly anybody hosts their own website, and why cloud services in general have become so popular. <a  href="http://ayup.us/">Guzzle Ayup</a> has entered the market to offer a hosted PubSubHubbub hub service.</p>
<p>Since PubSubHubbub has been around for a while it’s relatively easy for a developer to start using a hub such as Guzzle Ayup (Ayup for short). There are a good number of PubSubHubbub <a  href="http://code.google.com/p/pubsubhubbub/wiki/PublisherClients">publisher</a> and <a  href="http://code.google.com/p/pubsubhubbub/wiki/SubscriberClients">subscriber</a> clients that can be used. There is also a reasonable amount of documentation on the subject including the <a  href="http://code.google.com/p/pubsubhubbub/">Google PubSubHubbub home page</a> and <a  href="https://ayup.us/documentation">Ayup’s documentation</a>.</p>
<p>Ayup was created by a web agency based in Paris called <a  href="http://lemonchik.com/">Lemonchik</a> following the requirement to provide notifications to a real-time theme-based news aggregator called <a  href="http://guzzle.it/">Guzzle</a> and for future web and iOS applications that will require real-time notifications. They were so happy with the final implementation that they decided to build a front-end console and offer it as a public service.</p>
<p><img class="aligncenter size-medium wp-image-19418" title="Ayup User Dashboard - Add a feed" src="http://blog.programmableweb.com/wp-content/ayup_dashboard-266x300.png" alt="" width="266" height="300" /></p>
<p>Marca Tatem of Lemonchik (and Guzzle Ayup) explains a bit more about the internals of the the service:</p>
<blockquote><p>The internals of Ayup are fun to look at. It&#8217;s a ruby application with a Sinatra web-service, and everything is happening in high-performance, RAM only, Resque queues (backed with Redis). Ayup structure is in itself completely scalable, adding a server with hundreds of new workers is a matter of minutes.</p>
</blockquote>
<p>Ayup offer a simple pay for what you use pricing policy and allow you to set a notification limit which can be handy in keeping costs down when subscribed feeds update more than expected. They also offer something called Virtual hubs which Marca explains as:</p>
<blockquote><p>Virtual Hubs are PubSubHubbub hubs content publishers can create to push free notifications to subscribers. For example, let&#8217;s say that you want people to be able to receive instant push notifications each time you publish a story, you simply create a virtual hub ([YourHubName].ayup.us) people can subscribe to (with a subscribe request) and notifications will be sent to their http callback for free.</p>
</blockquote>
<p>Marca continues to explain why Virtual Hubs are a good way of encouraging simple and free access to your content:</p>
<blockquote><p>The difference between a virtual hub and the actual ayup&#8217;s hub is that with a virtual hub, you can only send a subscribe request for a topic that belongs to the virtual hub&#8217;s owner. In other words, if you create a virtual hub, I can&#8217;t send a subscribe request for MacRumor&#8217;s RSS feed. If I want to subscribe to many different feeds without limitations, then I&#8217;ll have to create an Ayup account and pay for sent notifications.</p>
</blockquote>
<p>Ayup’s focus for the near future is to keep things simple by delivering a good experience for developers and good quality of service such as fast and constant notifications and clean ATOM.</p>
<p>At the time of writing there are only two hosted PubSubHubbub hub services (<a  href="http://code.google.com/p/pubsubhubbub/wiki/Hubs">Hub implementations and hosted services</a>). The first well-known service <a  href="http://superfeedr.com/">Superfeedr</a> and now there is the welcome addition of a second in <a  href="http://ayup.us/">Guzzle Ayup</a></p>
<p>Originally written by me and <a  href="http://blog.programmableweb.com/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service/">posted on Programmable Web</a></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2010/07/04/basic-authentication-against-the-superfeedr-http-pubsubhubbub-api-using-a-net-httpwebrequest.html' rel='bookmark' title='Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest'>Basic Authentication against the Superfeedr HTTP PubSubHubbub API using a .NET HttpWebRequest</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/05/18/glug-glug-guzzle-ayup-a-hosted-pubsubhubbub-hub-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Curates the Real-Time Web?</title>
		<link>http://www.leggetter.co.uk/2011/03/31/who-curates-the-real-time-web.html</link>
		<comments>http://www.leggetter.co.uk/2011/03/31/who-curates-the-real-time-web.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 08:00:23 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Cadmus]]></category>
		<category><![CDATA[Curation]]></category>
		<category><![CDATA[DataSift]]></category>
		<category><![CDATA[Keepstream]]></category>
		<category><![CDATA[Klout]]></category>
		<category><![CDATA[Madia Gazer]]></category>
		<category><![CDATA[Mass Relevance]]></category>
		<category><![CDATA[Peer Index]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[Salience]]></category>
		<category><![CDATA[Storify]]></category>
		<category><![CDATA[Trapit]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=18775</guid>
		<description><![CDATA[<a href="http://www.flickr.com/photos/blakespot/4011035061/"><img src="http://blog.programmableweb.com/wp-content/stopwatch.jpg" alt="Real-time" width="100" height="75" class="imgRight" /></a><a href="http://schedule.sxsw.com/">SXSW</a> was the source of a flood of real-time information on the web. Information flowed from attendees using social media tools to share what was being discussed, their thoughts and their experiences. This information was amplified further by the information be re-shared (retweeted on Twitter) and by other opinions being expressed about all things SXSW. But how is it that you ensure you don't miss an important piece of information from within your social media connections or even outside of your normal social media circles? From an earlier <a href="http://blog.programmableweb.com/2011/02/15/cadmus-offers-algorithmic-twitter-feed-curation/">post on Cadmus</a>, an algorithmic Twitter feed service, you may be aware of the idea of curation - filtering content to ensure that you don't miss the most relevant information. But who performs this curation and what roles do technology have in the process?
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html' rel='bookmark' title='Browse, Build and Share Real-time Streams with DataSift'>Browse, Build and Share Real-time Streams with DataSift</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.flickr.com/photos/blakespot/4011035061/"><img class="imgRight" title="Real-time" src="http://blog.programmableweb.com/wp-content/stopwatch.jpg" alt="Real-time" width="100" height="75" /></a><a  href="http://schedule.sxsw.com/">SXSW</a> was the source of a flood of real-time information on the web. Information flowed from attendees using social media tools to share what was being discussed, their thoughts and their experiences. This information was amplified further by the information be re-shared (retweeted on Twitter) and by other opinions being expressed about all things SXSW. But how is it that you ensure you don&#8217;t miss an important piece of information from within your social media connections or even outside of your normal social media circles? From an earlier <a  href="http://blog.programmableweb.com/2011/02/15/cadmus-offers-algorithmic-twitter-feed-curation/">post on Cadmus</a>, an algorithmic Twitter feed service, you may be aware of the idea of curation &#8211; filtering content to ensure that you don&#8217;t miss the most relevant information. But who performs this curation and what roles do technology have in the process?out</p>
<p>It is technology that has made it possible for us to produce, share and consume so much information. We are living in a time that is often referred to as an era of digital overload. It&#8217;s therefore very interesting and essential that the cause of this data overload should also be the solution: Technology, in combination with human input, can help us solve these new problems through automated curation of data.</p>
<p>SXSW ran a panel covering this subject: &#8220;<a  href="http://schedule.sxsw.com/events/event_IAP7907">Humans Versus Robots: Who Curates the Real-Time Web?</a>&#8220;. The panel consisted of representatives from curation services including Henry Nothhaft from <a  href="http://trap.it/">Trapit</a>, Jim England from <a  href="http://keepstream.com/">Keepstream</a>, Sam Decker from <a  href="http://www.massrelevance.com/">Mass Relevance</a>, Xavier Damman from <a  href="http://storify.com/">Storify</a>, and Megan McCarthy from <a  href="http://www.mediagazer.com/">Media Gazer</a> who chaired the discussion. Unsurprisingly there wasn&#8217;t a definitive answer to this question. The answer really depends on the data that is being curated. It was agreed that automated curation (robots) was required in cases where there was so much data that it would not be possible for humans to possibly curate. However, the consensus was that generally once the amount of data had been reduced to a more acceptable level that it was humans who could provide the best form of curation since they can understand and apply more context and objectivity to any data. Technology will of course improve and we&#8217;ll see the robots getting smarter and smarter.</p>
<p>Curation cannot be solved by any one technology and it will require smooth interaction and integration between numerous technologies in order to solve this problem. APIs will play a massive part in the curation process and we&#8217;ve already seen this directly through the <a  href="http://www.programmableweb.com/api/cadmus">Cadmus API</a> and within services such as <a  href="http://blog.programmableweb.com/2011/01/17/browse-build-and-share-real-time-streams-with-datasift/">DataSift</a>, where they use third party services such as <a  href="http://klout.com/">Klout</a>, <a  href="http://www.peerindex.net/">Peer Index</a> and <a  href="http://www.lexalytics.com/solutions/enterprise-software">Salience</a> for influence and sentiment analysis. DataSift provide a delivery and curation service but they can&#8217;t do everything on their own which is why they have outsourced some parts of the process to other services. As more curation techniques and algorithms are identified we&#8217;ll see these techniques exposed through additional services and APIs and in turn these APIs will be integrated into other curation services.</p>
<p>The amount of information being published to the real-time web is going to increase and as it does so will the importance of curation. It might not be long until it will be essential in ensuring that we don&#8217;t all suffer digital overload. How long will it be before Twitter.com and the ever increasing list of official Twitter clients, who presently only offer manual curation through selective follows and lists, join in and add curation to their service? Will they build it themselves, use a number of the available APIs (unlikely based on the amount of data) or make another acquisition?</p>
<p>Photo via <a  href="http://www.blakespot.com/">Blake Patterson</a></p>
<p>Originally written by me for <a  href="http://blog.programmableweb.com/2011/03/31/who-curates-the-real-time-web/">Programmable Web</a><br />
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html' rel='bookmark' title='Browse, Build and Share Real-time Streams with DataSift'>Browse, Build and Share Real-time Streams with DataSift</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/03/31/who-curates-the-real-time-web.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Looking for a C# (ASP.NET MVC), jQuery &amp; Real-Time Web Contractor</title>
		<link>http://www.leggetter.co.uk/2011/03/23/looking-for-a-c-javascript-real-time-web-contractor.html</link>
		<comments>http://www.leggetter.co.uk/2011/03/23/looking-for-a-c-javascript-real-time-web-contractor.html#comments</comments>
		<pubDate>Wed, 23 Mar 2011 09:45:04 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://leggetter.posterous.com/looking-for-a-c-javascript-real-time-web-cont</guid>
		<description><![CDATA[        
	I&#039;m very hopeful that I&#039;ll be looking to hire a contractor very soon and I thought I would post this to get a feeling for who is out there and interested. The skills I&#039;m looking for are as follows:EssentialC#Advanced JavaScriptTD...
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/01/31/drag-drop-bug-in-jquery-ui-153.html' rel='bookmark' title='Drag Drop bug in JQuery UI 1.5.3'>Drag Drop bug in JQuery UI 1.5.3</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m looking for a contractor for a provisional 3 month contract with the following skills, experience and interests:</p>
<p><strong>Essential</strong></p>
<ul>
<li>C#</li>
<li>jQuery</li>
<li>TDD/BDD</li>
<li>ASP.NET MVC</li>
<li>ADO.NET Entity Framework or other ORM</li>
</ul>
<p><strong>Great to have</strong></p>
<ul>
<li>Passionate about the real-time web and real-time data (essential for the longer term)</li>
<li>Knowledge of building scalable systems on Amazon Infrastructure</li>
<li>Experience of integrating with 3rd party payment systems and building basic ecommerce functionality</li>
<li>Experience of building a SaaS or IaaS offering</li>
<li>Interest/experience in API and Web Service development</li>
<li>Advanced JavaScript</li>
<li>CSS</li>
<li>Excited about HTML5</li>
<li>Part of a tech community</li>
</ul>
<p><strong>Location</strong></p>
<p>The role will be primarily home-based but at times we may need to meet around 2 to 3 times a week at a location that we agree on anywhere between or around Dundee and Edinburgh.</p>
<p>Moving forward I&#8217;m hopeful that this could develop into a fulltime role so it would be ideal if we could get somebody who was interested in this also.</p>
<p>If you are interested please <a  href="mailto:phil@kwwika.com">get in touch</a>&nbsp;with&nbsp;your availability and your rate.</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2009/01/31/drag-drop-bug-in-jquery-ui-153.html' rel='bookmark' title='Drag Drop bug in JQuery UI 1.5.3'>Drag Drop bug in JQuery UI 1.5.3</a></li>
<li><a href='http://www.leggetter.co.uk/2009/10/29/real-time-rich-internet-applications-rtria.html' rel='bookmark' title='Real-Time Rich Internet Applications (RTRIA)'>Real-Time Rich Internet Applications (RTRIA)</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/03/23/looking-for-a-c-javascript-real-time-web-contractor.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</title>
		<link>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html#comments</comments>
		<pubDate>Thu, 20 Jan 2011 12:51:26 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Aberdeen]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[real-time web platforms]]></category>
		<category><![CDATA[real-time web services]]></category>
		<category><![CDATA[TechMeetup]]></category>
		<category><![CDATA[websockets]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=5479</guid>
		<description><![CDATA[<p>I did my first ever <a href="http://www.techmeetup.co.uk/">TechMeetup</a> talk yesterday in Aberdeen and my chosen subject, unsurprisingly, was The Real-Time Web. We started out discussing what real-time was, then what The Real-Time Web is and when receiving information in real-time mattered. I also went on to cover some of the key real-time web technologies including HTTP [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I did my first ever <a  href="http://www.techmeetup.co.uk/">TechMeetup</a> talk yesterday in Aberdeen and my chosen subject, unsurprisingly, was <strong>The Real-Time Web</strong>. We started out discussing what real-time was, then what The Real-Time Web is and when receiving information in real-time mattered. I also went on to cover some of the key real-time web technologies including <strong>HTTP Streaming</strong>, <strong>PubSubHubbub</strong> and <strong>WebSockets</strong> and then on to <strong>real-time web services and platforms</strong>.</p>
<p>A big thanks to <a  href="http://twitter.com/#!/aboynejames">@aboynejames</a> for suggesting I do the talk and <a  href="http://www.abdn.ac.uk/~csc228/blog/">Bruce Scharlau</a> for inviting me along. I&#8217;d also like to thank everybody who attended and made me feel very welcome and certainly seemed interested.</p>
<h3>Feedback</h3>
<p>If you where there then please leave a comment letting me know what you thought or just to let me know who you are. If you&#8217;d rather email you can get me using <a href="mailto:phil@leggetter.co.uk?subject=Aberdeen TechMeetup">phil@leggetter.co.uk</a>.</p>
<h3>Video</h3>
<p>Here&#8217;s a video of the first 10 minutes of the talk. Unfortunately the video recorder ran out of batteries.</p>
<div style="text-align:center;"><iframe src="http://player.vimeo.com/video/19060295" width="400" height="227" frameborder="0"></iframe>
<p><a  href="http://vimeo.com/19060295">TM January 2011: Phil Leggetter &#8211; Real-Time Web</a> from <a  href="http://vimeo.com/user2219054">Alan Gardner</a> on <a  href="http://vimeo.com">Vimeo</a>.</p>
</div>
<h3>Presentation and Notes</h3>
<p><iframe src="https://docs.google.com/present/embed?id=dhf7xbgp_184gqqj6hhc&#038;size=m" frameborder="0" width="555" height="451"></iframe></p>
<p>Unfortunately I can&#8217;t find a way of showing my slide notes in the above embeded Google Presentation so here they are in pretty rough form.</p>
<h4>What is Real-Time?</h4>
<p>Respond or react within a predictable time after an event has occurred.</p>
<p>There may also be a maximum time constraint.</p>
<p>Because after that maximum time the information loses value and context.</p>
<p>Maybe we should really call it:<br />
Right-Time</p>
<h4>When does Real-Time matter?</h4>
<p><strong>When does NOW matter?</strong></p>
<p>When do you think being informed of something the instant it occurs really matters?</p>
<ul>
<li><strong>Critical systems</strong>. </li>
<li><strong>Live events</strong> where things lose context.</li>
<li>Systems requiring synchronisation:<br />
The 2Screen experience e.g. <a  href="http://tellylinks.com">TellyLinks.com</a></li>
<li>Interactive/collaborative things e.g. chat, Google Wave, Google Docs (docs, spreadsheets, drawing)</li>
<li><b>Sensor data</b> e.g. Car ABS breaks</li>
<li><strong>Trading</strong>: You&#8217;ve got to be sure you are seeing the correct trade price in order to be able to make a decision on whether to trade or not.</li>
<li><strong>Betting</strong>: You want to make sure you bet at the right odds and you don&#8217;t want clients to be able to bed when the odds have changed.</li>
</ul>
<h4>Evolution of the Web</h4>
<p><strong>From Pull to Push</strong></p>
<p>Although I&#8217;m going to use the Web Browser as the example client the client could of course be anything. Another web server any desktop application, a mobile application, an embedded app on any device.</p>
<p>I&#8217;m also going to focus on HTTP but the mechanisms could be applied to standard TCP socket connections.</p>
<h4>HTTP Pull (Request, Response)</h4>
<p>Note: client. This can be a web browser but doesn&#8217;t have to be.</p>
<p>1) Each request would result in a page reload.<br />
2) Event occurs on server there&#8217;s no way of the server telling the browser.<br />
3) e.g. chat pages where you would need to click the &#8220;Refresh&#8221; button to see what other users are saying </p>
<h4>HTTP Polling</h4>
<p>A user hitting F5 or clicking the refresh button is one manual example.</p>
<p>1) REFRESH-META<br />
2) Then frames<br />
3) XMLHttpRequest -> Outlook web access (ActiveX object) </p>
<p>Check if the information has changed by polling.</p>
<p>The problem with this is you can easily waste requests and it can be resource intensive for both the client and the server.</p>
<p>A large amount of services still take this approach although the web, and the technologies, have evolved to allow for real-time push.</p>
<p>For quite some time I&#8217;ve said if a service uses HTTP Polling when push technology is available and a much better option that <a  href="http://itsnotrealtime.com">it&#8217;s not real-time</a></p>
<h4>HTTP Push</h4>
<p>In this diagram you could replace the Client with Server. The initialization could be classed as a subscription or webhook.</p>
<p>Various techniques have been developed to hold a connection open to a web server from a browser.</p>
<p>Difficulties :</p>
<p>* Proxies/Firewall<br />
* Connection reselience<br />
* Browsers<br />
* Messaging API</p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html' rel='bookmark' title='XMPP PubSub or PubSubHubbub for real-time server push?'>XMPP PubSub or PubSubHubbub for real-time server push?</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Browse, Build and Share Real-time Streams with DataSift</title>
		<link>http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html#comments</comments>
		<pubDate>Mon, 17 Jan 2011 08:00:20 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[DataSift]]></category>
		<category><![CDATA[digg]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[google buzz]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[InfoChimps]]></category>
		<category><![CDATA[Klout]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[Peer Index]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[Salience]]></category>
		<category><![CDATA[Sentiment]]></category>
		<category><![CDATA[SixApart]]></category>
		<category><![CDATA[TweetMeme]]></category>
		<category><![CDATA[websockets]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.programmableweb.com/?p=17676</guid>
		<description><![CDATA[<a href="http://www.programmableweb.com/api/datasift"><img src="http://www.programmableweb.com/images/apis/at2922.png" alt="DataSift" class="imgRight" /></a>A core feature of the real-time web is the continuously updating real-time streams of information. These streams are commonly generated by social networks and with the continued uptake of social networking the amount of information is only going to increase. This will continue to introduce opportunities for companies to create products and services that extract value from that vast amount of data. Some of the most common services built around these streams include trend and sentiment analysis, data storage, aggregation, sorting, search and filtering. <a href="http://datasift.net/">DataSift</a> is a service that offers a host of exciting features including the ability to let users browse, build and share their own real-time streams using social media data drawn from a host of sources.
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/03/31/who-curates-the-real-time-web.html' rel='bookmark' title='Who Curates the Real-Time Web?'>Who Curates the Real-Time Web?</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://www.programmableweb.com/api/datasift"><img class="imgRight" src="http://www.programmableweb.com/images/apis/at2922.png" alt="DataSift" /></a>A core feature of the real-time web is the continuously updating real-time streams of information. These streams are commonly generated by social networks and with the continued uptake of social networking the amount of information is only going to increase. This will continue to introduce opportunities for companies to create products and services that extract value from that vast amount of data. Some of the most common services built around these streams include trend and sentiment analysis, data storage, aggregation, sorting, search and filtering. <a  href="http://datasift.net/">DataSift</a> is a service that offers a host of exciting features including the ability to let users browse, build and share their own real-time streams using social media data drawn from a host of sources.</p>
<p>DataSift <a  href="http://techcrunch.com/2010/09/27/tweetmeme-founders-datasift-helps-you-find-a-needle-in-a-tweetstack/">launched</a> its Alpha service at TechCrunch Disrupt in September and describe it as a &#8220;real time social media filtering engine.&#8221; The initial buzz around DataSift was generated when Twitter agreed to give them access to the Twitter firehose, but they now have access to a much wider range of data including the Google Buzz, MySpace, SixApart, WordPress, Facebook and Digg. These sources of data within DataSift, sometimes called input services, are defined as <a  href="http://support.datasift.net/help/kb/fsdl/targets">Targets</a> in the DataSift knowledge base.</p>
<p>Users can use Targets to <a  href="http://support.datasift.net/help/kb/getting-started/creating-your-first-stream">create their own streams</a> from within the My Streams section of the DataSift dashboard using a language called <a  href="http://support.datasift.net/help/kb/fsdl/an-introduction-to-fsdl">FSDL</a> (Filtered Stream Definition Language). The Web editor used to define your streams is pretty simple but it does provide some basic syntax highlighting as well as validating your syntax whenever you save. FSDL also provides access to <a  href="http://support.datasift.net/help/kb/targets/targets-augmentations">augmentation Targets</a> through services such as Salience, TweetMeme, Peer Index, Klout and InfoChimps that allow streams to be augmented with third party data.</p>
<p style="text-align: center;"><img class="aligncenter" style="max-width: 800px;" title="DataSift Stream Edit Definition Page (FSDL)" src="http://www.leggetter.co.uk/wp-content/uploads/2011/01/FSDLEditor.png" alt="" width="602" height="326" /></p>
<p>Once a stream has been defined you can choose to build your feed. At present this takes up to 60 minutes and the dashboard will show you the progress of the build as well as a host of other features including a data preview, a live example of the data, a graph showing matched stream items (iterations per minute) and the history of the feed definition.</p>
<p><strong>Update:</strong> Nick Halstead (CEO of DataSift) has provided a clarification about the stream preview, the live stream feature and also when the stream can be used via the API:</p>
<blockquote><p>The stream ‘preview’ does not need to be built for anything to work, you can define + attach to API immediately (or just hit ‘live’ tab to see live results) – the preview was to allow stream owners to demonstrate what the stream would offer.</p>
</blockquote>
<p>You can see Nick&#8217;s full comment in <a  href="http://blog.programmableweb.com/2011/01/17/browse-build-and-share-real-time-streams-with-datasift/#comment-167921">the comments section</a> below.</p>
<p style="text-align: center;"><a  href="http://www.leggetter.co.uk/wp-content/uploads/2011/01/DataSiftDashBoard.png" class="thickbox no_icon" rel="gallery-5224" title="DataSift Stream Dashboard page"><img class="aligncenter" style="max-width: 800px;" title="DataSift Stream Dashboard page" src="http://www.leggetter.co.uk/wp-content/uploads/2011/01/DataSiftDashBoard.png" alt="" width="592" height="485" /></a></p>
<p>DataSift is encouraging its users to build feeds that are discoverable and accessible to other users, although it does offer a private feed option, by providing a number of options on the stream page including tagging, an area to encourage you to tell others about it on common social networks and a comments area to encourage users to interact and visits to the stream page. Recently added, most commented and top rated streams are also featured on the home section of the DataSift dashboard.</p>
<p style="text-align: center;"><img class="aligncenter" style="max-width: 800px;" title="DataSift Dashboard Homepage" src="http://blog.programmableweb.com/wp-content/DataSiftDashBoardHome.png" alt="" width="596" height="478" /></p>
<p>Once the stream has been built it <a  href="http://blog.datasift.com/2010/12/10/building-on-top-of-other-streams/">can also be used</a> in the definition of another user stream, and it in another stream and so on. DataSift really have exposed a lot of functionality and capabilities within their user dashboard and the <a  href="http://support.datasift.net/help/kb">documentation</a> that they provide is quite thorough and really helps a user get to grips with creating streams reasonably quickly.</p>
<p>All these rich features would be a waste unless there was a way of accessing the data and using it with an application. Unsurprisingly, the <a  href="http://www.programmableweb.com/api/datasift">DataSift API</a> delivers by providing three endpoints, including access to filtered data in a paged manner, HTTP Streaming and an RSS endpoint. It also recently introduced a <a  href="http://support.datasift.net/help/kb/streaming-api/websocket-streaming">WebSockets Streaming API</a>.</p>
<p>Although DataSift is still in Alpha it is offering what seems <a  title="DataSift pricing" href="http://datasift.net/pricing?hash=8ee1d6ba2359b33a8a0427723bfec28f&#038;id=2402">an affordable</a> and very impressive service which should excite any developer interested in real-time technologies and data. The company&#8217;s access to a wide range of data sources, engaging and intuitive user dashboard and range of API endpoints should mean that most developers will have their technology needs met.</p>
<div class="youtube-video" style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/X7aiKaCi8O8&amp;feature=youtube_gdata_player" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/X7aiKaCi8O8&amp;feature=youtube_gdata_player" wmode="transparent"></embed></object></div>
<p>A good starting point to learn about DataSift is an <a  href="http://www.youtube.com/watch?v=X7aiKaCi8O8">interview</a> by Robert Scoble with Nick Halstead, the CEO of DataSift (embedded above). The video is a little old but provides a good overview and an example of creating a stream. If you&#8217;ve any comments or questions about DataSift please leave a comment here. After that you should head over to <a  href="http://datasift.net">http://datasift.net</a> and register for the DataSift Alpha program.</p>
<p>This <a  href="http://blog.programmableweb.com/2011/01/17/browse-build-and-share-real-time-streams-with-datasift/">post</a> was originally written by me for <a  href="http://blog.programmableweb.com">ProgrammableWeb</a></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/03/31/who-curates-the-real-time-web.html' rel='bookmark' title='Who Curates the Real-Time Web?'>Who Curates the Real-Time Web?</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/17/browse-build-and-share-real-time-streams-with-datasift.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delivery as a Service and Data as a Service in 2011</title>
		<link>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html#comments</comments>
		<pubDate>Sat, 08 Jan 2011 13:32:30 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[http streaming]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PubSubHubbbub]]></category>
		<category><![CDATA[real-time client push]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time notifications]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[web browsers]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=4703</guid>
		<description><![CDATA[<p><a href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Delivery as a Service</a> and <a href="http://en.wikipedia.org/wiki/Data_as_a_Service">Data as a Service</a> (both DaaS) are definitely going to be big in 2011. Things really kicked off in 2010 with the emergence of companies focusing on real-time data delivery and mobile. We also started to see really exciting services focused on delivering real-time client push notifications to web [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a  href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Delivery as a Service</a> and <a  href="http://en.wikipedia.org/wiki/Data_as_a_Service">Data as a Service</a> (both <strong>DaaS</strong>) are definitely going to be big in 2011. Things really kicked off in 2010 with the emergence of companies focusing on real-time data delivery and mobile. We also started to see really exciting services focused on delivering real-time client push notifications to web browsers. I would put <a  href="http://kwwika.com">Kwwika</a> in both of these categories.</p>
<p>As 2011 continues we might to see some of these companies either partner up or start to tread on each others toes as they look at delivering data to alternative platforms and clients. Ultimately we are going to see services offering real-time communication of any type to any web enabled device using the web as the network.</p>
<p><small>The following lists aren&#8217;t 100% comprehensive and as time goes by I&#8217;ll probably create some pages on my site dedicated to this information.</small></p>
<p>Here&#8217;s the list of services I&#8217;m aware of and the type of service they offer and technology they use.</p>
<ul>
<li><a  href="http://beaconpush.com">BeaconPush</a> - [Web browser]</li>
<li>Google Channel API (<a  href="http://code.google.com/appengine/docs/python/channel/">Python</a>/<a  href="http://code.google.com/appengine/docs/java/channel/">Java</a>) &#8211; Part of <a  href="http://code.google.com/appengine/">Google App Engine</a> &#8211; [Web browser]</li>
<li><a  href="http://datasift.net">DataSift</a> &#8211; [Server to server, WebSockets, HTTP Streaming]</li>
<li><a  href="http://kwwika.com">Kwwika</a> &#8211; [Web browser, mobile, server to server, Desktop]</li>
<li><a  href="http://hookbox.org">Hookbox</a> &#8211; [Web browser]</li>
<li><a  href="http://notifo.com/">Notifo</a> &#8211; [Mobile]</li>
<li><a  href="http://www.notify.io/">Notify.io</a> &#8211; [Desktop, IM, Email]</li>
<li><a  href="http://notify.me/">Notify.me</a> &#8211; [Mobile, Desktop, IM, Email, XMPP]</li>
<li><a  href="http://pubnub.com">PubNub</a> &#8211; [Web browser, mobile, server to server, Desktop]</li>
<li><a  href="http://pusherapp.com">Pusher</a> &#8211; [Web browser]</li>
<li><a  href="http://superfeedr.com">Superfeedr</a> &#8211; [Server to server, PubSubHubbub, WebSockets, HTTP Streaming]</li>
<li><a  href="http://www.twilio.com/">Twilio</a> &#8211; [Mobile]</li>
<li><a  href="http://urbanairship.com/">Urban Airship</a> &#8211; [Moblie]</li>
</ul>
<p>A quick not of the key technologies behind these types of service:</p>
<ul>
<li><a  href="http://en.wikipedia.org/w/index.php?title=Comet_(programming)&#038;oldid=212288242">Comet</a> (<strong>Note:</strong> this version by <a  href="http://en.wikipedia.org/wiki/User:Jacobolus">Jacobolus</a> (Jacob Rus) is by far the best description. The current wikipedia description, IMHO, is inaccurate and incomplete and was ruined by <a  href="http://en.wikipedia.org/wiki/User:Damiens.rf">Damiens.rf</a>. Damiens.rf even put <a  href="http://en.wikipedia.org/wiki/User:Gregwilkins">Greg Wilkins</a>, who contributes to <a  href="http://jetty.codehaus.org/jetty/">Jetty</a> and <a  href="http://cometd.org/">Cometd</a>, off contributing to Wikipedia all together.)</li>
<li><a  href="http://growl.info/">Growl</a></li>
<li><a  href="http://www.quora.com/HTTP-Streaming">HTTP Streaming</a></li>
<li><a  href="http://code.google.com/p/pubsubhubbub/">PubSubHubbub</a></li>
<li><a  href="http://xmpp.org/">XMPP</a></li>
<li><a  href="http://www.webhooks.org/">Webhooks</a></li>
<li><a  href="http://en.wikipedia.org/wiki/WebSockets">WebSockets</a></li>
</ul>
<p><small><strong>Note:</strong> I originally wrote this as a comment over on <a  href="http://dashes.com/anil/2010/12/delivery-as-a-service.html">Anil Dash&#8217;s post on Delivery as a Service</a> but I thought it was good content so it deserved a post of its own.</small></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/20/the-real-time-web-techmeetup-aberdeen-19012011.html' rel='bookmark' title='The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011'>The Real-Time Web: TechMeetup Aberdeen &#8211; 19/01/2011</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html' rel='bookmark' title='Why client APIs are an important part of any real-time service'>Why client APIs are an important part of any real-time service</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010</title>
		<link>http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html</link>
		<comments>http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html#comments</comments>
		<pubDate>Fri, 07 Jan 2011 02:20:26 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[Gary Vaynerchuk]]></category>
		<category><![CDATA[ian sanders]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[Opta Sports]]></category>
		<category><![CDATA[passion]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[real-time web evangelism]]></category>
		<category><![CDATA[Retrospective]]></category>
		<category><![CDATA[technology evangelism]]></category>
		<category><![CDATA[work/life integration]]></category>
		<category><![CDATA[Working from home]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=4560</guid>
		<description><![CDATA[<p>A lot of people have written up their thoughts on 2010. Whether the thoughts are personal or a look back at specific things such as real-time web products the purpose is the same; to reflect on what has happened during the year, an opportunity to realise what&#8217;s been achieved, what hasn&#8217;t, what could&#8217;ve been and [...]
Related posts:<ol>
<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='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/2009/08/05/book-review-juggle-rethink-work-reclaim-your-life.html' rel='bookmark' title='Book review: Juggle! Rethink work, reclaim your life'>Book review: Juggle! Rethink work, reclaim your life</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/17/kwwika-powered-real-time-opta-sports-cricket-widget.html' rel='bookmark' title='Kwwika Powered Real-Time Opta Sports Cricket Widget'>Kwwika Powered Real-Time Opta Sports Cricket Widget</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A lot of people have written up their thoughts on 2010. Whether the thoughts are personal or a look back at specific things such as real-time web products the purpose is the same; to reflect on what has happened during the year, an opportunity to realise what&#8217;s been achieved, what hasn&#8217;t, what could&#8217;ve been and how things can be learnt and bettered.</p>
<p>So, six days into 2011 I&#8217;m writing this blog post. It&#8217;s purpose is all of the above but it will hopefully also act as a reminder to me about why I made some decisions. Why I&#8217;m here, and not there. What it is that drives me and what I want. And how my decisions were made after consulting and considering others. I also hope that it will explain a bit about work/life integration by demonstrating the problems that I&#8217;ve faced and that things can be achieved (ongoing) and opportunities created by following what you are passionate about (I&#8217;m midway through writing and reviewing this and there are definitely ups and downs).</p>
<p>The blog post is a personal post but since work is a big part of what I do, and I&#8217;ve made a decision to accept that rather than fight it (work life integration v work life balance), it&#8217;s also relevant to what I do to make a living. If you are truly passionate about it can you really drop it at 18:00? Can I?</p>
<h2>January: The Work/Life Integration decision</h2>
<p>I&#8217;ve been very aware that the standard 9 to 6 doesn&#8217;t suit me. Heck, it probably doesn&#8217;t suit a lot of people and most definitely doesn&#8217;t mean you work when you are most likely to do your best work. How many developers work in to the night because they are &#8220;in the zone&#8221;? If you are in the office in the middle of London and your partner is waiting for you to get home from work it&#8217;s highly unlikely that you are going to hang around until 2am. Especially when it takes over an hour to get home and the trains stop before midnight.</p>
<p>How many of us enjoy parts of our job but not all of it? How many only like a small portion or none at all, we just need it to pay the bills? I&#8217;ve had a nagging feeling about this for quite some time. In quite few of my jobs I&#8217;ve absolutely loved the work but disliked some of it. In others It&#8217;s just got to the point where the dislike overpowered the enjoyable moments for far too long so I left. The thing is I would go home and then start thinking, solving problems, generating ideas and writing code again. I&#8217;d leave my job where I&#8217;d be writing code to go home and write code! I couldn&#8217;t help but think there must be a better way.</p>
<p>Then in mid 2009 I read a couple of books by <a  href="http://www.iansanders.com/">Ian Sanders</a> (<a  href="http://www.amazon.co.uk/gp/product/1841127981?ie=UTF8&#038;tag=philleggsoftc-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1841127981">LEAP!: Ditch Your Job, Start Your Own Business &amp; Set Yourself Free</a> and <a  href="http://www.amazon.co.uk/gp/product/1906465371?ie=UTF8&#038;tag=philleggsoftc-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1906465371">Juggle! Rethink Work, Reclaim your Life</a>). Juggle! in particular made me realise that I was already juggling a 9 to 6 job along with a few personal projects, some general dev consultancy as well as helping develop, and owning shares in, an e-commerce website. It made me think about what it was I was passionate about, what I enjoyed in my current job and what I would ultimately like to do and how I would like to achieve it.</p>
<p>Then in December 2009 I picked up a copy of Gary Vaynerchuk&#8217;s <a  href="http://www.amazon.co.uk/gp/product/0061914177?ie=UTF8&#038;tag=philleggsoftc-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0061914177">Crush It! Why Now is the Time to Cash in on your passion</a> as part of going to <a  href="http://www.leggetter.co.uk/2009/12/09/how-real-time-does-real-time-have-to-be.html">an event</a>. There were a number of reasons why I liked this book and why it hit home. It wasn&#8217;t the title nor was it that Gary signed it &#8220;It&#8217;s real-time time!&#8221; &#8211; although that helped. Firstly it said to me that if you are passionate about something and, very importantly, good at it then you can make a living from it. From this point on it was all about building up the courage and belief that I could make something work. That my passion and expertise for the Real-Time Web could really help me achieve true work/life integration. That what I would do when I went home after my job is what I actually did as my job!</p>
<p>My plan was to try and build a reputation as a &#8220;Real-Time Web Software and Technology Consultant&#8221; (Evangelist) by blogging about real-time web technology, building cool real-time demos, playing with real-time APIs such as the Twitter Streaming API and generally enjoying myself whilst generating loads of really interesting, cool and useful content for others. The belief is that by doing this, and building your &#8220;personal brand&#8221; (sorry to anybody who doesn&#8217;t like this term) that opportunities will present themself and you will also be able to react to opportunties that you see. And these opportunities will be related to the thing that you are passionate about. In my case this is real-time web software and technology and social media (hmmm, <a  href="http://garyvaynerchuk.com/post/894991073">The Word Media is wrong</a>). Along with the work I love I was aware that I would have to take on other work that would help pay the bills but hopefully the amount of this type of work would decrease as I became successful.</p>
<p>Just to be very clear: <strong>work/life integration is different from work/life balance</strong>. Work/life balance tends to be associated with having a defined work time, keeping your weekends free and not thinking about work when you walk out of the office or turn off your computer. I&#8217;m not looking for that. I love to work as long as I&#8217;m working on the things I love.</p>
<p>After discussing things with my family and friends I finally made the decision to choose work/life integration. This decision meant leaving <a  href="http://www.caplin.com">Caplin Systems</a>, for the second time, after they had taken me back just over two years earlier. It also meant moving back up to Scotland to be closer to both mine and Jo, my girlfriends, family. Since we were getting married in May 2010 and had hopes to start a family this was also a big factor in the decision.</p>
<p>So, it was time to have a chat with my bosses.</p>
<h2>February: An unexpected opportunity</h2>
<p>I spoke to my bosses and explained what I was planning to do and why. I also started discussing the possibilities of still being able to use <a  title="Awesome real-time web technology" href="http://www.caplin.com/caplin_technology.php">Caplin Systems excellent technology</a> of which I had a very good understanding. This is where things got interesting. I remember in one conversation begin told &#8220;if you are going to do that [use real-time web technology] we&#8217;d like to help you do it properly and support you&#8221;. This was fantastic for a number of reasons. Firstly I could still use the technology, secondly it meant I had made a positive impact and was reasonably highly thought of, thirdly I would potentially have some kind of salary and finally it meant I had potentially created an opportunity to work on something I was truly passionate about. I had almost created my own role, exactly the sort of thing Ian Sanders talks about in <a  href="http://www.amazon.co.uk/gp/product/1906465371?ie=UTF8&#038;tag=philleggsoftc-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1906465371">Juggle</a>!</p>
<p>After a number of meetings, a presentation and quite a bit of research we came up with the idea of putting Caplin System&#8217;s software &#8220;in the cloud&#8221; and offering it as a service for others to use (it took months to eventually come up with the name &#8220;Kwwika&#8221;). This wasn&#8217;t the first time that &#8220;Caplin in the cloud&#8221; has been discussed but was an interesting way of taking the idea forward. During what would have been my notice period at Caplin I finished off some core work, handed over my development line manager duties and started to investigate putting &#8220;Caplin in the cloud&#8221;. With a very small amount of effort we could clearly see that <a  href="http://www.caplin.com/caplin_liberator.php">Liberator</a> (Caplin&#8217;s real-time streaming server) performed excellently running on only a small Amazon Linux instance. We also tested clustering of instances, sharing data, publishing using what would previously be classed as our client APIs and it all worked very well. The unnamed project was given the go-ahead.</p>
<p>I got in touch with Ian and we met up for a coffee.</p>
<div class="youtube-video" style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/oDremUzbQ6I&amp;feature=youtube_gdata_player" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/oDremUzbQ6I&amp;feature=youtube_gdata_player" wmode="transparent"></embed></object></div>
<h2><strong>March &amp; April: Moving back to Scotland and getting started with Kwwika</strong></h2>
<p>In March 2010 we moved back to Scotland where I would be working from home in a flat in Broughty Ferry, near Dundee.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-6-4560">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-49" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/moving-to-scotland/emptyhouse.jpg" title=" " class="thickbox no_icon" rel="set_6">
								<img title="emptyhouse" alt="emptyhouse" src="http://www.leggetter.co.uk/wp-content/gallery/moving-to-scotland/thumbs/thumbs_emptyhouse.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-50" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/moving-to-scotland/welcometoscotland.jpg" title=" " class="thickbox no_icon" rel="set_6">
								<img title="welcometoscotland" alt="welcometoscotland" src="http://www.leggetter.co.uk/wp-content/gallery/moving-to-scotland/thumbs/thumbs_welcometoscotland.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p>The time between March and May is unsurprisingly a bit of a blur. Work on Kwwika continued and lots was achieved including:</p>
<ul>
<li>A <a  href="http://kwwika.com">Kwwika website</a></li>
<li>A <a  href="http://blog.kwwika.com">Kwwika blog</a></li>
<li>A <a  href="http://wiki.kwwika.com/api/javascript">Kwwika JavaScript API</a></li>
<li>A <a  href="http://wiki.kwwika.com/api/net">Kwwika .NET API</a></li>
<li>A <a  href="http://wiki.kwwika.com/api/silverlight">Kwwika Silverlight API</a></li>
<li>Quite a few <a  href="http://www.youtube.com/results?search_query=kwwika&#038;aq=f">videos showing off Kwwika</a></li>
<li>An impressive <a  href="http://blog.kwwika.com/leadersdebate-demo-retrospective">Kwwika real-time demo for the UK Election leaders debate</a></li>
</ul>
<p>But most importantly for Kwwika it was becoming very clear that there was a market for real-time push services with the general interest that had been shown and the emergence of quite a few possible competitors including <a  href="http://beaconpush.com">Beacon Push</a>, <a  href="http://pusherapp.com">Pusher</a> and <a  href="http://www.frozenmountain.com">Web Sync on-demand</a>. Although Kwwika is potentially a lot more than this it was a really encouraging sign.</p>
<p>Since all that had been done it&#8217;s probably clear that the work/life integration had probably been very dominated by work. This had always been expected and Jo and I had accepted this because was a fantastic opportunity for me and I really felt I needed to put in as much time as possible to prove Kwwika as an idea. I&#8217;m not complaining. A lot of the work I was doing, building new APIs, building a brand for Kwwika, searching for potential uses for the technology and interacting with people who were interested in this sort of technology is what I wanted to do. It was a bit unfair on Jo though.</p>
<h2>May: Let&#8217;s get Married!</h2>
<p>Almost exactly one year after I proposed to Jo we got married. Because my focus was mainly on work Jo had done almost everything to organise the wedding. You&#8217;ll be pleased to hear that I didn&#8217;t check my email on my wedding day but unfortunately up until the day before and every day after I would be checking my email and replying to potential clients as well as ensuring the Kwwika service and demos were running as expected. Again, I didn&#8217;t mind too much. The work was great but I was very aware my priorities were a bit off centre.</p>
<p>On the wedding day itself I was completely emmersed in the occasion and loved everything about the day from the ceremony to spending time with my beautiful wife, my friends and family. A <strong>big </strong>thanks to Jo&#8217;s parents who hosted the event in their fantastic home, my new brothers and sisters in law, my new niece and nephew, my Mum, Dad and Granny for all their support and a <strong>MASSIVE </strong>thanks to Jo for saying &#8220;Yes&#8221;.</p>
<div style="text-align: center;"><img style="max-width: 800px;" src="http://www.leggetter.co.uk/wp-content/uploads/2011/01/Married.jpg" alt="" /></div>
<p>Unfortunately on every other day I was in a mindset where I was always thinking about Kwwika, did I have an email I should read and reply to, was the service running okay, were all the demo applications up and running. I don&#8217;t regret anything up until this point but I do regret not taking more time off  to spend with my wife and try to relax a bit more around our wedding day.  Jumping ahead a little, this is also something that I regret about Christmas and New Year &#8211; although I wasn&#8217;t nearly as bad I was always aware that I wasn&#8217;t 100% relaxed.</p>
<p>In 2011 this will have to change: my mindset, not the married part!</p>
<p>At the start of May I also delivered a <a  href="http://wiki.kwwika.com/the-real-time-web-workshop">Real-Time Web Workshop</a> at the SPA 2010 conference with <a  href="http://blog.caplin.com/author/adamicaplincom/">Adam Iley</a> from Caplin Systems. It went fantastically and we got some excellent feedback putting our session 3rd for feedback scores in the entire conference. We really must do this workshop again.</p>
<h2>June, July and the World Cup</h2>
<p>The World Cup was always going to be a big part of the year. Since <a  href="http://en.wikipedia.org/wiki/John_Barnes_%28footballer%29">John Barnes</a> retired (some might say I was obsessed) my interest in league football has waned and my real focus has been England international football. As ever my hopes were high and I was massively let down by the England team along with the rest of a hopeful nation (yes, I&#8217;m an Englishman living in Scotland).</p>
<p>Just prior to the World Cup I had an idea for a <a  href="http://blog.kwwika.com/kwwika-world-cup-2010-real-time-push-web-app">competition for Kwwika</a>. I&#8217;d write <a  href="https://github.com/Kwwika/kwwika-tweet-streamer">an app</a> that recieved all the World Cup Tweets from the Twitter Streaming API and push them through Kwwika. I&#8217;d then ask developers to do their best to subscribe to this data in Kwwika and use it to build a cool real-time web application and the best entry would win an Apple iPad (I&#8217;d heard they were all the rage). The competition started off a little slow but we eventually got a number of entries, some great publicity, and we decided to award two developers, <a  href="http://aaronbassett.com/">Aaron Bassett</a> and <a  href="http://gregdoesit.com/">Gergely Orosz</a>, an iPad. You can read the <a  href="http://blog.kwwika.com/kwwika-world-cup-2010-real-time-push-web-app-1">winners announcment blog post here</a>.</p>
<p>Other Kwwika achievements during this time were:</p>
<ul>
<li>Creating a <a  href="http://plugins.jquery.com/project/jQueryRealTimePushKwwikaPlugin">Kwwika real-time push plugin</a></li>
<li>Getting <a  href="http://optasports.com/">Opta Sports</a> to provide some <a  href="http://wiki.kwwika.com/competitions/world-cup-2010-real-time-push-web-app-competition#TOC-OptaSports-Data">real-time World Cup data</a> for the Kwwika World Cup competition</li>
<li>A bit of press coverage for Kwwika <a  href="http://startupcafe.co.uk/2010/07/06/want-your-web-kwwika/">StartupCafe</a> and <a  href="http://blog.kwwika.com/the-death-of-f5-ah-i-get-it">Innovation Focus Scotland</a> (actual article now offline)</li>
</ul>
<p>A big positive in June was going to Poland for Keith and Ewa&#8217;s wedding. This was probably the first time that I felt work/life integration really worked. I got up in the morning and did some work and then spent a lot of the time with friends and enjoying <a  href="http://en.wikipedia.org/wiki/Krak%C3%B3w">Krakow</a>. I was on holiday but I didn&#8217;t mind doing a bit of work.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-7-4560">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-52" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/keithewawedding2.jpg" title=" " class="thickbox no_icon" rel="set_7">
								<img title="keithewawedding2" alt="keithewawedding2" src="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/thumbs/thumbs_keithewawedding2.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-53" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/keithewawedding3.jpg" title=" " class="thickbox no_icon" rel="set_7">
								<img title="keithewawedding3" alt="keithewawedding3" src="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/thumbs/thumbs_keithewawedding3.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-71" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/keithewawedding4.jpg" title=" " class="thickbox no_icon" rel="set_7">
								<img title="keithewawedding4" alt="keithewawedding4" src="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/thumbs/thumbs_keithewawedding4.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-51" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/keithewawedding.jpg" title=" " class="thickbox no_icon" rel="set_7">
								<img title="keithewawedding" alt="keithewawedding" src="http://www.leggetter.co.uk/wp-content/gallery/keithewawedding/thumbs/thumbs_keithewawedding.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<h2>Dexter</h2>
<p>Jo and I have always loved the thought of having a dog and it wasn&#8217;t until I started working from home that this was possible. We didn&#8217;t feel it would be fair to work full time and leave a dog home alone. Jo was still looking for work after the move and the wedding so it gave us the opportunity for her to be able to look after a dog for a while almost fulltime &#8211; Jo was absolutely knackered every single day.</p>
<p>On June 29th 2010 we picked up Dexter. Anybody that <a  href="http://twitter.com/#%21/leggetter">follows me on Twitter</a> will know about <a  href="http://dexterdog.com/">Dexter</a> (<a  href="http://twitter.com/#%21/Dexify">@Dexify on Twitter</a> and <a  href="http://www.facebook.com/pages/Dexter-Dog/139884982694736">Dexter&#8217;s facebook page</a>). Dexter most definitely deserves a section all to himself.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-8-4560">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-54" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter1.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter1" alt="dexter1" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter1.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-55" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter10.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter10" alt="dexter10" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter10.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-56" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter11.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter11" alt="dexter11" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter11.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-57" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter2.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter2" alt="dexter2" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter2.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-58" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter3.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter3" alt="dexter3" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter3.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-59" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter4.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter4" alt="dexter4" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter4.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-60" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter5.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter5" alt="dexter5" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter5.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-61" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter6.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter6" alt="dexter6" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter6.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-62" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter7.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter7" alt="dexter7" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter7.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-63" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter8.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter8" alt="dexter8" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter8.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-64" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/dexter/dexter9.jpg" title=" " class="thickbox no_icon" rel="set_8">
								<img title="dexter9" alt="dexter9" src="http://www.leggetter.co.uk/wp-content/gallery/dexter/thumbs/thumbs_dexter9.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p>To say that Dexter was a handful is an understatement. I can&#8217;t say things have got much easier with him although he does&#8217;t wee all over the place he still requires a lot of attention but he does bring a lot of joy into our lives and guarantees a good few laughs every single day.</p>
<h2>August &#8211; November: Continued focus on work</h2>
<p>Things were strange between August and mid-November. I spent the majority of the time working but had very little visible to show for it. Under the hood of Kwwika we made really big strides with the infrastructure and we also created an admin web application that allowed us to set up users, API Keys, Groups, Topics and Permissions (the need for all this stuff will become clear this year). I also stopped blogging quite so much about Kwwika because it had become very clear that the lack of a user dashboard was a massive barrier to entry for users so my efforts to drive beta users to sign up wasn&#8217;t leading to many real opportunities.</p>
<p>The only real visible things during this time were:</p>
<ul>
<li>Built a <a  href="http://blog.kwwika.com/kwwika-superfeedr-real-time-demo-available">Kwwika-Superfeedr demo</a> showing how to stream real-time updates from Superfeedr into a web browser using Kwwika with the <a  href="https://github.com/leggetter/ASP.NET-MVC-PubSubHubbub-Subscriber/tree/Kwwika-Superfeedr-Demo">code available in GitHub</a>. Unfortunately I&#8217;ve taken the demo down as we&#8217;ve ran out of Superfeedr credits but the video that&#8217;s embedded in the blog post shows the application in action.</li>
<li><a  href="http://aaronbassett.com">Aaron Bassett</a> using Kwwika on <a  href="http://the.meet140.com/">The Meet 140</a></li>
</ul>
<p>The work/life integration focus again was mainly on work with very few social activities going on and a lot of time spent sitting in front of a computer. The main problem here is that the work had moved away from interacting with others, away from evangelising about technology, away from adding value to APIs and over to what I&#8217;d class as bog stardard web development. I was struggling.</p>
<p>I did have a fortnightly trip down to London and a couple of trips out to see <a  href="http://www.insitebright.com">insitebright</a> and also <a  href="http://www.matadorgroup.co.uk/">Matador Digital</a> but other than that I spent a lot of time working home alone.</p>
<p>On top of the Kwwika work I also started doing some freelance writing for <a  href="http://www.programmableweb.com/profile/leggetter">Programmable Web</a> and did a small consultancy project with insitebright for a large oil company. This actually provided a nice focus away from Kwwika so when I came back to it I was fresh and I was much more willing and able to tackle the bits I was less keen to.</p>
<p>In August we went to <a  href="http://www.gigha.org.uk/">Gigha</a> which is a small Isle off the west coast of Scotland. The weather was fantastic. It was the first time that I felt work really getting to me and I suffered my first ever migraine. That wasn&#8217;t fun and acted as a sign that I was working way too hard.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-9-4560">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-65" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha1.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha1" alt="gigha1" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha1.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-66" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha2.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha2" alt="gigha2" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha2.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-67" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha3.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha3" alt="gigha3" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha3.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-68" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha4.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha4" alt="gigha4" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha4.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-69" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha5.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha5" alt="gigha5" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha5.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-70" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a  href="http://www.leggetter.co.uk/wp-content/gallery/gigha/gigha6.jpg" title=" " class="thickbox no_icon" rel="set_9">
								<img title="gigha6" alt="gigha6" src="http://www.leggetter.co.uk/wp-content/gallery/gigha/thumbs/thumbs_gigha6.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<p>Jo started work in September and although I had Dexter to keep me company I found working home alone very lonely. This is something that I&#8217;m still trying to find a solution for but think that social media can be part of the answer along with increased transparency of Kwwika. I&#8217;m also very aware that if Kwwika is a success it will mean a lot more client interaction and technology evangelism which I&#8217;m really looking forward to.</p>
<p>In October my very good friend <a  href="http://twitter.com/#%21/Mark_Nicoll">Mark</a> married Lynne. I&#8217;ve been friends with Mark ever since I moved to Glenrothes in 1993. It was a fantastic day and the couple and the kids were really happy. Unfortunately I don&#8217;t have any photos. I do have a very large and empty bottle of Jack Daniels though.</p>
<h2>December: The culmination of 9 months effort and relax (almost &amp; temporarily)</h2>
<p>When I first started Kwwika I got in touch with <a  href="http://www.optasports.com">Opta Sports</a>. One of the reasons I decided to leave Caplin (although, as you know, I haven&#8217;t) was their financial focus. I would have preferred to see the technology applied to something I have more interest in and I&#8217;m interested in sport so this was a great first target. We started work on the <a  href="http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket">Real-Time Opta Sports Cricket widget &#8211; powered by Kwwika</a> in November and it was ready during December. I&#8217;m really excited to see Opta Sport&#8217;s data streaming through Kwwika and I&#8217;m really hopefully that cricket data is just the start. I was particularly proud when Opta put the Kwwika logo on their homepage. And because Opta then released the <a  href="http://www.calameo.com/read/000519587fb375ea2c4a8">Opta Annual 2010</a> we are also in the brochure. An awesome feeling!</p>
<p><a  href="http://www.leggetter.co.uk/wp-content/uploads/2011/01/KwwikaInOptaBrochure.png" class="thickbox no_icon" rel="gallery-4560" title=""><img style="max-width: 800px;" src="http://www.leggetter.co.uk/wp-content/uploads/2011/01/KwwikaInOptaBrochure.png" alt="" width="631" height="534" /></a></p>
<p>The final part of the year was spent preparing to build the Kwwika User Dashboard. We&#8217;ve outsourced some of the development to insitebright which means the work I&#8217;ve got to do is design the UX and plumb the delivered HTML, CSS, JS and images into the server-side code (it&#8217;ll probably be a bit more complicated than that but you get the idea). Again, this certainly isn&#8217;t the sort of thing that I really want to be doing but I absolutely understand that it&#8217;s essential to be able to deliver Kwwika as a service and break down the barrier to entry for users. As soon as I&#8217;ve finished this post I&#8217;ll be writing a post on the <a  href="http://blog.kwwika.com">Kwwika blog</a> about that.</p>
<p>I managed to relax a bit in the run up to Christmas and probably over compensated by trying to relax too much (i.e. just sat and watched TV). I now know I&#8217;d have been better doing something a bit more active as I feel I&#8217;ve done very little over the festive period and that just sitting still in front of terrible TV isn&#8217;t relaxing at all. I&#8217;m actually more relaxed now. All this said I&#8217;ve always had the nagging feeling that I&#8217;ve a lot to do and prove with Kwwika which hasn&#8217;t helped the attempts to relax. One thing that did help me relax was that after <a  href="http://twitpic.com/2cx1dt">declaring that I wanted one</a> I finally got a &#8220;What are you looking at Dicknose?&#8221; t-shirt on Christmas day. Thanks Jo!</p>
<h2>Start, Stop, Continue: The retrospective</h2>
<p>Since this is a retrospective I have to state what I now think I really should be doing (Start), what didn&#8217;t work and I should Stop doing and what I think worked and I should Continue doing.</p>
<p><span style="text-decoration: underline;">Start:</span></p>
<ul>
<li><strong>Spending more time with family and friends and generally socialising</strong>. I&#8217;ve had my first real experience of trying work/life integration and I need to make sure life gets a bit more of a look-in.</li>
<li><strong>Increase social media use</strong>: During lonely spells try and use social media to ensure I&#8217;m getting more interation. In Particular I&#8217;m really enjoying using <a  href="http://www.quora.com/Phil-Leggetter">Quora</a> at the moment. Some of my friends already ask me why I share so much online and already think I use social media far too much. It&#8217;s a  good question really especially when my tweets about Dexter probably  don&#8217;t mix too well with my real-time web tweets. My answer is I come as a package. I&#8217;m going to be true to myself and whilst I do apply some thought to what I publish about myself and to the content of my publishing I&#8217;m going to continue this.</li>
<li><strong>Being more transparent</strong>: My friends would again point me to the last bullet point but in this case I mean with Kwwika in order to get feedback as early as possible and to try and get others to help me when I&#8217;m struggling to get feedback from elsewhere. My next Kwwika blog post is a move in this direction.</li>
<li><strong>Reading more</strong>: When I worked at Caplin I found I had time to read more. Reading stimulates the mind and really helps ideas grow. Although I&#8217;ve had moments like this over the past 9 months I feel my general absolute focus on Kwwika and the time it&#8217;s taken up has actually resulted in a bit of a stagnation of ideas. I must find time to read books and more blog posts.</li>
<li><strong>Attending more tech and entrepreneur events</strong>: When I moved to Scotland I had planned to go to a lot of tech events in order to meet people, network and to generally get out and socialise with like-minded geeks. I&#8217;ve been to what seems like quite a few events but probably not too many given that this covers 9 months: 1 <a  href="http://scottishleancircle.uses.hn/">Scottish Lean Circle</a>, 1 Edinburgh <a  href="http://techmeetup.co.uk/">TechMeetup</a>, 1 <a  href="https://sites.google.com/site/scottishlinkeddataswig/">Linked Data</a>, 1 <a  href="http://developerdeveloperdeveloper.com/nosql1/">DeveloperDeveloperDeveloper NoSQL day</a>, the <a  href="http://www.spaconference.org/spa2010/">SPA 2010 conference</a>, 1 <a  href="http://www.scotlandis.com/events/event-details/cloudcomputing">Making the Most of Cloud event</a>, 1 <a  href="http://www.meetup.com/The-Edinburgh-Web-Design-And-Development-Meetup-Group/">Edinburgh Web Design and Development Meetup</a> and 1 <a  href="http://www.meetup.com/Edinburgh-OpenCoffee-Club/">Edinburgh OpenCoffee Club morning</a>.</li>
<li><strong>Planning ahead a bit more</strong>: I&#8217;m not talking about the five year plan. I just mean general planning for the month ahead. I&#8217;ve got a roadmap for Kwwika, and <a  href="http://leggetter.posterous.com/working-home-alone-tips-tip-1">plan each day</a> either the night before or first thing in the morning, so I also need a roadmap for social and life activity. This will better help me integrate my work and my life.</li>
<li><strong>Exercise again</strong>: Between mid-2009 and May 2010 I lost 12 kg for my wedding. I did it by using our <a  href="http://waterrower.com/">Water Rower</a> and by running. I&#8217;ve put at least half of that back on. This time I&#8217;ve got a running companion &#8211; Dexter!</li>
</ul>
<p><span style="text-decoration: underline;">Continue:</span></p>
<ul>
<li><strong>My customer focus</strong>: I&#8217;ve spent a lot of time replying to emails for beta registration over the past 9 months. I want to make sure that each registration is treated as an individual to make sure that they get the most out of Kwwika. I strongly believe in providing exceptional customer service and that ultimately it will make a massive difference. <a  href="http://garyvaynerchuk.com/post/247583674/small-town-rules">Small town rules</a>! And I really do care.</li>
<li><strong>Working hard</strong>: As well of moments of working exceptionally hard I&#8217;ve experienced moments of what can only be described as burn-out. A week or two where I can&#8217;t seem to apply the effort required to perform some of the tasks that, in and ideal world, I wouldn&#8217;t have to do. I want to continue to work hard but I want to make sure that I do it consitently and the only way to do that is to rein myself in sometimes.</li>
<li><strong>Finding people and companies to partner with</strong>: I&#8217;ve established a good relationship with Opta Sports, insitebright and Matador Digital as well as a few individual developers. It&#8217;s important that I continue to do that both for Kwwika my own personal development.</li>
<li><strong>Writing two blog posts a week for <a  href="http://www.programmableweb.com">Programmable Web</a></strong>: I&#8217;m really enjoying writing <a  href="http://www.programmableweb.com/profile/leggetter">these blog posts</a>. They get a big audience, it&#8217;s good for my &#8220;personal brand&#8221; (there we go again) and it&#8217;s a great way of discovering new technologies and also trying them out.</li>
<li><strong>To be myself</strong>: It&#8217;s all part of transparency and customer focus. I&#8217;m not the sort of person to play games and wheel n&#8217; deal. Maybe this is a problem in business but I&#8217;m going to do my best to make sure I don&#8217;t give in to any kind of business rules if it goes against how I feel, who I am and what I believe in. I want people to believe and trust in me because I&#8217;ve proven myself to be a nice guy, fair, knowledgeable and unbiased and therefore the when I say or write something it has some weight and proven foundation. That way they will believe that when I say Kwwika is a great product they will give it a go and see that it is.</li>
</ul>
<p><span style="text-decoration: underline;">Stop:</span></p>
<ul>
<li><strong>Spending so much time in front of a computer</strong>: It causes mind stagnation. I remember when I first began working at Caplin a <a  href="http://pipl.com/directory/people/Peter/Belesis">senior developer</a> (only link I could find) telling me to take breaks. He smoked and would disappear for a cigarette but quite frequently that break would lead to a fresh way of looking at a problem. I need to take this idea and apply it to my work in general (no, not take up smoking). The family, friends and social activities are all part of a package that can actually help deliver my work. And the other way around, if I&#8217;m working on something I enjoy I will be happier with my friends and family. But here I am sitting in front of the computer at 2am &#8211; yeah, but I&#8217;m &#8220;in the zone&#8221;!</li>
<li><strong>Worrying about work when I have dedicated some time to life</strong>: Speaks for itself really. I need to have the confidence that things won&#8217;t fall over when I&#8217;m not there. I actually know things are stable but I still worry. Maybe I just need a few additional processes in place. Actually I know I need and want somebody to work with me fulltime on Kwwika.</li>
<li><strong>Doing things that I&#8217;m either not good at or am simply not interested in</strong>: I want to move away from what I&#8217;ve already called bog-standard web<br />
development. I&#8217;m not a website builder. I don&#8217;t have the passion for it<br />
and I never will. There are parts of building a website that are interesting but once the problems have been solved I lose interest. This is a bit of an ideal world scenario. But it&#8217;s most definitely a goal. As already stated I love evangelising about real-time web technology, I love interacting with clients, sharing knowledge, helping and caring. I also enjoy concieving ideas and helping to see them realised. I love data, considering it&#8217;s structure, working with APIs and developing new features.</li>
</ul>
<h2>Conclusion &#8211; finally</h2>
<p>So, what is it I really want?</p>
<p>Family will always come first but after that I want work/life integration and to feel that work is benefiting from life and life from work. I want to spend time with my family and friends. I want to be working on the things that I&#8217;m passionate about and helping others that feel the same way and helping those that don&#8217;t understand see the light (technology evangelism). I want to work with others whether it&#8217;s colleagues, partners or clients. I want to concerntrate on the things that I&#8217;m good at and that I really enjoy: That&#8217;s real-time web software and technology evanglism, concieving and realising how ideas can be achieved using this technology, deliverying customer service using social media by giving a damn (caring), sharing knowledge through blogging (and maybe a bit of vlogging), events and social media and working with others to create exciting products, services and solutions. I want to be happy and I believe this will &#8220;make it so&#8221;.</p>
<p>Related posts:<ol>
<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='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/2009/08/05/book-review-juggle-rethink-work-reclaim-your-life.html' rel='bookmark' title='Book review: Juggle! Rethink work, reclaim your life'>Book review: Juggle! Rethink work, reclaim your life</a></li>
<li><a href='http://www.leggetter.co.uk/2010/12/17/kwwika-powered-real-time-opta-sports-cricket-widget.html' rel='bookmark' title='Kwwika Powered Real-Time Opta Sports Cricket Widget'>Kwwika Powered Real-Time Opta Sports Cricket Widget</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why client APIs are an important part of any real-time service</title>
		<link>http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html</link>
		<comments>http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html#comments</comments>
		<pubDate>Tue, 21 Dec 2010 17:53:20 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Curation]]></category>
		<category><![CDATA[Data Filtering]]></category>
		<category><![CDATA[DataSift]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time push]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[Superfeedr]]></category>

		<guid isPermaLink="false">http://www.leggetter.co.uk/?p=3863</guid>
		<description><![CDATA[<p>I&#8217;ve just been involved in a twitter conversation with <a href="http://twitter.com/#%21/nickhalstead">Nick Halstead</a> of <a href="http://datasift.net">DataSift</a> on Twitter. This all started when I <a href="http://twitter.com/#%21/leggetter/status/17233038429655041">tweeted</a> that I thought <a href="http://kwwika.com">Kwwika</a> would be a great way of distributing data from DataSift to any web-enabled device.</p> <p>The conversation continued:</p> <p></p> <p>The main thing here for me is Nick&#8217;s [...]
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='Kwwika-Superfeedr real-time demo available'>Kwwika-Superfeedr real-time demo available</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just been involved in a twitter conversation with <a  href="http://twitter.com/#%21/nickhalstead">Nick Halstead</a> of <a  href="http://datasift.net">DataSift</a> on Twitter. This all started when I <a  href="http://twitter.com/#%21/leggetter/status/17233038429655041">tweeted</a> that I thought <a  href="http://kwwika.com">Kwwika</a> would be a great way of distributing data from DataSift to any web-enabled device.</p>
<p>The conversation continued:</p>
<p><img style="max-width: 800px;" src="http://www.leggetter.co.uk/wp-content/uploads/2010/12/leggetter-nickhalstead-conversation1.png" alt="" /></p>
<p>The main thing here for me is Nick&#8217;s point that &#8220;<strong>you just need a client-side library</strong>&#8220;. This is an assumption that a lot of services make. Services tend to offer one or a number of server APIs; maybe a REST one and now luckily we are seeing a HTTP Streaming and WebSocket support. That service may then release some example code that can be used to call the web service. I see a number of problems with this mainly when it comes to HTTP Streaming and WebSockets.</p>
<ul>
<li><a  href="http://support.datasift.net/help/kb/rest-api/websocket-streaming">DataSift WebSocket Streaming Docs</a></li>
<li><a  href="http://support.datasift.net/help/kb/rest-api/http-streaming-api">DataSift HTTP Streaming Docs</a></li>
</ul>
<p>WebSockets aren&#8217;t as yet supported in enough browsers. Therefore it&#8217;s not viable to purely rely on WebSocket support in any production application. So, you can&#8217;t build a web application unless there is a fallback alternative. HTTP Streaming in a web browser could be a fallback (XmlHttpReqeust, XDomainRequest or Flash connections) if the server provides the necessary <a  href="http://dev.w3.org/2006/waf/access-control/#access-control-allow-origin-response-hea">Access-Control-Allow-Origin</a> response header, the browser is new enough, or if the user has Flash installed the server serves up a crossdomain.xml file and the developer is willing to also write code to deal with all the browser types and technoloy scenarios. Then you need to deal with authentication from a web browser for some services to let you access their HTTP Streaming API. DataSift will class your connection as a 2nd class client if you don&#8217;t authenticate:</p>
<blockquote><p>Authorization is not required on the streaming API. However, should you chose not to authenticate, you may be subject to stricter rate limiting and other disadvantages over an authorized user. Therefore, authorization is strongly recommended</p></blockquote>
<p>What this means is that DataSift as yet don&#8217;t support real-time updates in web browser clients fully.</p>
<p>Then you need to consider other technologies like .NET, Java, C or C++ desktop applications, mobile applications on iPhone, iPad, Windows Mobile 7 or Palm using webOS. Each of these technologies requires a client API.</p>
<ul>
<li><a  href="http://support.datasift.net/help/kb/libraries/api-client-libraries">DataSift API Client Libraries</a></li>
</ul>
<h3>A Scenario</h3>
<p>Say I were building a new service which focused on real-time data and delivery of that data in our custom application to desktop app, mobile apps and web apps. My service is focused on curating real-time data from different sources. My first port of call would be DataSift or Superfeedr (I&#8217;m going to leave Kwwika out of the equation here). I know these guys can deal with large volumes of data and can provide some filtering. Maybe if filtering was absolutely key I would go for DataSift (maybe <a  href="http://twitter.com/#%21/julien51">Julien</a> would tell me off for that).</p>
<p>Now I&#8217;ve made my choice and I&#8217;ve got all the data I want streaming through my chosen service and I start to build my client applications. If I choose to build my web application first I&#8217;m stumped as I&#8217;ve already explained, but let&#8217;s say I want to build a Windows desktop application first. Simple, I use the HttpWebRequest object to create a HTTP Streaming connection to DataSift, follow the connection guidelines that DataSift follow (<a  href="http://dev.twitter.com/pages/streaming_api_concepts#connecting">Twitter&#8217;s HTTP Streaming guidelines</a> including a backing off process and handle reconnection) and I&#8217;ve not got my real-time Windows desktop application.</p>
<p>I now decide to build an iPhone application so that people on the move can access my service. I need to start from scratch by writing iOS (Objective-C) code to connect to DataSift&#8217;s HTTP streaming API, following the back off process and deal with reconnection. Once I&#8217;ve done that I move on to Windows 7 Mobile and I have to do the same again.</p>
<p><img style="max-width: 800px;" src="http://www.leggetter.co.uk/wp-content/uploads/2010/12/DataSift-not-kwwika1.png" alt="" /></p>
<p>You get my point.</p>
<p>Now, once DataSift becomes popular, and it will, there will be loads of open source client APIs to choose from. However, these APIs are likely to have been built by a number of different developers providing different ways of doing the same things. Some might be DataSift specific but hopefully they&#8217;ll be generic HTTP Streaming libraries. At this point building my service applications will become a little easier but, in my opinion, still not as easy as it should be.</p>
<h3>Using Kwwika</h3>
<p>If I were to build this service, and not exclude Kwwika, I would set up all my real-time data streaming through DataSift and write a single library, probably reusing the <a  href="http://wiki.kwwika.com/components/kwwika-tweet-streamer">Kwwika Tweet Streamer</a> code which handles the HTTP Streaming connection and the Twitter connection guidelines, and push the data from DataSift into Kwwika. For each of my client applications I could simply download/use the relevant <a  href="http://wiki.kwwika.com/api">Kwwika API</a> (JavaScript, .NET, Silverlight, Flash, Objective-C, Java, C) to subscribe to the DataSift data on any web-enabled device. And because these APIs are are developed and maintained by Kwwika they are consistent across platforms e.g. if you&#8217;ve used the .NET API you will be familiar with the JavaScript API.</p>
<p><img style="max-width: 800px;" src="http://www.leggetter.co.uk/wp-content/uploads/2010/12/DataSift-just-kwwika.png" alt="" /></p>
<p>My point is that the client APIs are as important as the server APIs. A quality real-time client API adds a lot of value to the service such as handling reconnection, failover, subscription management, connection monitoring, error handling, bi-directional messaing and request batching (not relevant in this scenario). As well as real-time data distrubtion/messaging/client push this is a key part of what Kwwika offers.</p>
<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='Kwwika-Superfeedr real-time demo available'>Kwwika-Superfeedr real-time demo available</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/08/delivery-as-a-service-and-data-as-a-service-in-2011.html' rel='bookmark' title='Delivery as a Service and Data as a Service in 2011'>Delivery as a Service and Data as a Service in 2011</a></li>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/12/21/why-client-apis-are-an-important-part-of-any-real-time-service.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kwwika Powered Real-Time Opta Sports Cricket Widget</title>
		<link>http://www.leggetter.co.uk/2010/12/17/kwwika-powered-real-time-opta-sports-cricket-widget.html</link>
		<comments>http://www.leggetter.co.uk/2010/12/17/kwwika-powered-real-time-opta-sports-cricket-widget.html#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:54:00 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cricket]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Kwwika]]></category>
		<category><![CDATA[Matador Digital]]></category>
		<category><![CDATA[Opta Sports]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket</guid>
		<description><![CDATA[        
	Over the past couple of weeks we've been involved in developing a Real-Time Cricket widget. It's been a collaboration, with Opta Sports providing the data, Kwwika powering the real-time client push as well as doing a bit of dev on data archi...
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
<li><a href='http://www.leggetter.co.uk/2011/08/04/adding-a-real-time-whos-shopping-widget-to-an-asp-net-web-app.html' rel='bookmark' title='Adding a real-time &quot;Who&#8217;s shopping?&quot; widget to an ASP.NET Web App'>Adding a real-time &quot;Who&#8217;s shopping?&quot; widget to an ASP.NET Web App</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html' rel='bookmark' title='Defining the Kwwika API'>Defining the Kwwika API</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Over the past couple of weeks we&#8217;ve been involved in developing a Real-Time Cricket widget. It&#8217;s been a collaboration, with <a  href="http://www.optasports.com/">Opta Sports</a> providing the data, Kwwika powering the real-time client push as well as doing a bit of dev on data architecture and feed parsing and <a  href="http://www.matadorgroup.co.uk/">Matador Digital</a> helping us build the widget itself.</p>
<div id="ashes_3rd_test"></div>
<p><script src="http://kwwika-cdn.s3.amazonaws.com/widgets/opta/cricket/opta.cricket.js"></script><br />
<script>
opta.cricket.widget("#ashes_3rd_test",
    {
        style:"scorecard",
        gameDirectory:"/opta/cricket/fixtures/icc_world_cup_2011/20110330/semi_final_2"
    }
);
</script></p>
<style>
.opta-kwwika-score { color: white; }.opta-kwwika-news p { margin-top: 10px; }
</style>
<p>There&#8217;s quite a bit of work gone into this widget in a short space of time and I&#8217;m really pleased with the result. I&#8217;ll go into exactly how it was built in more detail in a later post but for now i&#8217;ll focus on what the widget can do and be used in this post.</p>
<h2>Features</h2>
<p>Opta Sports have created a an <a  href="http://www.optasports.com/sports/cricket/internet-and-mobile/live-scores-centre.html">overview page for the widget</a> which details the features at a higher level but I&#8217;m going to drill down a little bit deeper into the tech and explain how easily the widget can be embedded on any website.</p>
<h3>Real-time ball-by-ball updates</h3>
<p>For each event that occurs within a cricket match Opta Sports generate a feed. We get this feed, parse it and push it through Kwwika and into the web page. This means that every event is displayed on the widget.</p>
<h3>Show either full scoreboard or simple match status</h3>
<p>Ok, we finally get to see how you embed the widget in your page. It&#8217;s simple!</p>
<pre class="brush: jscript; title: ; notranslate">opta.cricket.widget(&quot;#scorecard-wrapper&quot;,
    {
        style:&quot;scorecard&quot;,
        gameDirectory:&quot;/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101226/4TH_TEST&quot;
    }
);</pre>
<p>The first parameter you pass to the <em>opta.cricket.widget</em> function is a <a  href="http://api.jquery.com/category/selectors/">jQuery selector</a>. This tells the widget where it should be created. If the selector matches multiple elements then you&#8217;ll get multiple widgets. You probably wouldn&#8217;t want this but it&#8217;s a cool trick. The widget will replace the contents of the selected element(s) so until the widget loads you can have some HTML that says the widget is loading or just some static cricket data. If the widget can&#8217;t load for any reason then the contents of the element(s) won&#8217;t be replaced. This won&#8217;t happen though <img src='http://www.leggetter.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The second parameter is options for the widget. We have a number of options that we support but the example above shows:</p>
<ul>
<li><strong>style</strong>: The widget can be created in a number of forms and this option parameter indicates how the widget should be displayed:
<ul style="margin-left: 40px;">
<li><strong>scorecard:</strong> This style is the full scorecard for an innings. This displays an overview section and all batsman and bowler information.</li>
<li><strong>mini</strong>: This style is very similar to the scorecard. It displays the overview section and just the batsman and bowlers that are active.</li>
<li><strong>overview</strong>: This style shows just the overview section of the widget.</li>
<li><strong>livescores</strong>: This style just shows the current score in a smaller widget area.</li>
</ul>
</li>
<li><strong>gameDirectory</strong>: This identifies the Kwwika topic to request for the game and the data for this game will be displayed in the widget. The following topic is used for the 3rd test of the Australia v England Ashes 2010 to 2011 series: /OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101216/3RD_TEST</li>
</ul>
<p><a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/fqabufgjhfeIiblgbDuhmdutxwnhhIpEyxkcEkDAnihxxGqezBscnbcmDssz/overview_green.png.scaled1000.png" rel="opta-style-examples" class="thickbox no_icon" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/fqabufgjhfeIiblgbDuhmdutxwnhhIpEyxkcEkDAnihxxGqezBscnbcmDssz/overview_green.png.scaled500.png" alt="" width="500" height="143" /></a><br />
<a href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/AaIGbcAzCqtttqnwAxcaiziksaEeEqBltzrpjGgoGwbCJcfuzevuyBBtCget/mini_green.png.scaled1000.png"rel="opta-style-examples"><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/AaIGbcAzCqtttqnwAxcaiziksaEeEqBltzrpjGgoGwbCJcfuzevuyBBtCget/mini_green.png.scaled500.png" alt="" width="500" height="336" /></a><br />
<img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/JIEGhhBxpDDhlmBJlJoAEtfyIixuEFiCkjGfsvBogGDcvelwguabhwzdtJga/livescore_green.png.scaled500.png" alt="" width="283" height="205" /><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/ussuJCHuyjacpcBexmqJqzxAhGvmffbsCfnloGbqxldJeICcIsicEakJdvms/OptaCricketWidget-Scorecard.png.scaled1000.png" rel="opta-style-examples" class="thickbox no_icon" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/ussuJCHuyjacpcBexmqJqzxAhGvmffbsCfnloGbqxldJeICcIsicEakJdvms/OptaCricketWidget-Scorecard.png.scaled500.png" alt="" width="500" height="571" /></a></p>
<p><a  href="http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket">See and download the full gallery on posterous</a></p>
<p>We also have a few other option parameters:</p>
<ul>
<li><strong>innings</strong>: The widget defaults to displaying the latest available information. However, we cache some of the cricket data so it&#8217;s possible to display the data for an earlier innings from a match by passing in an innings number.</li>
<li><strong>flashTime</strong>: When an update occurs such as a run being scored or a bowler bowling a batsman out we flash the widget. This allows you to set how long the flash will last for.</li>
<li><strong>title</strong>: This is displayed at the top of the widget if it is in the livescores style.</li>
<li><strong>topicErrorMsg</strong>: A bit techie. If you have entered a gameDirectory that doesn&#8217;t exist then the widget displays an error message. This allows you to configure what that error message says. It can contain HTML.</li>
</ul>
<h3>Developed using Kwwika technology for instant data streaming</h3>
<p>Yep, it&#8217;s the real-time web. Delivered <img src='http://www.leggetter.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Do you have any data that you want to instantly distribute to any web-enabled device? If so, <a  href="http://kwwika.com/contact">get in touch</a>.</p>
<h3>Easy to customise &#8211; apply your own styling and branding</h3>
<p>Since the widget is purely HTML and we&#8217;ve styled it with CSS you can easily customise the widget. <a  href="http://twitter.com/aaronbassett">Aaron Basset</a> of Matador Digital did a great job when I asked him to supply a few different stylesheets. He told me that he&#8217;d used <a  href="http://lesscss.org/">LESS</a> to generate the CSS for the widget so it was easy to create different styles. Within 15 minutes Aaron had sent 10 different styles my way. You can apply the different styles in our example pages by just changing the drop-down at the top-left of the page. My favourites are the Kill Bill or Comic styles.</p>
<p><a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/bpuxDEEHedsauwFcpltclDdbahcqbuhABjetFqtekCzoysvtgbqlAwsGyhws/comic.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/bpuxDEEHedsauwFcpltclDdbahcqbuhABjetFqtekCzoysvtgbqlAwsGyhws/comic.png.scaled500.png" alt="" width="500" height="523" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/qelyocjonkyDzsrcryweiwbsAaiIekFcyHIvCmbIvlhDDBhBqtGJtDClnHud/killbill.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/qelyocjonkyDzsrcryweiwbsAaiIekFcyHIvCmbIvlhDDBhBqtGJtDClnHud/killbill.png.scaled500.png" alt="" width="500" height="524" /></a><br />
<img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/IlpkhpAxwGvkDFCletdFAmhgviIznymklIcfqvxJByohDfEpkqsEGvsfsBzH/livescore_green.png.scaled500.png" alt="" width="283" height="205" /><br />
<img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/wqoiBBxAiEpJGcAbvziCedumtoadHietpzzgGwsbobCdAIJvjxlnHapFljFJ/livescore_orange.png.scaled500.png" alt="" width="279" height="198" /><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/paIuDDDyiyBaFJEmCtaFvwsAikHhyHIDyGnzwnzmhzFarptatbrjlhEqmAGH/mini_blue.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/paIuDDDyiyBaFJEmCtaFvwsAikHhyHIDyGnzwnzmhzFarptatbrjlhEqmAGH/mini_blue.png.scaled500.png" alt="" width="500" height="331" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/wkxjgCrczoDohsJdIsBwkpJnidegFrHdJBjBJpkJtghGrtaejEDFEdglreCd/mini_green.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/wkxjgCrczoDohsJdIsBwkpJnidegFrHdJBjBJpkJtghGrtaejEDFEdglreCd/mini_green.png.scaled500.png" alt="" width="500" height="336" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/kfHtxfsweExeurIpmcDdFnlwittrumwoJycyakEoxknGhIalqEIgixfDlydc/overview_bbcworld.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/kfHtxfsweExeurIpmcDdFnlwittrumwoJycyakEoxknGhIalqEIgixfDlydc/overview_bbcworld.png.scaled500.png" alt="" width="500" height="142" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/ArAexJeyzwiBbAIGsyknimvhmmgajiwyoArnwblrBBlboGHhzcnDItFvCHhH/mini_mono.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/ArAexJeyzwiBbAIGsyknimvhmmgajiwyoArnwblrBBlboGHhzcnDItFvCHhH/mini_mono.png.scaled500.png" alt="" width="500" height="329" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/tryiFlBvIlAHIogqEsAAxpqungcJBjIJoCAEtvmqBkdorviBkqDDgcJvAkwF/overview_terra.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/tryiFlBvIlAHIogqEsAAxpqungcJBjIJoCAEtvmqBkdorviBkqDDgcJvAkwF/overview_terra.png.scaled500.png" alt="" width="500" height="143" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/hmDnBAGsJdzhtodmlDfvjkphEkojJhHGyhqfhHmkiznorEEhJAbjtdzCkbHH/purple.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/hmDnBAGsJdzhtodmlDfvjkphEkojJhHGyhqfhHmkiznorEEhJAbjtdzCkbHH/purple.png.scaled500.png" alt="" width="500" height="528" /></a><br />
<a  href="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/jkCCnIDovIrHqgplumltIDFGuerfEkBGdrGkFgyvwDwicuBAcErIDDGoztyC/red.png.scaled1000.png" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/temp-2010-12-17/jkCCnIDovIrHqgplumltIDFGuerfEkBGdrGkFgyvwDwicuBAcErIDDGoztyC/red.png.scaled500.png" alt="" width="500" height="521" /></a></p>
<p><a  href="http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket">See and download the full gallery on posterous</a></p>
<h3>Can be embedded anywhere within the website with just three lines of code</h3>
<p>We&#8217;ve classed the HTML container element for the widget and the single widget script include as lines of code which bumps this up to 3 lines. I&#8217;ve used a number of widgets in the past and I think we&#8217;ve done a great job here.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;div id=&quot;scorecard&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;http://cdn.kwwika.com/widgets/opta/cricket/opta.cricket.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;opta.cricket.widget(&quot;#scorecard-wrapper&quot;, {style:&quot;mini&quot;, gameDirectory:&quot;/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101216/3RD_TEST&quot;});&lt;/script&gt;
</pre>
<p>Okay, that last line is a bit long and maybe counts as 4!</p>
<h3>Multiple matches on a single web page</h3>
<p>You can call <em>opta.cricket.widget</em> as many times as you like and for each call you could pass a different game directory. That way you could easily have multiple games displayed on the same web page if you liked. You could also mix the styles of widgets that are on a web page.</p>
<p><a  href="http://posterous.com/getfile/files.posterous.com/kwwika/tdvPG09HvkihLke9RWI2vTiDvFDnGfFUv8b0id1zl7RCZnhydwASztySV3zs/MixedWidgets.png.scaled.1000.jpg" class="thickbox no_icon" rel="gallery-3712" title=""><img src="http://posterous.com/getfile/files.posterous.com/kwwika/v84NgEWg0RAkrANR8v586ya1fFbq8fHmAEgNc4jgIgzhAzDkF48sFic98KPA/MixedWidgets.png.scaled.500.jpg" alt="" width="500" height="430" /></a></p>
<h2>I want that widget!</h2>
<p>Opta Sports specialise in high quality sports data. They have a number of sports products and this real-time cricket widget is the latest such product. Opta Sports are looking for companies who are interested in taking this widget and embedding it on their website or within their web application. If you are interested please <a  href="http://kwwika.com/contact">get in touch with us</a> or or directly with Opta Sports <a  href="http://www.optasports.com/sports/cricket/internet-and-mobile/live-scores-centre.html">via their cricket score centre page</a>.</p>
<p>Since the ashes are nearly at an end we will also consider allowing you to embed this widget free of charge on your website for the remaining Ashes matches. Just <a  href="http://kwwika.com/contact">get in touch</a>.</p>
<h2>I want the cricket data!</h2>
<p>One of the things that excites us about this widget is that we are now seeing high quality sports data streaming through our servers. We&#8217;ve also proven that Kwwika is a fantastic distribution channel for real-time data. And we&#8217;ve seen that the delivery speeds between the data being captured and appearing on a web page are fantastic! We hope that this is the start of a big DAAS (Data as a Service) trend and that Kwwika can be at the forefront of it.</p>
<p>If you like the widgets but you&#8217;d love to just get hold of the raw data and build your own widget, web app, mobile app or desktop app then <a  href="http://kwwika.com/contact">please get in touch</a> too.</p>
<h2>Examples</h2>
<p>You can find a link to all the the live examples on <a  href="http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/example.html">Opta Sports &#8211; Cricket Match &amp; Events Centre demo</a> page.</p>
<p>The above examples are hard-coded to show the Ashes 2nd Test but here are the Scorecard widget links to allow you to view the data from the 3rd and 4th tests:</p>
<ul>
<li>3rd Test: <a  href="http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/single-scorecard.html?game_dir=/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101216/3RD_TEST">http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/single-scorecard.html?game_dir=/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101216/3RD_TEST</a></li>
<li>4th Test: <<a  href="http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/single-scorecard.html?game_dir=/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101226/4TH_TEST">/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20101226/4TH_TEST</a></li>
<li>5th Test: <a  href="http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/single-scorecard.html?game_dir=/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20110103/5TH_TEST">http://kwwika.com/Standalone/Demos/opta/cricket/ashes-widget/single-scorecard.html?game_dir=/OPTA/CRICKET/FIXTURES/AUSTRALIA_V_ENGLAND_ASHES_2010-11/20110103/5TH_TEST</a></li>
</ul>
<p>From the format of the above links I&#8217;m sure you&#8217;ll be able to work out how to view the other examples with different games <img src='http://www.leggetter.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><em>Additional</em></strong>: You can also see the <strong>South Africa v India</strong> test using this topic:</p>
<p>/OPTA/CRICKET/FIXTURES/SOUTH_AFRICA_V_INDIA_TEST_SERIES_2010-11/20101216/1ST_TEST</p>
<h2>Thanks</h2>
<p>Last but certainly not least, a bit thanks to everybody we worked with on this.</p>
<h3>Opta Sports</h3>
<p>A big thanks to <a  href="http://optasports.com/">Opta Sports</a> for working on this product with us and giving us a chance to show off our technology. Working with <a  href="http://twitter.com/#!/alonzehavi">Alon</a> in particular has been a pleasure.</p>
<h3>Matador Digital</h3>
<p>We&#8217;d also like to thank <a  href="http://www.matadorgroup.co.uk/">Matador Digital</a> for the UI work and doing the majority of the widget functionality (I couldn&#8217;t help &#8220;lending a hand&#8221; though). Dave did a great job helping us come up with the UI and Aaron never ceases to amaze me with little pieces of information that make daunting tasks seem so simple. Really appreciate your hard work guys!</p>
<p><a  href="http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket">Permalink</a></p>
<p>| <a  href="http://blog.kwwika.com/kwwika-powered-real-time-opta-sports-cricket#comment">Leave a comment  »</a></p>
<p><!-- digg verification --><br />
<span style="display:hidden">978d6a1bd7d647028d1d1f29d49cd10d</span></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/marriage-worklife-integration-real-time-web-technology-evangelism-kwwika-a-retrospective-of-my-2010.html' rel='bookmark' title='Marriage, Work/life integration, real-time web technology evangelism &amp; Kwwika: A retrospective of my 2010'>Marriage, Work/life integration, real-time web technology evangelism &#038; Kwwika: A retrospective of my 2010</a></li>
<li><a href='http://www.leggetter.co.uk/2011/08/04/adding-a-real-time-whos-shopping-widget-to-an-asp-net-web-app.html' rel='bookmark' title='Adding a real-time &quot;Who&#8217;s shopping?&quot; widget to an ASP.NET Web App'>Adding a real-time &quot;Who&#8217;s shopping?&quot; widget to an ASP.NET Web App</a></li>
<li><a href='http://www.leggetter.co.uk/2010/04/02/defining-the-kwwika-api.html' rel='bookmark' title='Defining the Kwwika API'>Defining the Kwwika API</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/12/17/kwwika-powered-real-time-opta-sports-cricket-widget.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XMPP PubSub or PubSubHubbub for real-time server push?</title>
		<link>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html</link>
		<comments>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html#comments</comments>
		<pubDate>Fri, 17 Sep 2010 08:32:00 +0000</pubDate>
		<dc:creator>Phil Leggetter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[pubsubhubbub]]></category>
		<category><![CDATA[real-time data]]></category>
		<category><![CDATA[real-time web]]></category>
		<category><![CDATA[Superfeedr]]></category>
		<category><![CDATA[XMPP]]></category>

		<guid isPermaLink="false">http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser</guid>
		<description><![CDATA[<p>In case you hadn&#8217;t noticed,&#160;<a href="http://leggetter.posterous.com/hit-roond-around-the-heed-head-by-a-faash-fis">when I&#8217;m not getting hit by flying trout</a>, I like to think of myself as a bit of <a href="http://www.leggetter.co.uk/">a real-time web guy</a>. However, there&#8217;s one thing I&#8217;d like clarification on, and I&#8217;m confident somebody will be able to shed some light on this:</p> <p /> What are the differences [...]
Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/04/chromesafari-webkit-real-time-push-always-loading-indicator.html' rel='bookmark' title='Chrome/Safari (webkit) + real-time push = always loading indicator'>Chrome/Safari (webkit) + real-time push = always loading indicator</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In case you hadn&#8217;t noticed,&nbsp;<a  href="http://leggetter.posterous.com/hit-roond-around-the-heed-head-by-a-faash-fis">when I&#8217;m not getting hit by flying trout</a>, I like to think of myself as a bit of <a  href="http://www.leggetter.co.uk/">a real-time web guy</a>. However, there&#8217;s one thing I&#8217;d like clarification on, and I&#8217;m confident somebody will be able to shed some light on this:</p>
<p />
<strong>What are the differences between </strong><a  href="http://xmpp.org/extensions/xep-0060.html"><strong>XMPP PubSub</strong></a><strong> and </strong><a  href="http://code.google.com/apis/pubsubhubbub/"><strong>PubSubHubbub</strong></a><strong> and in what situations should each be used?</strong></p>
<p />
I do think I know some details about this but I&#8217;d like what I think I know to be confirmed or indeed corrected.</p>
<p />
My knowledge of the real-time web, and specifically real-time client push, comes from working for&nbsp;<a  href="http://www.caplin.com/">Caplin Systems</a>&nbsp;who pioneered building Comet servers around 10 years ago. From working with Caplin Systems and with Comet servers I&#8217;ve gained an understanding of how connections are made&nbsp;using different technologies&nbsp;and maintained in different scenarios. I also believe that I have a good understanding of what the best connection method is to deliver real-time data whether the delivery be from <strong>server to client using real-time client push</strong> or <strong>server to server using PubSubHubub or XMPP PubSub</strong>.</p>
<p />
<span style="font-size: large;">Persistent Connections</span></p>
<p />
Unless the frequency of data updates is very low, and if you want to truly deliver data in real-time, the best type of connection is a persistent one.</p>
<p />
As well as a persistent connection being able to deliver data faster it also means that your data subscriber does not have to handle a new HTTP connection for each piece of data it receives. This can actually be a really big thing.</p>
<p />
As part of building <a  href="http://kwwika.com">Kwwika</a> I wrote a demo which integrated the real-time server push&nbsp;capabilities&nbsp;of <a  href="http://superfeedr.com">Superfeedr</a> with the real-time client push&nbsp;capabilities&nbsp;of Kwwika to build a <a  href="http://superfeedr.kwwika.com">real-time news reader</a>&nbsp;(RTNR) (<a  href="http://www.leggetter.co.uk/2010/08/26/real-time-news-reader-shows-off-push-to-browser.html">blog article</a>). In order to receive updates from Superfeedr I had to implement a publisher-subscriber outside of the Kwwika infrastructure. I decided to write a&nbsp;<a  href="http://superfeedr.com/documentation#pubsubhubbub">PubSubHubbub</a>&nbsp;implementation in ASP.NET so that I could use a few other <a  href="http://github.com/Kwwika/Kwwika-Components">.NET Kwwika components</a> to easily integrate with Kwwika.</p>
<p />
So,&nbsp;each time Superfeedr has an update for the&nbsp;RTNR&nbsp;it establishes a HTTP connection to the&nbsp;RTNR PubSubhubbub&nbsp;server and sends the update which is then parsed and pushed into Kwwika to be distributed to subscribing web clients. If the&nbsp;RTNR&nbsp;is subscribing to something that is updating really frequently (such as &#8220;google&#8221; using <a  href="http://superfeedr.com/documentation#track">Superfeedr track</a>) then that can mean the&nbsp;RTNR&nbsp;server has to handle a lot of HTTP requests. Since I am running the demo on a small Amazon Windows instance running IIS it doesn&#8217;t take all that long, under a heavy load, for the server to stop responding.</p>
<p />
There must be a better way!</p>
<p />
<span style="font-size: large;">Real-time client push</span></p>
<p />
By way of a comparison let&#8217;s first take a look at real-time client push.</p>
<p />
Before WebSockets provided the simplest way&nbsp;(but as yet not the most reliable since the WebSocket standard is not set in stone and isn&#8217;t supported cross-browser)&nbsp;to achieve real-time push to a web browser the best connection method was to maintain a streaming and persistent HTTP connection from the publisher to the client subscriber (using an IFRAME, XMLHttpRequest or XDomainRequest). The persistent connection means that the connection has already been established so as soon as the publisher has any new data for the subscriber it can instantly be pushed to it. This means that the data can be delivered to the web browser as close to real-time as possible.</p>
<p />
<span style="font-size: large;">Real-time Server Push</span></p>
<p />
<strong>PubSubHubbub</strong></p>
<p />
PubSubHubbub turns things on it&#8217;s head in comparison to real-time client push (it actually uses HTTP as it was designed and it&#8217;s HTTP streaming that uses things in reverse. See <a  href="http://en.wikipedia.org/wiki/Reverse_Ajax">Reverse Ajax</a>.). In this case the publisher still pushes the new data to the subscriber but it does it using a HTTP request. The problem with this is that for each push a new HTTP connection needs to be established and the data then needs to be transferred. Establishing a connection takes time and resources so clearly a single persistent connection is a better solution. This is where I think XMPP PubSub is a better solution.</p>
<p />
<strong>XMPP PubSub</strong></p>
<p />
If you need your data to be delivered in truly real-time (or as close to real-time as web technology will allow) then you have to use a persistent connection between the publisher and the subscriber. It&#8217;s my understanding that since XMPP was developed as an <strong>instant</strong> messaging protocol that it uses a persistent connection.</p>
<p />
<span style="font-size: large;">Conclusion</span></p>
<p />
Here are things as I see them:</p>
<ul>
<li>If you want your data in real-time you should use a persistent connection between the publisher and subscriber.</li>
<li>If you are making a server to server subscription to data that doesn&#8217;t update all that often&nbsp;and instant real-time doesn&#8217;t matter&nbsp;then PubSubHubbub is fine.</li>
<li>If you are making a server to server subscription to data that updates very frequently then you need to use a persistent connection and XMPP PubSub is a must.</li>
</ul>
<p>One thing to also consider is if you are subscribing to multiple sources which update frequently then maintaining a persistent connection to each of those sources, assuming they even allow you to, takes a considerable amount of effort and potentially resource. This is where a service like Superfeedr comes in to its own. They manage the subscriptions and connections to the sources for you which means you only need to maintain one persistent connection to Superfeedr. They do all the heavy lifting so you don&#8217;t have to.</p>
<p><a  href="http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser">Permalink</a><br />
| <a  href="http://leggetter.posterous.com/xmpp-pubsub-or-pubsubhubbub-for-real-time-ser#comment">Leave a comment&nbsp;&nbsp;&raquo;</a></p>
<p>Related posts:<ol>
<li><a href='http://www.leggetter.co.uk/2011/01/07/real-time-data-delivery-http-streaming-versus-pubsubhubbub.html' rel='bookmark' title='Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub'>Real-time Data Delivery: HTTP Streaming Versus PubSubHubbub</a></li>
<li><a href='http://www.leggetter.co.uk/2010/08/12/the-benefits-of-real-time-push-once.html' rel='bookmark' title='The benefits of Real-Time Push-Once'>The benefits of Real-Time Push-Once</a></li>
<li><a href='http://www.leggetter.co.uk/2010/06/04/chromesafari-webkit-real-time-push-always-loading-indicator.html' rel='bookmark' title='Chrome/Safari (webkit) + real-time push = always loading indicator'>Chrome/Safari (webkit) + real-time push = always loading indicator</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.leggetter.co.uk/2010/09/17/xmpp-pubsub-or-pubsubhubbub-for-real-time-server-push.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 32/117 queries in 0.080 seconds using disk: basic

Served from: www.leggetter.co.uk @ 2012-02-04 20:45:19 -->
