Friday, June 23, 2006

My Faith Is Rekindled

Fantastic - just when I was starting to feel jaded, just when I thought the web was in danger of becoming a bland, corporate-controlled, commoditised shrine to mediocrity in the chase for post-Google aquisition dollars, something pops up to raise a genuine grin and restore my faith in The Long Tail of humanity.

Ladies and gentlemen, allow to present :Hitler Cats

Happy Friday :)

Tuesday, June 13, 2006

Irrepressible Information

You may have noticed the new big green box in the sidebars linking to IRREPRESSIBLE.INFO - this is part of a campaign against internet censorship from Amnesty International.

The idea is that if you are subject to, or hear about, suppression or censorship of internet-based articles, you can submit the content to them, and they will then syndicate it across all the participants a sentence at a time. That way the submitted article is still available, albeit in a distributed form, and no-one is likely to get shut down for making one sentence available.

It's a novel idea - kind of peer-to-peer publication - and I personally think it's an admirable aim. Remember, censorship comes in many guises and is certainly not just restricted to third-world dictatorships. That's why I'm showing my support, and I humbly suggest that you consider it too.

Monday, June 12, 2006

Senior CF Dev needed at Headshift, SE1

Headshift are looking for an experienced, senior-level CF Developer (just in case you hadn't guessed ! ).

Most important attributes are

  • Enthusiasm for social software and some experience of using + interfacing with "standard" social software apps such as blogs (mostly MovableType), wikis (esp. Confluence) and third-party services like Flickr and del.icio.us

  • Good understanding of systems architecture, OOD, development methodologies esp. Fusebox and Mach-II

  • High level of SQL/T-SQL and relational database design - esp. SQL server + MySQL

  • Some project management experience a big plus - you'll be expected to take a project and run with it, and work self-supervised for the most part

  • Some experience of systems configuration and sysadmin on Windows and Linux

  • CSS + XHTML, and a good appreciation of usability and accessibility issues. No FONT tags allowed!

  • Flexibility, pragmatism and an ability to maintain a sense of humour under pressure!


Make no mistake, it's a challenging job - but it can be correspondingly rewarding, working with some of the most dedicated, talented people you'll find, and I guarantee you'll learn something. There are hints of what kind of challenges the job tends to throw up scattered throughout my previous posts on this blog, so if you're interested, have a good read and send your c.v. to jobs_AT_headshift.com.

NOTE : NO AGENCIES! Headshift don't like agencies, and won't consider any applications which come through them. No, seriously, they mean it - so I wouldn't bother if you're from an agency. Really!

Friday, June 09, 2006

Setting Focus Onload() - Helpful Ain't Always Usable

Usability has become more and more of a concern to me over the last couple of years, and I just had to vent about a very common feature on web forms that appears to be "helpful", but often isn't - setting focus to the first form field onload()

I've been asked to add this feature on forms many times, and on very simple, quick-to-load forms like a login form, then fair enough, it saves someone a click or a press of the tab key, and saving someone a click has to be A Good Thing™, right? It means they can start typing straight away, right?

Wrong. For more complex forms - for instance, if you have a WYSIWYG component in the form which takes a while to initialise - setting focus to the first element onload() can actually make the form LESS usable, not more.

Here's why:

If you set an onload event on the document, then it doesn't fire until all of the referenced elements within the document have finished loading. When you have a lot of elements - particularly common with WYSIWYGs - then it's quite possible for the referenced elements to take several seconds to finish loading after the form has already appeared.

So the sequence of events goes like this -

  1. Form appears

  2. User starts typing in the first field

  3. User completes this field, moves onto the second and starts typing

  4. ...repeat step 3 an arbitrary number of times, until...

  5. referenced elements like scripts, hit trackers, banner ads, captchas, WYSIWYG components finally all finish loading

  6. THEN the onload() event fires

  7. focus "helpfully" gets set to the first form field, usually while the user is in the middle of typing in a large textarea and - crucially - looking at their keyboard, not the screen

  8. user finishes what they're typing and looks up

  9. user realises that for the last 30 seconds or so, they've been typing into the first field, not the big textarea that they thought they were typing in.

    1. optional Brucie Bonus - As the first field on a form is nearly always fairly short, the maxlength has been hit quite early on, but the user didn't realise this because they were looking at the keyboard. Hence, user realises that the last X words they typed have just disappeared.

  10. user swears loudly and curses this damn web system that was supposed to solve all their problems but has just given them a load of new ones.



I know, I know, it's a simple thing, but it drives me completely incandescent with frustration when I realise that I've lost the big long chunk of text that I was typing because the focus has shifted.

It's almost as bad as when someone starts an IM chat with you and the window pops up and starts accepting input without you noticing, and then you suddenly realise you've accidentally sent your Mum a foul-mouthed tirade that was intended for something entirely different...