Please note, new blog at

A new browser called Flock

I just came across this new browser called Flock. It is open source software that is built upon the Mozilla code-base -- not as an extension, but as a stand alone product. It looks pretty cool, and they have changed a lot. The browser is currently in developer preview only (but everyone can still download it).

Their main point of difference is the "community integration" they have built in.

Stars & Favourites

You can star your favourite sites using the Star button, and even share them with others using a account. They have changed bookmarks into Favourites, and added more functionality such as collections. You can also tag them using keywords.


Flock has all of the Firefox feed options, but also allows you to aggregate different feeds together based on your favourites (you can create "collections" of favourites as well, e.g. News) and view them within the browser.


Flock has built-in blogging features, and integrates with many of the top blog providers such as WordPress, Movable Type, Typepad and Blogger. In fact, I've written this post from within Flock. Flock also allows you to "Blog This", so you can highlight passages whilst viewing web pages and blog about it straight away. This is nothing new, but it's nice that it is integrated.

They have also built "The Shelf". This feature is essentially a scrapbook that you can drag all sorts of web content into, so you can blog about it later.

Internet Explorer 7 Beta 2 screenshots have posted 50 high-resolution screen shots of Internet Explorer 7 Beta 2. To be honest I wasn't that impressed with the interface at first glance, but I can see that there are a few cool features (like the blank tab). It appears as though IE now has a built-in RSS reader, and formats feeds when you are directly viewing them. I see they have also integrated the Firefox RSS icon.

gzip compression and IE do not mix

We had a problem at work the other day where the CSS and HTML files were being returned from the server with no content. We restarted the development server, but the problem still persisted. ColdFusion templates were being returned, but the CSS files litterally had no content. So we fired up IE HTTP Analyzer, and the content was seen perfectly fine -- it was being retrieved from the server. However, the HTTP Analyzer was showing us that the files were being compressed. Someone had turned on gzip compression on the server. It turns out there is a bug with Internet Explorer that stops it from properly decompressing gzip compressed files. We turned off gzip compression on the server, and it all worked fine (of course, it worked in Mozilla/Firefox anyway). There has been a fix released by Microsoft addressing this, but we hadn't applied it at work (for whatever reason).

New design for a new year

I've been meaning to change the design of my blog since the new year, but have only just gotten around it. Open Source Web Design is a great resource if you a looking for any free to use templates. I especially like the work of Andreas Viklund, whose design I have used here. There are a few kinks to iron out. One in particular is the white space above the header. I think Blogger is interfering with it in some way with their inserted code/styles. I hope you guys like the new design.

An Intel-powered iMac disassembled

The guys over at Kodawarisan have disassembled one of the new Intel-powered iMacs. Now I'm a PC guy, but this is pretty cool none-the-less.

Science fiction or science fact?

Lately I've been seeing quite a few articles about advances in science that have frankly left me amazed. It seems as though whatever we can conceive of, people will eventually find a way to make reality. The US has been researching beam weapons for the last 20 years, and it seems they are on the verge of creating weaponry, according to MSNBC. Also in research, although theoretical, are hyperspace engines.
The theoretical engine works by creating an intense magnetic field that, according to ideas first developed by the late scientist Burkhard Heim in the 1950s, would produce a gravitational field and result in thrust for a spacecraft.
Could something happen in my lifetime?

Windows Vista and XP compared side-by-side

BentUser has an interesting comparison of the new and enhanced features of Windows Vista and Windows XP. The screenshot of IE7 is particularly interesting.

Why the status bar keeps loading in Internet Explorer

Have you ever had that problem where Internet Explorer appears to keep loading, even though all elements have been accounted for?! Well, a colleague of mine found the solution (well, one cause at least!). Apparently, the cause is dynamically loaded HTCs. In our AJAX application, we use the TableSort behaviour by WebFX. All you have to do is write something to the status bar straight after the element with the behaviour is added to the DOM. Check out this Microsoft KB article for the full details.

Project management using spreadsheets

I've recently been given more responsibility for managing projects and people's time at work. In previous roles I've used Microsoft Project a fair bit, but unless you've got Project Server, then it is a little difficult to manage multiple projects across an enterprise. What I've come up with are a series of shared Excel spreadsheets.
  1. Project Summary and year planner: Lists all projects, current and previous, and shows the current status, the project manager (we have more than one), sponsor and expected start/end dates.
  2. Project tasks: Lists all tasks within a project, showing the status of each task, the expected hours, actual hours and general comments (and in some cases instructions). The idea is that each task can also have an accompanying Word document that is the specification. A seperate sheet within the workbook displays sub-tasks for a particular task using the same format.
  3. Team member tasks: Lists all tasks that have been assigned to a team member based on tasks within the Project task spreadsheet. Each team member has a seperate sheet. Tasks here can optionally show the ID of the related task in the project task sheet, meaning a project task could be split into multiple individual tasks.
What does everyone else use to manage projects and tasks? My solution is really quite "cheap", but there is of course a manual overhead.

AJAX Diary: Using JSON instead of XML

In a follow up to my previous post, I am going to talk about the different ways to format data transferred from the server to the client - namely XML or JSON (JavaScript Object Notation). Most AJAX implementations focus soley on XML as the delivery mechanism for data. I think that XML is good for an envelope, but not necessarily the best choice for transmitting large amounts of data, as it is too verbose. JSON offers a lightweight format, is easily serialisable/deserialisable and maps nicely to native datatypes. In the application mentioned previously, we used a hybrid of XML and JSON. We used XML to describe the envelope (or "packet"), and JSON to "describe" the data. Anyway, in more detail, this is how it worked. Differences between XML and JSON XML is extremely versatile and an excellent mechanism of transferring data between systems. However, it does have its drawbacks. One of them is of course bloat. For example, say we were sending back a struct to the client side that had two keys, firstname and lastname. Using XML to describe the data: <response> <result>0</result> <resultstring>OK</resultstring> <data> <struct> <firstname>John</firstname> <lastname>Smith</lastname> </struct> </data> </response> Using JSON to describe the data: <response> <result>0</result> <resultstring>OK</resultstring> <data>{ firstname:"John", lastname:"Smith" }</data> </response> As you can see, the JSON version is MUCH smaller than its more verbose counterpart. This is even more true when you are considering an array of structures, or complex structures. How ColdFusion variables were converted into JSON Firstly, we created what we called a Request Broker. I'll go into more detail about this in a later post, but it essentially took the component and method as arguments and returned an XML document, with the ColdFusion variable returned by the method encoded as JSON. The Request Broker would get called like this: The ColdFusion tempalte dynamically evaluates the method passed via the URL, and also passes the FORM scope as an argument. On the client side, name/value pairs are always passed as a POST instead of a GET. This is because some variables sent to the server might be large lists or text. <cfscript> o = createObject("component", url.class); cfData = o[url.method](FORM); jsonData = jsonencode(; </cfscript> It is the job of the component (url.class) to appropriately extract the arguments from the FORM data and then pass them as individual parameters to the Model. The output of the method is then encoded using the CFJSON UDF, written by Jehiah, and then wrapped up in an XML envelope. <response> <result>#cfData.result#</result> <resultstring>#cfData.resultString#</resultstring> <data>#jsonData#</data> </response> In my next post I'll cover the Request Broker in more detail, as well as provide a full source-code description. The idea of this post was to show you the differences between XML and JSON, and how we converted ColdFusion variables into JSON.