Dave Hall Consulting logo


Google adds custom 404 handler

Tonight I was trying to get to Google translate, but was trying http://google.com/translation - which doesn't work.

Unlike last time it didn't work, Google.com now tried to suggest the right url for me, which was nice. It looks like Google has recently added a better 404 handler.

It only seems to work for google.com not google.com.au (I didn't try other local versions). Here are some examples.

  • Translation - com | local
  • Shopping - com | local
  • Crap Code - com | local
    (is google really claiming that they have no crap code?)

Interestingly URLs containing Google's more popular products/services (such as maps, mail, calendar and jobs) redirect straight to the service. As the rest of the urls are returning results based on keywords, why doesn't google just redirect them too?

I would upload screenshots, but I am in the country on a sub standard GPRS connection this week. Click the links and you can make your own screenies.

I have no idea how long this has been available, but I think it is handy and more user friendly.

Windows 8 to be Written in LOLCODE?

On Saturday at BarCamp Melbourne, Nick Hodge, from the evangelist team at Microsoft, gave a lightning talk about something that makes the geeks at MS very excited - LOLCODE.

Soon you won't need Visual Studio any more, you can just code in MSN^H^H^HWindows Live Messenger. twitter is fast becoming the distributed version control system of choice.

Afterwards I was talking to Nick about it and he suggested that Windows 8 might be written in LOLCODE. Apparently LOLCODE is a bit too cutting edge for Windows 7. You heard it here first!

For those of you still considering switching from PHP to Ruby, don't! Instead you can try out LOLCODE from the comfort of PHP. Check out Jeff Jones' implementation. Does this mean that one day you could run Windows under PHP, under Linux, now that would be a crazy new virtualisation engine.

<insert appropriate LOLCat here />

BarCamp Melbourne 2008

This weekend I am off to BarCamp Melbourne. I didn't make it last year, but I decided to make the effort this year.

I missed out on almost all of linux.conf.au, which was disappointing, but I did take Noah to the open day, which was lots of fun. I know BarCamp won't make up for it, but it should still be a good day.

I am hoping to give a talk about phpGroupWare. During my talk I will probably be showing off trunk and the YUI enhanced template that we have been working on at ReSight. You never know I might even be able to find a new dev or 70.

BarCamp should be an opportunity to meet up with a few people that I missed at LCA, and also to some that I didn't miss, including Justin, from Simple Invoices

Time permitting I should get a post BarCamp entry up next week.

Flakey BIOS in Gigabyte GA-M68SM-S2L Makes MAC Address Change on Reboot

Over the weekend I have been setting my new Mythbuntu pair, a split. back end and front end. Everything has gone pretty smoothly.

One issue I did hit was the onboard NIC on my Gigabyte GA-M68SM-S2L motherboard despite what the specs say it is a "nVidia Corporation Unknown device 054c (rev a2)" which uses the forcedeth driver. Everytime I rebooted the box the NIC would increment its interface number - eth0, eth1 ... eth6 and so on. Changing the "Smart LAN" setting in the BIOS from auto to disabled just disables the NIC, not what I wanted.

After googling I discovered that others had experienced similar problems with ASUS boards with nVidia NICs, changing their MAC addresses. Looks like Gigabyte (and ASUS) have been shipping invalid MAC addresses on some of their boards, and forcedeth isn't happy about it, so it just generates a new (valid yet) random MAC address.

With a little help from sysfs I was able to hack my udev config so it all works now. My /etc/udev/rules.d/70-persistent-net.rules looks like

SUBSYSTEM=="net", DRIVERS=="forcedeth", ATTRS{vendor}=="0x10de", ATTRS{device}=="0x054c", NAME="eth0"

I grabbed the output of "cat /sys/class/net/ethX/device/{device,vendor}" to populate the relevant ATTRS entries above.

I am not sure what you do if you have 2 onboard NICs and they are both broken.

Gigabyte (and ASUS) or nVidia should look at fixing their broken kit to save people from wasting time on this.

Update: It turns out it was a dodgy driver shipped by Ubuntu

PHP on crack

I had a chuckle while reading Ed Finkler's PHP6 wish list. After reading the comment by Damien Seguy I almost fell off my chair.

Try running the following code under PHP

<?php ${'[email protected]#$%^&*()[]:;"<>,./?'} = "i bet this won't work!<br>\n"; ${"omg???!!! wtf???!!! :D"} = "omg it does<br>\n"; echo ${'[email protected]#$%^&*()[]:;"<>,./?'} . ${"omg???!!! wtf???!!! :D"};

It worked here on PHP 5.2.3 with ubuntu security fixes. I got

i bet this won't work!<br>
omg it does<br>

This contradicts the PHP manual, but hey it works.

Hello Planet Ubuntu Australia

Last week my blog was added to Planet Ubuntu Australia, the syndication site for Australian Ubuntu LoCo participants' blogs.

I have been rather busy with work and family commitments lately. I am hoping to give my poor neglected blog a little more TLC.

Linksys will Fix the SRW224G4 Firmware - Eventually

Yesterday I spent about 20 minutes discussing the lack of Firefox/gecko engine browser support in the webgui on the SRW224G4 with someone from Linksys. It was an interesting discussion.

When the SRW224G4 was originally released it supported Firefox but this support was dropped in a later revision which added support for new features and an updated user interface. The plan now is to put the Firefox support back in the next major release of the firmware. If I had a revision 1.0 switch I could downgrade my firmware, but the revision 1.0 firmware which supports Firefox will brick a 1.1 unit.

There were no firm commitments given, but I was told that I should see a Firefox compatible firmware for my SRW224G4 released sometime in the first half of 2008.

During the discussion I found out that the SRW224G4 information on Linksys' Australian website is way out of date compared to the US, the current datasheet makes it clear that the product is only usable with IE. I was told that this would be brought to the attention of the appropriate people, and fixed soon. Hopefully the phone support people will also be told what the real situation is with support for Firefox and other gecko based browsers.

Until I get the new firmware, I have 3 options, use a clunky console app for administering my switch, use IE under WINE or return it and get a refund. I am still deciding what I will do.

I don't think Linksys will be on the top of my list of networking kit vendors for a while. Dropping Firefox support is a serious regression in my book, regardless of the reason for it. I know the tech support guys are the first to cop it from users and the last to be informed about product changes, but the lack information about this issue has been very frustrating. The people responsible for maintaining the various Linksys websites should really lift their game.

If anyone can recommend a good supplier of relatively inexpensive, but reliable SIP desktop handsets, please post a comment.

Linksys Knows the SRW224G4 is Broken and Won't Fix it

Yesterday I emailed Linksys a link to my post about Linksys SRW224G4 switch being unusable with firefox and other FOSS browsers. The only response I received was an auto responder telling me to expect a response within 24 hours. After over 28 hours and another email, I still had no response. I wasn't expecting to get a "it has now been fixed, please test with this beta firmware - [link]", but I did expect something along the lines of "we have received your message and have forwarded it to the relevant section, you should receive a response in the next 5 business days". Instead of waiting any longer, I called Linksys.

After calling I spoke to one of the front line helpdesk people who put me though to Wendell, a Senior Technician at Linksys. I also spoke to Wendell last week about my problems with their WebView webGUI on the SRW224G4.

Wendell again told me that it worked with Internet Explorer 5.5+ and that I may find that some pages wouldn't work properly with firefox. After pushing Wendell, he agreed that it wasn't a case of some pages not working properly, but the unit was unless with any browser other than IE. He also told me that this was an issue which had been known by Linksys for some time, and that currently they have no plans to fix support for browsers other than IE 5.5+. I asked for information about where this was documented, Wendell pointed me to the release notes (a MS Word .doc) for the version 1.2.2a firmware for the SRW224G4/SRW248G4 which is only designed for revision 1.0 hardware - I have a revision 1.1 model, which doesn't have any firmware updates available.

The release notes contained the following information at the bottom of page 1.

8. Web browser availability

The web management interface is best viewed using Internet Explorer 5.5 and up, with a resolution of 1024 x 768. In the current software version, certain pages cannot be viewed well using other browsers. It is recommended to apply the following workarounds.

[then on the next page]

Note: Internet Explorer web browser must be installed prior to running the following procedures.

This is the first time I have ever been told that I should read the release notes for the latest available version of firmware for a device before purchasing it as the release notes may contradict the data sheet for the product.

The datasheet states

Features [...]
  • WebView monitoring allows administrators to view the current status and configuration using their favorite web browser

Under the management heading it states:

Web User Interface Built-in Web UI for easy browser-based configuration (HTTP/HTTPS)

The minimum requirements are pretty clear too:

  • Web-based Configuration Java-enabled Browser
  • Cat5 Ethernet Network Cable
  • TCP/IP Protocol installed on each computer within the network
  • Network Adapter installed in each computer
  • Network Operating System (e.g. Windows®, Linux, MacOS X)

My favourite browser is firefox, and I have java installed (although I see no need for java in the webgui), but I still can't administer my switch.

Instead of sending the unit back to the retailer for a refund, I would much rather see Linksys fix their faulty product.

These days, firefox, and other gecko based browsers, aren't niche browsers, they have a growing market share, not only in Australia, but globally. Large vendors should be supporting open standards and platforms, not just the dominant player.

I would recommend that anyone looking at purchasing any Linksys equipment look for alternatives which are more Free/Open Source Software friendly.

A link to this post will also be sent to Linksys, not just the help desk this time, and I will see what response I get. Keep watching.

Linksys SRW224G4 WebGUI is Broken

Last week I bought a Linksys SRW224G4 switch for my rack. It seemed like a nice piece of kit, and I got it for a good price.

The first part of the setup went well enough, using the telnet interface. As I wanted to get my head around all the options the switch offered, I thought I would try WebView (aka the webgui). The image below shows what I got with Firefox, on Konqueror is worse.

screenshot of broken Linksys SRW224G4 WebGUI

The Linksys helpdesk wasn't very helpful. Most calls weren't returned when promised and the scripts didn't seem to deal with this issue. In the end I was told to use Internet Explorer. I knew it worked with IE6 running under WINE, but that isn't the point. This is a modern piece of network infrastructure - it should work on any browser, especially one which has almost 30% market share in Oceania.

For the last 5 years or so I have used a fair bit of Linksys kit, as I find they build high quality network equipment. Another big plus for Linksys in my book has been their support for FOSS and hacking - especially the WRT54GL and NSLU2. Now I am not so sure.

Instead of just waiting for the ticket to make its way through the internal bureaucracy of Linksys so that eventually a developer investigates the bug, I thought I would lay it all out here for them. So here we go.

The error in the error console is:

Error: tbl.firstChild.firstChild has no properties
Source File: http://192.168.XXX.YYY/js/tabs.js
Line: 24

The code is question is as follows (line 24 is in highlighted:

[...] function setTabset(ths) { [...] var tbl = ths.parentNode.parentNode.parentNode.parentNode; subLinks = document.getElementsByName("lnk"); for (var i = 0; i < subLinks.length; i++) { if (subLinks[i] == ths) { if (subLinks[i].innerHTML == "LogOut") { var msg = "Are you sure you want to Log Off?"; if (!confirm(msg)) { return; } } curTd = tbl.firstChild.firstChild.childNodes[tab].style; [...]

The argument passed to the function above is a HTML element with an id attribute of 'tab_0'. This element exists, it is the "Setup" tab in the screenshot above. Lets walk through the relevant bits of the code.

var tbl = ths.parentNode.parentNode.parentNode.parentNode;

This steps 4 levels up the DOM tree, from the tab_0 element (the whole webgui is rendered using tables). This works fine. Now tbl references a table element with an id of 'Table2'.

Now we skip down to the line which has the error.

curTd = tbl.firstChild.firstChild.childNodes[tab].style;

This attempts to step down 3 levels from the top of the table to one of the tabs and retrieve the style object for that element. Here are the steps

  • tbl - the table itself
  • tbl.firstChild - the first child node of the table - a text node
  • tbl.firstChild.firstChild - a non existent node as the parent is a text node with no children

Why does this work on IE, but not Firefox/Konqueror and other FOSS browsers? I haven't checked for konq, but I know that the gecko engine (used by Firefox, SeaMonkey, IceWeasel etc etc), the DOM parses is whitespace sensitive. Every bit of text (whitespace or otherwise) is considered to be a text node. This is W3C compliant, there is even a bug report for it - see bug #26179 on mozilla's bugzilla.

This is pretty easy to fix, I haven't tested the code below for this case, but something like it usually works.

/* * Find the first child which is a html element */ function findFirstChild(elm) { if ( !elm.childNodes.length ) { return; } var children = elm.childNodes.length; for ( var i = 0; i <= children; ++i ) { if ( elm.childNodes[i].nodeType == 1 ) { return elm.childNodes[i]; } } return; } [...] function setTabset(ths) { [...] curTd = findFirstChild(findFirstChild(tbl)).childNodes[tab].style; [...]

I hope that Linksys sets their QA team on the SRW224G4 firmware with firefox to find the other bugs like this one. Unless Linksys fixes there gecko based browser support rather promptly, I won't be recommending (or using) their products in future.

Special thanks to the Firebug and DOM Inspector extensions which made this so much easier to trace.

Linksys will be emailed a link to this post and my ticket number. I will keep people posted on how things progress.

phpGroupWare Now Using Subversion on savannah

phpGroupWare is now using subversion for its version control system. We are the first project to use svn on savannah. So far the transition has been pretty smooth. The motivation was trying to merge a 80k line unified diff into the phpGW tree from the ReSight tree - something CVS couldn't really handle.

Before switching to SVN, there had been some discussion in the past about which version control system we should use. There were appealing aspects of using a distributed version control system, such as git, which is supported on savannah or bzr and mercurial which aren't. For some the show stopper was the lack of IDE integration and cross platform GUI support. In the end SVN was the only solution which met the needs of our current developer community.

Now that we are using svn, SVK is an interesting option for people who want to keep in sync with our tree, but maintain their own internal trees. As part of the ReSight project, we are looking at using svk to make patch pushing easier for both sides. I will blog about anything which I think the community will find useful, about using SVK with phpgw's SVN repository.

For more information about using SVN with phpGW see the subversion information page on savannah.

There will still be some changes to be made to make nightly builds to function properly again, along with some documentation updates on the website.