Thoughts on the TechCrunch ChristmasCrunch (#xmascrunch)

Last week I attended the TechCrunch ChristmasCrunch which came with the tagline “It’s a realtime holiday”. It’s great to see so many companies embracing the real-time web and building their businesses around it. Some companies that you would still class as start-ups such as TweetDeck, Seesmic and tweetmeme are now relatively established and there were a dozen or more startup pitches with the majority of these new companies focusing on the real-time web. There’s so much data being generated by social networks that it wasn’t surprising that a lot of the focus was around analysing the data. The key words from the event in relation to the data were relevance, sentiment, curation, authority and location. All of these terms play off each other. Relevance can be determined by authority and location. Sentiment, relevance and authority can be determined by a curation process. Some solutions to curation pitched at the event were based on language and text analysis, whilst others suggested crowdsourcing and using manual intervention as a means of determining the quality of data.

Read more...

How does Google Real-Time Search work?

On or around the 12th of December 2009 Google released a feature they are calling "real-time search". Our real-time search enables you to discover breaking news the moment it's happening, even if it's not the popular news of the day, and even if you didn't know about it beforehand. Although I'd still argue that we're not seeing the real-time web with this solution I thought I'd go in to a bit of detail about how Google are achieving this HTTP polling solution. Summary Google are consuming and indexing real-time data from multiple social networks It's not real-time HTTP PUSH yet, it's HTTP PULL using a polling interval The polling interval seems to vary but this needs to be confirmed. The polling result returns an encoded JSON response containing the next request to be made and the HTML of any new results. These results are injected into the "Latest results" section of the page The HTML returned is quite verbose and could be refined 87% from a sample of 30 polled requests returned no new results meaning the request was a waste of resources

Read more...

How real-time does real-time have to be?

Last night, just over 12 hours ago, I attended the Gary Vaynerchuk Crush It event organised by Sprouter in London. I’ve already read Crush It and seen a lot of Gary online so I wondered if he would give out any information that I hadn’t already heard. On the way in I mentioned this to Ian Sanders who said: It’s always different live. It’s like a gig. This is a big statement considering the event is just a guy standing and speaking and taking some Q&A. However, Ian’s statement was spot-on. Gary oozes charisma and when he speaks it feels like he’s addressing you directly. This is clearly one of the reasons why he’s so popular and doing so well. [caption id="attachment_592" align="alignnone" width="480" caption="Gary Vaynerchuk at the Sprouter Crush It event"][/caption]

Read more...

The ChristmasCrunch nearly real-time web event

On the 15th of December I’m going to the ChristmasCrunch. It looks like a really good event with Iain Dodsworth and James Whittaker of TweetDeck giving the keynote on “Where the biggest realtime desktop application goes next” (I know where I'm hoping it goes. See below). Other presentations include Jenni Lees of Festbuzz, Marco Kaiser of Seesmic, Mario Menti of Twitterfeed, Mark Rock of AudioBoo, Nick Halstead of Tweetmeme, Daniel Tenner of Woobius, Willian Fischer of Twitter Jobsearch and Tim Morgan of Mint Digital. And if that’s not enough there’s also a startup pitch (startup pitches - grrrr...) and an after party. My main interest in this event is to see if anybody is going to start delivering a “truly real-time” experience to users. Will TweetDeck still be making polling requests to the various services it uses to check if any more data is available or will they move to using PUSH technology? Are other companies going to start adopting PUSH to give the user a truly real-time web experience?

Read more...

Why Comet is key to the Truly Real-Time Web

A lot of websites use HTTP Polling to update data on on their website or application without the need for the user refreshing the website. This is clearly better than a purely static page, but during the time between each poll the data on the page has the potential of being out of date (stale) so to make a decision based on the information on a potentially stale page can be a risky one. The normal example given to show the benefits of using Comet to achieve full HTTP streaming and the importance of non-stale data is of a trader making a trade on an out of date price. Another example is given where a person places a bet using odds that are on screen but do not match up with the odds in the betting system. I just read a post on Comet Daily about a company called Frozen Mountain who have just released a component that adds Comet Support for IIS. Along with this they've released a video which doesn't cover the standard example.

Read more...

Which Rich Internet Application Technology will dominate?

I've been a member of the RIA Developers Group on LinkedIn for a short while now and the other day Patrick Bay posted a link to an interesting article on Computer Weekly about the prominence of RIAs. A few comments were posted and then Patrick questioned which RIAs would "bubble to the top". I think the UI revolution's already here; now we see which ones bubble to the top! This got me thinking about the criteria that may determine which RIA technology would be most successful. I think there are a number of things that will determine which one will ultimately win, or at least become the dominant choice. At the moment I can think of three categories; Technology buy-in, Development environment and Data access capabilities and choice.

Read more...

A Real Time Rich Internet Application (RTRIA) Example

I've just had an article published in the latest UK MSDN Flash newsletter on How to consume real-time data in a Silverlight RIA. As part of writing up the article I developed a sample Real-Time Rich Internet Application (RTRIA) that consumes real-time data from the Twitter real-time data feed. I also put together my first ever screencast. So, you can start by getting hold of the code or watching the screencast. The Code First, and this is Important: To get the sample application to stream real-time data from the Twitter real-time feed you will need to use Fiddler to trick Silverlight into allowing a crossdomain Web Request. Now that you are aware of that, you will also need the Silverlight development environment. You can get everything you need via the Silverlight Getting Started page. You've now got everything you need to run the RTRIA example. To run the sample application you should set the MSDNFlashRTRIAExample.Web project as the startup project and the MSDNFlashRTRIAExampleTestPage.html page as the startup page. [caption id="attachment_488" align="alignnone" width="335" caption="Setting up the solution to run the application"][/caption] If you'd like to find out a bit more about the code then read on. If you'd rather jump straight into the code you can download it from the TweetStreamer Google Code project.

Read more...

Using Fiddler to trick Silverlight into allowing a crossdomain Web Request

If you are trying to make a web request from a Silverlight application the first thing the Silverlight runtime will do is request a security policy file (see Network Security Access Restrictions in Silverlight) from the root of the server you are making your web request to. This happens if you are making your request using the HttpWebRequest or WebClient class. If the Silverlight runtime fails to get a security policy file your web request will fail. If your Silverlight application relies on this web request then you are going to need to contact the server owner and get them to add a security file but until then you can use the Fiddler HTTP Proxy to trick the Silverlight runtime into believing that it does have permission to make the request.

Read more...

Real-Time Rich Internet Applications (RTRIA)

Real-Time Rich Internet Applications (RTRIAs) are RIAs that consume and display real-time data. They have all the characteristics of an RIA with the added feature that data is being pushed to them in real-time as soon as it becomes available. This is in contrast to the current polling solution employed by most RIAs or other web applications that display updating data. I mentioned RTRIAs for the first time back in April 2009 in a post called "What is the real-time web" on the Caplin Systems Platformability blog, and since then there has been a real-time web explosion. The "real-time web" is now the buzz phrase around the Internet that everybody is jumping on. Back in April I set up a Google Alert for the term "real-time web". Back then I got maybe one Google Alert a day for this term, probably less. Now, I get at least two dense emails a day from Google with people using the term for all sorts of things; real-time web stats, real-time analytics, real-time search, rssCloud, pubsubhubbub, the list goes on. This is not the real-time web! Whilst some of the things on this list will help  the web become truly real-time (rssCloud and pubsubhubbub may even form the back bone), none of these things give the user a truly real-time web experience.

Read more...

How I approach problem solving in code?

Recently I was posed the following question: Write a piece of code that prints all odd integer numbers between 1 and 99 This really isn't a difficult question but it still requires some thought. When I'm posed with any question I like to break things down into their constituent parts. Here's the process I went through: Okay, so I'll define two variables for a start and end value and there's going to have to be a loop. [csharp]int startValue = 1; int endValue = 99; for(int i = startValue; i &lt;= endValue; i++) { // work out if "i" is an odd number }[/csharp] Now, for the odd number detection. And... after a few umms and errrs ... I'm going to have to mod 2 (%2) the current value of i to work out if the value is odd. More ... umms and errs. Okay, I've finally worked out that if something mod 2 is not equal to 0 it's clearly an odd number. This took me longer than it should have but never mind. Once I've detected if i is an odd number I'll then put the odd number into a list for use later. [csharp] int startValue = 1; int endValue = 99; IList<int> oddValues = new List&lt;int&gt;(); for(int i = startValue; i &lt;= endValue; i++) { if(i%2 != 0) { oddValues.Add(i); } } [/csharp] Those of you that are good at these little puzzles, or just think this is way too easy, might already be screaming at me about one of the following: Why are you using a IList, why don't you just print the value? Odd numbers are always 2 apart so why aren't you just increment i by 2 using i+=2?

Read more...