May 2005 Archives

Who really cares about usability?

| 1 Comment

Users. They just don't realise it until the computer gets in the way of them doing what they want.

I've been ranting for years about usability, task-centered design, blah, blah. I know just how hard it is to get right too. But both FLOSS and proprietary software are generally abysmal at this sort of thing.

Nat seems to be catching on to what usability is really all about:

"It was interesting to watch this video and instantly realize that the 'Send / Receive' button is all about how Evolution works and not about what the user wants to do. I've been staring at that button for five years, and never realized it was wrong until I saw that video."

So I just hope more people make this intellectual leap. Everywhere, you see examples of the inside-out design, where the implementation is exposed - warts and all! - all the way up to the interface. This is one of the most pervasive errors in design, and it is only getting worse, with more features crammed into every new release.

Imagine: you are designing a VCR remote control. Does the user really care that it is reading an analog signal from a helical scan magnetic head, with the tape running at 2.1cm/sec? Do you have a separate button to engage the heads? A dial to adjust the variable speed motor? Another dial to adjust the helical rotation speed to match the tape? Do the users really care how it works inside? Do they need to know in order to use the player?

Or do they just want to "watch the movie"?

Ubuntu Linux and Linksys WPC54G Card

| 11 Comments

A while ago I purchased the Linksys WRT54G for my home networking setup. Herein I chronicle the steps to get it working. Since Linksys use the Broadcom chipset, and they do not see fit to publish any specs, getting anything but the latest version of Windows supported is - well, you can guess.

  1. First, ensure the base system is correctly installed and configured, and you have a working ethernet network connection
  2. Run System|Administration|Synaptic Package Manager (and enter your password when prompted)
  3. It is recommended that you first apply all updates, which you can do by pressing "Reload" then "Mark All Upgrades" then "Apply"
  4. Once all that has completed successfully, install ndiswrapper-utils
  5. You can find it either by pressing "Search", typing "ndis" and pressing Ok, or
  6. By browsing down to the section "Miscellaneous - Text Based" (why isn't it in Networking?)
  7. The kernel module is already build and available in the kernel, so that is all you need
  8. Check the back of your wireless card, the WPC54G has several versions, at least v1 and v2
  9. Download the latest version of the approproate driver from ftp.linksys.com/pub/network
  10. In our case it was wpc54g_driver_utility_v1.3.zip for the v1.2 card
  11. Now "cd /tmp" and "unzip ~/Downloads/wpc54g_driver_utility_v1.3.zip" (or whatever)
  12. Do a "cd WPC54Gv1.3"
  13. Run "sudo ndiswrapper -i lsbcmds.inf" and enter your password
  14. You will see some messages saying "Forcing parameter RadioState|0 to RadioState|1"
  15. Now run "sudo modprobe ndiswrapper"
  16. and "echo ndiswrapper >> /etc/modules"
  17. Now right-click the Network settings on the toolbar, select properties, configure, then deactivate eth0
  18. Remove your ethernet card, put in the WPC54G wireless card
  19. Run "dmesg" and you should see some messages at the bottom, like "wlan0: ndiswrapper ethernet device 00:0f:aa:bb:cc:dd:ee using driver lsbcmds"
  20. I need to run "sed ..." to set Radio... to 0 (as described in the link below)
  21. The following assumes you have WEP configured on your router (and if you don't, why not???)
  22. The next two steps are optional: run "sudo iwconfig essid somewhere" (where 'somewhere' is the name of your wireless network)
  23. now run "iwlist scan wlan0" and you should be able to see your network (and maybe your neighbor's)
  24. Once you have the driver loaded and running, the built-in Ubuntu networking settings can do the rest
  25. Just open up the Network Settings dialog, then go in to wlan0 and make the appropriate settings
  26. Note: the built-in configuration tool only supports WEP at the moment. It is possible to get WPA support with the wpasupplicant package, but configuring that is a whole other story

I now have it working with my Airport Express wireless adaptor, in WEP mode. I haven't got WPA sorted out yet unfortunately.

Useful links:

  • http://ubuntuforums.org/showthread.php?t=5645
  • http://tiefighter.et.tudelft.nl/~arthur/wpc54g/
  • http://ndiswrapper.sourceforge.net/phpwiki/index.php/FAQ
  • http://lists.shmoo.com/pipermail/hostap/2005-April/009962.html
  • http://ndiswrapper.sourceforge.net/phpwiki/index.php/WPA

Time to stop using XML

| No Comments

Although many people think XML is being overused (which I tend to agree with), it is finding an enormous range of uses and applications.

It is therefore quite unfortunate then that anyone using XML for object serialisation may either have to stop, face being sued, or cough up a lot of money. Why?

The simple reason is that Microsoft was granted last week a patent on using XML to serialise and deserialise objects.

Microsoft defended its position, claiming "studies routinely rank our innovations among the most significant across any industry". But as one reader of the above article pointed out, there is a fairly obvious flaw, asking "Where is the patentable 'innovation' in using XML for the purpose it's born for?" [sic]

The Extensible Markup Language (XML) has its one of its roots in the Oxford English Dictionary, as
creator Tim Bray explains. Its genesis also lies in SGML, largely a creation of IBM, who spent many years developing markup languages for large structured documents.

it has since become a swiss army chainsaw of data formats. XML is being used in a phenomenal variety of applications, for user preferences, simple databases, RPC mechanisms, and so on. And yes, even to serialise objects.

Fundamentally, XML is a data format. Even the XML specification talks about "entities" and "objects". The Document Object Model (DOM) in JavaScript in web browsers is yet another good example. I'm sure there are dozens of examples where XML is used as a persistent form for the public instance data of an object.

The only aspect of the patent claim that does not make it completely general is the idea that the schema is generated from annotated source code. This idea however, is by no means new or novel either, and still does not constitute a "novel invention" and "non-obvious to someone skilled in the art". Especially since annotated source has been around for many many years, and all sorts of tools (preprocessors, literate programming tools, doxygen-style tools) have performed similar functions.

We developers can only hope that people come forward with prior art in this area, published prior to the patent application. Otherwise, we find ourselves facing yet another landmine in the software landscape.

The Mermaid's Tale

| No Comments

I came across this fascinating article, The Mermaid by Heinz Insu Fenkl.

If you have found yourself wondering, as I often have, what the connections are between Starbuck's Coffee, Mermaids and car stickers, read this article.

This is not a Brave New World

| No Comments

This is not a Brave New World. The world is shaping up to be Greedy, Fearful and Partisan. This could be a golden age for the human race, when technology is used to help people and improve the quality of life, reduce the digital divide, yada yada yada. But really, it's all about money, isn't it?

Just picking a few articles from the news in the last day or two, we have:

I could go on - there is no end to the list of stories like those listed above. Stories that make you think "but - why?".

Tiger isn't really for the users

| No Comments

Sure, Tiger - the latest release of Apple's Mac OS X - has a huge array of new features. Sure, the Spotlight search features alone are compelling enough to make you want to upgrade. Automator enables workflow and user-level scripting. And Dashboard is a whole new dimension in desktop widgets.

But for all the 200 new features and usability enhancements, that's not what the secret sauce is all about.

Because the killer feature of Tiger is that all of this technology is in the hands of developers. It didn't really click at first, because I was so focused on the new features as a user. For example, in my research I have a huge collection of PDF files. For years I have been waiting for a useable full-text searching facility, to no avail. But now Tiger has it built in, and I can't imagine going back now I have it. (It's a bit like the transition from using a dial-up modem to having broadband at home.)

But now that the dust has settled, I see things from a slightly different perspective. And it is obvious now that Tiger provides by far the richest development platform available today, bar none. Because virtually everything cool Apple have done in userspace, they have exposed to developers.

CoreImage gives me a GPU-accelerated image processing architecture. CoreData gives me object persistence with no drudgery. Dashboard lets me easily write widgets in HTML+JavaScript. I can easily add my own file formats to Spotlight for indexing. I can write Automator plugins. And QuickTime is the most sophisticated multimedia framework available (even though most people think it's just a media player). And the list goes on.

And in many places, Apple have used published standards (eg. H.264 for video, OpenGL shading language for CoreImage kernels) and open source technology (eg. Jabber for instant messaging, SQLite for database). There are many more examples of this.

So as a developer, I look at OS X and positively salivate at the potential of such a rich platform. I don't care if another platform has a monopoly-sized market share, as there is less competition and there is abundant fertile ground on the Mac for true innovation.

Now that I have Tiger installed...

| No Comments

...it's time to update Emacs. Fortunately, the hard work of getting the latest Emacs running under Tiger has been done for us. Thanks Mick!