File uploads have traditionally had very bad usability on the web. We have not been able to make asynchronous uploads or show the upload progress without resorting to hacks or proprietary solutions.

As part of our efforts building Panda, our video encoding service, we scoured the HTML5 specs for a better solution. We found a good one, and on this article I'll explain how to make use of this. However, be warned: at the moment this will only work in the latest versions of Webkit and Gecko -based browsers

Websockets-based activity dashboard app. Read on to know more about the ideas behind it

In this post I'll attempt to summarise some patterns for designing event-based Javascript applications extracted from our projects and previous blog posts on the subject. I'll end with an overview of the techniques described and how they play together in a real-world application.

Hello. It's been a while since I last blogged about WebSocket. It's been exciting that many new frameworks and services are out including our own Pusher.

Having said that, we have to be aware that the protocol is still actively being changed.

Patterns aren't just for software design. We can find generally reusable solutions to common problems in handling clients.

Taking simple actions early can avoid serious problems with the client relationship later on. After seeing this work a couple of times, I ran a workshop at XP2010 where we developed detection heuristics and early interventions for several classes of difficult* clients.

There is currently a lot of buzz around Pusher, but how does it fit into a real app? I set out to integrate Pusher with TrueStory, our backlog management app, a little while ago and was pleasantly surprised at not only how simple it was but also how quickly I could add advanced real time behaviour to an existing app that was not built with the real time web in mind.