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. Parsing an ISO datestamp

    The fifth article in the small-and-sweet functions series is a follow up to the previous article, which showed you a simple function for creating an ISO datestamp. The previous article noted that this format is not supported by some older browsers as input to the Date constructor. This article will show you a reciprocal function, […]

  2. Accessibility in Modern Interfaces

    Some of the things being done with JavaScript today are truly amazing. The Internet itself is still young, yet it’s been through several evolutions in its short history – most significantly perhaps, is the explosion of incredible Web applications that came in the wake of AJAX. There was a loser though, and that was accessibility. […]

  3. Creating an ISO datestamp

    The fourth article in the small-and-sweet functions series introduces a function called datestamp(), which uses various JavaScript Date methods to produce a UTC date-string in the ISO 8601 format, like “1991-08-06T08:30:00Z”.

  4. Practical JavaScript Accessibility

    This article will show you some simple things you can do right now, to make your JavaScript more accessible. This is not bleeding-edge technology, but stuff we’ve been doing for years. This post expands on our introductory article, “JavaScript Accessibility 101.”

  5. Removing Useless Nodes From the DOM

    For the third article in this series on short-and-sweet functions, I’d like to show you a simple function that I find indispensable, when working with the HTML DOM. The function is called clean(), and its purpose is to remove comments and whitespace-only text nodes.

  6. JavaScript Accessibility 101

    There was a time when JavaScript Accessibility simply meant ensuring graceful degradation when JavaScript was unavailable. But, since the explosion of Ajax and Rich Internet Applications, JavaScript isn’t just used for non-essential usability enhancements. JavaScript is now the core of web-based applications, so when we talk about JavaScript accessibility today, we mean that the JavaScript […]

  7. Why Would You Write Your Own CMS?

    Stepping into the ever-raging debate about which is the best CMS, James Edwards looks at the case for writing your own custom solution. With recent hindsight he discusses why he chose to write his own CMS, and then goes on to outline the benefits — and the drawbacks.

  8. Test for Empty Values in Javascript

    The second article in our series covering short, but sweet, functions discusses the problem of testing for empty values. The function in question is called empty(). Similar to the PHP function of the same name, it takes a variable or property and tells you if the value is empty. The definition of empty depends on […]

  9. Adding Micro-Constructors to a Modular Design Pattern

    Recently on JSPro I wrote about a modular design patterns, with four different member types providing a high-degree of flexibility over how a script is organised. In this follow-up article, I’ll be looking at a way of extending that pattern by adding micro-constructors, public functions that are object constructors, so you can have multiple independent […]

  10. A Utility Function for Padding Strings and Numbers

    Welcome to the first post in what will be an ongoing series of articles which looks at a single JavaScript function — something small but powerful, that does one thing well. To kick the series off, this article focuses on a function for padding values with leading characters. This type of function is particularly useful […]