Please note, new blog at

IE7 to use Firefox RSS icon

It has been announced that the forthcoming Internet Explorer 7 will use the RSS icon that is currently used in Firefox.
From IEBlog: I’m excited to announce that we’re adopting the icon used in Firefox. John and Chris were very enthusiastic about allowing us (and anyone in the community) to use their icon. This isn’t the first time that we’ve worked with the Mozilla team to exchange ideas and encourage consistency between browsers, and we’re sure it won’t be the last.
This is pretty big news when you think about it. Hopefully it shows that the IE team are more willing to build and support existing features that are to the greater benefit of the community...

AJAX Diary: Our first 100% AJAX application

We've just finished a complete rewrite of our CRM user interface using AJAX. The whole thing was written using Object-Orientated JavaScript, and has given us a 10 fold increase in responsiveness. As usual, we didn't use an existing framework, but rolled our own MVC framework. The backend business logic was left untouched, and a facade layer was created to translate client requests into calls to existing methods. I thought I'd share some of the things that we implemented and learned whilst developing the interface. I will be also publishing followup posts over the next month or so with other tidbits of information. Batching and caching We built a communications layer that optionally allows us to cache and/or batch requests. For instance, if you pass the "account cache" object a number of account codes, it will go and get 25 at a time from the server, and the cache the results for a predetermined length of time. If you pass any one or more of the same codes again, then it will not go back to the server. We implemented this style of batching on our search results system. When you filled in the criteria form, and clicked the submit button, it would send a request with the criteria and then get back a list of account codes that matched it. These accounts we then fed into the "account cache" object, and the information about each account was retrieved. The results we then shown to screen as each "batch" was received back from the server/locally. One of things we found was that there was very little difference between getting one or 25 records from a database at the same time. In fact, most of the time was ColdFusion's startup and shutdown! Events & Listeners One of the most common problems when developing a user interface is keeping it suitably decoupled from the model, and indeed, from other user interface classes. We found that building an event queue to be an elegant solution. User interface objects listen for events that get fired by other UI objects, controllers or even the model. This way, you can very easily build two entirely different views for the same model. As an example, we had two "pods" in our interface that displayed "groups". The first pod showed a combo box with a list of groups in it. The other showed a tree-view of the same group list. Each of these views listened for the "groups retrieved" event, and re-populated themselves with the group data contained within the event message. Frameworks such as DOJO have implemented this, as we found out later ;) In my next post I will go into request brokers, serialisation and JSON instead of XML. I'd love people to share their own experiences building DHTML / AJAX user interfaces.