Defining the Kwwika API

Update: Hang on a minute. You've not explained what Kwwika is! In a really informative chat using Nurph, which has been really useful in getting feedback, it was pointed out to me by @rythie and @NeilCauldwell that I need to explain what problem Kwwika is trying to solve before asking what the API should look like.

Read more...

Making cross domain JavaScript requests using XMLHttpRequest or XDomainRequest

Cross domain requests (also known as Cross Origin Resource Sharing) can be made using JavaScript without trickery, as far as I can tell, in Firefox 3.5, Safari, Google Chrome and Internet Explorer 8. This is done with all browsers except IE8 using a standard XMLHttpRequest object. The only thing required to notify the browser that JavaScript is allowed to make this request is for the server to send a Access-Control-Allow-Origin response header. Internet Explorer 8 uses an object called XDomainRequest and requires the same HTTP header. If the value of the header is * then requests are allowed from all domains. You can be more restrictive if required.

Read more...

When does NOW matter?

Real-Time Web! Real-Time Web! Real-Time Web! Like me you may well be fed up of hearing and seeing this term. However, I'm guessing that you'll be fed up for a different reason to me. I'm actually very excited about the real-time web (I'm sure you'll have noticed) but I want to see it used as more than just a buzz term. I want to see real-time used in the true sense of the term - to mean that something has happened within the last few milliseconds. I want it to mean that the tweet you are reading, the picture you are viewing, the status update you are reading, the event you are being notified of is happening NOW.

Read more...

Real-Time Web Posts 03/03/2010

I'm doing my best to keep up to speed on any news related to the real-time web. I follow interesting people on Twitter who tweet out links, I subscribe to RSS feeds and I've got Google Alerts set up on a number of phrases. Since I'm doing all this work I thought it would be a good idea to start sharing it by publishing the findings in an occasional summary blog post. I generally don't like blog posts which just say "this is an interesting article" but sometimes, if it raises awareness of good articles, it can be useful. Hopefully it will be. I tend to first post the links on the Real-Time Web Software and Technologies LinkedIn group so if you are interested on getting the news as I find it, or contributing your own real-time web finds then please join the group. Also feel free to Tweet at me or contact me via the website if you find anything interesting and relevant.

Read more...

Using real-time web software and technology to distribute events

I've just come across William Vambenepe's blog and an article called "Waiting for events (in Cloud APIs)" where he discusses how an event system is missing from cloud vendor APIs. With my interest in Comet I straight away thought of this as a solution to the notification requirement and it's interesting that the article goes on to talk about subscription management and then moves on to thinking about the delivery mechanism which are all key aspects of a good comet implementation: How do you deliver notifications? Do you keep HTTP connections open through tricks similar to how self-updating web pages work (e.g. COMET, long polling and soon WebSockets)? Or do you just provide a listener endpoint to which the notifier tries to connect (which, in the case of public cloud deployments, means you need to have a publicly-addressable listener, but hopefully not on the same Cloud infrastructure). Do you use XMPP? AMQP? Email? Can I have you hold my events and let me come pull them?

Read more...

Google have integrated Facebook fan page status messages into latest results

According to this article by Read Write Web, Bing have exclusive access to the data created by Facebook user status updates and Google have access to the data from Facebook fan page updates. It's interesting to see that this data is so highly valued that there is clearly a bidding war over access to certain types of data. Which is more valuable? As of today, Facebook Fan Page status updates will begin appearing in Google search results, according to a tweet by Google. The announcement means that we will begin seeing results from the nearly 3 million fan pages, but not from the more than 400 million users.

Read more...

Compiling a cloud hosting vendor comparison list

I've started building a list of cloud hosting vendors, including those offering platform as a service (PAAS). I'm trying to get vendors to contribute but as yet haven't been too successful. I'll need to directly approach them over the next few weeks to see if they'd be willing to provide me with a few details. Update 27/02/2010: A good friend of mine found a website that lists all cloud vendors. Although it doesn't contain all technology specific information that I was looking for it's quite a comprehensive list and a good starting point. Check out cloudxl. You can still view my original list too: View the list

Read more...

Silverlight uses XCP tmp files for Web Requests

It would appear that the Silverlight runtime creates a file named XCP*.tmp of around 20MB within a users %temp% directory (where * can be replaced by random characters). This file would appear to be used in some way by the Silverlight runtime for web requests. If you refresh your Silverlight application then this file is cleaned up. However, if your web request is interrupted in some way then the file can be left in your %temp% directory slowly but surely eating up disk space. This is particularly noticeable and reproducible if you are using the HttpWebRequest class to stream data (for more information on streaming data from Silverlight you can listen to my podcast and read my article in a free MSDN book). You can then reproduce the loss of connection using Fiddler (which seriously rocks and is becoming more and more useful) by right-clicking on the streaming connection and selecting "Abort Session". [caption id="attachment_695" align="alignnone" width="529" caption="Fiddler - Abort Session"][/caption] The best solution to resolve this that I've found is to manually invoke the garbage collector whenever you detect the connection loss. [csharp] // Manually invoke Garbage collection GC.Collect(); [/csharp]

Read more...

MSDN e-book and podcast

A few months back I wrote an article for the UK MSDN Flash newsletter. That article is now available in a free e-book and my podcast interview about the article with Eric Nelson is now also available.

Read more...