James is a freelance web developer based in the UK, specialising in JavaScript application development and building accessible websites. With more than a decade's professional experience, he is a published author, a frequent blogger and speaker, and an outspoken advocate of standards-based development.

James's articles

  1. Good Users and Bad Passwords

    It’s getting more common for sign-up forms to validate the format of passwords, and then give visual feedback on the password’s content or strength.

    You’ve probably seen Google’s signup form, or something very like it, which is actually quite a good example (and I’ll talk about why in a moment):

    A popup balloon which contains a meter indicating that the input password has good password strength.

    You might also have seen examples like this being suggested and used on the web:

    A bullet list of criteria indicating that the input password is at least 8 characters and contains lowercase letters, but does not contain uppercase letters, numbers or punctuation.

    The idea of having that checklist is to reduce friction for users, by providing specific feedback on the format that’s required, rather than simply rejecting the password on vague or unspecified terms.

    But it’s still a bad idea, however well it’s implemented, because it propagates a misleading view of what constitutes a good password.

    To understand this issue, we need to begin by understanding how a password’s strength is determined.

  2. When JavaScript Feature Detection Fails

    Once upon a time, browser detection was the stock-in-trade of JavaScript programmers. If we knew that something worked in IE5 but not in Netscape 4, we’d test for that browser and fork the code accordingly. Something like this: But the arms-race was already well underway when I first joined this industry! Vendors were adding extra […]

  3. We Can’t Rely on Color

    James considers the flat UI design trend in accessibility terms, and especially how it affects the use of color to convey information.

  4. The Dark Shadow of The DOM

    Shadow DOM is part of the Web Components specification, and is designed to address the encapsulation problems that plague some kinds of web development. You know the kind of thing — if you build a custom widget, how do you avoid naming conflicts with other content on the same page? Most significantly, how do you […]

  5. Is Generated Content Actually Content?

    James looks at examples of how CSS generated content is used, as well as practical details of how it’s implemented in browsers and assistive technologies, concluding that generated content isn’t content at all.