Jensen Harris – Blog of the Week

Recently Sunny Boy started writing a "Blog of the Week" feature which I really like the concept of. It’s a nice way of writing about and pointing people towards other similar and relevant blogs. At the moment I’m linking to 5 of my favourite blogs in the footer; I’ll probably replace this feature with "Blog of the Week".

I don’t believe I’ll stick to a weekly schedule so the chances are there will be some weeks where there are two Blog of the Weeks and there may be weeks when there are none. It’s just a nice trademark

Jensen Harris

Jensen Harris works for Microsoft on the UI of Office 2007 and has a fabulous blog which details and documents many of the new features and interface improvements in Office 2007. It’s a really interesting blog as it isn’t the normal marketing speak from Microsoft – the blog details some of the thinking behind the interface changes and some of the testing done.

Among the interesting posts:

For Office 2007 fans, user interface designers, Jakob Nielsen wannabes it’s a great read. The amount of posts has slowed down in the last few weeks but I guess that’s to be expected as Office 2007 is becoming a lot more stable and is almost ready to ship.


You know what I’m talking about… people who keep talking about AJAX and Web 2.0. What’s up with that? I mean… I’m making a website and your making a website and you’re pretending your site is more cool and flashy ‘coz it’s 2.0. How would you like it if I wrote a blog and you read it and all I did was write about AJAX, how it is a new generation of web technologies, how Google is going to write an operating system to destroy Microsoft and how your site is so cool that it’s a whole version above the rest. And every time you make a site, I think you suck because guess what… I’m Web 2.0. I hate you AJAX people. Arggh, so mad! Argh!

You know what, I’m gonna call you guys Xajas from now on. People who are always constantly banging on about AJAX are Xajas. Spread the word guys! They’re called Xajas! Xajas! Grr!

Stolen and adapted from Wine Kone

Internet Explorer 7 Beta 3

Microsoft have released Beta 3 of Internet Explorer 7. If you’re upgrading, you should uninstall Beta 2 before installing Beta 3. This new version has drag and drop tab reordering, some behavior changes, security fixes and feed reading improvements.

Get Internet Explorer 7 Beta 2 for Windows XP SP2

I’ve not downloaded and tried this version yet but I’m looking forward to it. I’m still kinda disappointed at IE7 – I don’t like the new UI much though the rendering improvements are pretty good. Still, many of the issues I had writing JS for IE6 still exist. 

A beta of Mozilla Firefox 2.0 should be out soon. 

Scammer baited into carving Commodore 64 keyboard

This article at 419 Eater describes how someone managed to bait a Nigerian 419 Scammer into creating a wooden model of the characters from Creature Comforts and a Commodore 64 keyboard.

A slightly different twist on my now familiar artwork anti-scam. I manage to secure two pieces of artwork, but unfortunately due to the temperature and humidity fluctuations between here and West Africa, as well as rogue rodents, there are problems.

It’s an interesting and amusing read. 


Notepad Bug

Google Blogoscoped pointed to a real cool Notepad Unicode Detection bug.

Try this. Create a new text file on your desktop, open it with Notepad, enter the following line (no return character)…

Bush hid the facts

… and save it. Close the file and open it again. You might now see some strange Chinese characters that don’t translate into anything meaningful, or boxes if you don’t have the Chinese font installed…

It also works with "this app can break". It seems to occur because Notepad thinks the file is a UTF-16 string. As it interprets it as multibyte Unicode (2 bytes per character), you get 8 characters.

It’s been reported that it works for any strings with the same length and where the spaces are in the same place. I tried the trick with "nnnn nnn nnn nnnnn" and it worked; so did "woah bob eat grass". Though for some reason, "woah cow eat grass" did not work. 

Blog Update

Just to let you know, there will probably be a big software update (hopefully tonight) on this blog as I upload the last two weeks worth of development work.

  • There may be possible downtime.
  • The URL to the RSS feed will change from rdf.php to xml.php. I’ll leave a HTTP redirect at the old URL. If your feed client doesn’t support redirects, you may be screwed.
  • The format of the feed will change from RSS 1.0 to Atom 1.0. If your client does not support Atom 1.0, you may again be screwed.
  • There will now be 10 entries in the feed rather than 5.
  • There may be errors and/or strange looking pages across the whole of as there are tons of templates and the chances are I’ll miss something whilst merging the codebases.

This update will bring the codebase up to date and will have some of the improvements described here.

I’m looking at a public alpha of the software in the next few months. 

Foxytunes 2.0

Most of you have probably heard of Foxytunes before – it’s a Firefox extension which allows you to control your media player from within Firefox. I used it for a few days a long time ago but I got rid of it as I have a multimedia keyboard with buttons to change tracks and I didn’t find it particularly useful.

Jed Brown has some screenshots from Foxytunes 2.0 and describes some of the new features. There’s a auto-hide feature saving you space on the toolbars, it shows your album covers and it’s dead easy to use Foxytunes to find lyrics, images and information on the current song your listening to.

Where FoxyTunes 1 was simply an interface to use your media player from Firefox, FoxyTunes 2 integrates your music experience into Firefox and gives you easy and quick access to internet information related to what you’re listening to.

You can download the demo and see some screencasts on the Foxytunes website

  • A while ago Songbird Media Player did the rounds. It’s a media player which integrated Mozilla and VLC code. Between Foxytunes and Songbird, I think Foxytunes has a better approach – it builds on what is already there rather than reinventing the wheel.

BT Vision

I was reading a bit about BT Vision the other day – BT’s upcoming video on demand broadband service. It’ll come as a set top box for around £100 which gives you access to around 40 Freeview channels, a PVR so you can pause, rewind and record television, and access to VoD content through your broadband connection – some of which will be free (such as BBC programmes from the last 7 days), some will cost extra (e.g. Premiership football matches).

For a dual tuner 160GB Freeview high definition ready box it’s a pretty good deal at £100. No doubt it’s subsidised by some of the pay content but I think all the pay content will be optional.

What really caught my eye was this:

You’ll see a trailer of your chosen video before you decide to buy it, which you do using a PIN code. The video then displays straight away, with no need to download it first. 1.5Mbps of the customer’s broadband connection is reserved for these video downloads.

The video on demand downloads don’t count towards your monthly broadband usage allowance, which is as low as 2GB on the cheapest option. 

This reminds me of the debate over network neutrality in the USA. Of course, ISPs have been doing it for along time over here (Bittorrent downloads often capped during peak hours) but this is probably the first time a major UK ISP is giving priority to their own traffic in such a way.

BT gives traffic from it’s "BT Vision" priority on the network. From a customers point of view this is a pretty good thing if your using the service – you want it to be as reliable as ntl or Sky and not to break up and buffer as you would associate with the internet connection. It’s also good news capwise – even the highest cap package, 40GB, isn’t that much. With no caps on BT Vision traffic, you can also watch television without worrying about limits which is great.

The only problem with this is that BT does not allow rival Video on Demand services to compete. If someone else wanted to provide Video on Demand to BT users they won’t be able to provide priority connections or reserved bandwidth and downloads will be capped.

IMO this is a bad thing as it prevents competition but as a possible BT Vision user, I’m also glad that the service will be cap-free and will have reserved bandwidth. So I’m actually not sure where I stand on the network neutrality issue.

Geneone: UI, Drafts, Templating

Over the last week or two, I’ve been working on Geneone to revamp the UI a little, switch templating systems and to implement a Drafts system.

UI Updates

As part of the effort to try to turn Geneone into a BSD-licensed software, I’ve removed all Crystal SVG images and replaced them with images from the Tango Project.

Moderate UI 

The full moderate discussion UI has icons and description of what each function does. Commands such as "Move Discussion" should really be lumped in with these options too. Looks a bit wierd with the radio button in between the description and icon but I think it makes it easier to use. I also considered using checkboxes instead of radio buttons.

Notification UI

These new message classes mean there is a more consistant look across the whole application and the messages are more visible and harder to miss than before. 


Drafts are a real nice feature. They allow you to save a copy of your content on the server which may be half-finished. You can return to it later, either to finish it off and publish the content or you could save it as a draft again. As drafts are implemented in the actual application rather than the object code, you can save drafts for any type of content – blog entries, forum comments, pages, etc. 


When you have some saved drafts, you’ll get an extra item on your "member bar". Click on this to access all of your drafts. From here you can continue editing them or delete them. When you select to edit them, the draft will load into the form. Options such as categories/tags will not get lost when you save it in your draft.


As previously mentioned, Geneone now uses Gene_Template which is a dead simple templating layer which uses PHP to parse your templates. I’m a big fan of the new templating system – it’s 3.7KB instead of 300KB for Smarty.

Messenger Plus! Random Text Script

Further to my earlier post about Messenger Plus! Live, I decided to flex my Javascript skills so I attempted to write a script for Messenger Plus! Live. It was dead easy to write a script; even easier than writing a Firefox extension. I suppose my script is fairly basic as it doesn’t require any new UI or i18n or anything but I’m still quite impressed how easy Patchou made it to write a script.

This is a dead simple script. All it does is it reads a text file every 10 minutes, picks out a random non-blank line from that file and then sets that as your Personal Message on Messenger. You could use this script with IRC logs, a list of quotes, etc.

Source Code

function updateMessage() {
    FileSystem = new ActiveXObject("Scripting.FileSystemObject");
    file = FileSystem.OpenTextFile("E:/Documents/testfile.txt", 1);
    i = 0;
    lines = new Array();

    while(!file.AtEndOfStream) {
        line = file.ReadLine();
        if (line != '') {
            lines[i] = line;

    linenum = Math.floor(Math.random()*lines.length)-1;
    Messenger.MyPersonalMessage = lines[linenum];

function OnEvent_Initialize(MessengerExit) { }
function OnEvent_Uninitialize(MessengerExit) { }

function OnEvent_Signin(email) {
    if (email == Messenger.MyEmail) {
        MsgPlus.AddTimer('randomtext', 600000);

function OnEvent_Timer(timerId) {
    if (timerId == 'randomtext') {
        MsgPlus.AddTimer('randomtext', 600000);

Hopefully most of this script should be fairly self-explanatory. OnEvent_Signin is called when a user signs in. This function checks that it is the current user who has just signed in, and if so calls updateMessage() and schedules the next call for in 10 minutes time.

OnEvent_Timer gets called when a timer is triggered – in this case it’ll get called after 10 minutes. The function calls updateMessage() and schedules the next call for in another 10 minutes time. updateMessage() opens a text file, reads the whole file putting it into an array and then selects a random line and sets it as the personal message. 


To use it, go to Plus > Scripts and select "Create New". Enter a name for the script and paste the contents of the script above into it and save it. You’ll have to sign out/sign in or restart Messenger to make it work. Make sure you’ve also changed the path to the text file which is E:/Documents/testfile.txt by default.

It’ll overwrite your whole personal message. If you want it to appear as part of your personal message, concatenate the random line with something else. For example, you could change:

Messenger.MyPersonalMessage = lines[linenum];


Messenger.MyPersonalMessage = 'My Personal Message | '+lines[linenum]; 

If you want to change the update interval, change the value of 600000 (600000ms is 10 minutes).