Surge in UX jobs?

Is it just me, or is there a surge in job openings in the information architecture and Web usability fields?

Over the last couple months, I’ve been contacted about or seen 8 or 9 job openings. Today, for instance, I received a message about a usability specialist position for a really well-known IT consulting firm. And, get this, the position is in Lansing, of all places. That’s highly unusual, as far as I’m concerned. And it is good news.

And, an information architect position in Ann Arbor was just brought to my attention. It is for Fry, Inc., which is a Web design consultancy that has been on my radar since 2001 or so. They’ve done some great work, and it is one of the few firms that have a presence in Michigan that I’d highly recommend. (This position, incidentally, looks like a lot of fun. It isn’t just IA work, but business strategy, consulting, and ongoing usability research. Oh, joy!)

There have been other similar positions that have been sent my way on the East coast, West coast, and some other Midwest city (in Ohio? Indiana? I forget.)

Anyway, a few years ago when I was more actively looking for a gig, there was diddly-squat in my field. I hope this surge is an indication of an increasing business value placed on the user experience field on the whole.

Poetry voice, radio voice

I was a disc jockey, once upon a long time ago, at a radio station.

During the training, my supervisor spoke about on-air voice and how to speak with a microphone. He pointed out that many people adopt a “radio voice”—you know, exaggerating the highs and lows, changing the rhythm of how you speak. Even taking on some strange, subtle accent. Watch that you don’t develop that, he said. Use your own voice, just be sure to speak clearly.

That was great advice for that job, and it stuck with me.

So, I went to a poetry reading tonight, and the reading was excellent. Really, really good poetry, and strong voices.

If you’ve ever been to a poetry reading, you’ll hear the affected tone that it seems like most poets read with. It’s the “poetry voice,” like the “radio voice.” Do the lines end with a falling pitch or a rising pitch? (That was a joke. You’re supposed to read that last with a rising inflection, as it is a question. I know: I shouldn’t have to explain it.)

I think the voice is picked up by emerging poets who listen to their idolized poets read, and they cannot help but emulate and then ingest the poetry voice. I’ll bet that’s the same way that some radio voices come to be.

I’m making too much of the poetry voice that I heard this evening. It was subtler than I’ve heard before, and I got used to it quickly. Really, I was delighted by the great poetry being read by its author.

(Out of respect for the artist, I’ll not name the poet, seeing as how I’ve critiqued the reading style.)

Revision: Using Javascript to add instructive text for input and textarea form fields

This is a code update to a prior post.

The Javascript I had posted earlier fell short in one important arena: when you submitted the form without entering your own text, the form would send in the instructive text. It should instead have erased that text prior to the form submission.

Further, in retrospect, the code was trying to do too much. It is enough to simply set a class of blurred and then remove it, instead of replacing it with a class of sharpened.

So, with that in mind, here is an updated set of Javascript that can be used to insert instructive or suggested texts into form fields, like text input fields or textareas.

The code

To start with, we need some scripts to add and remove classes values from an element. The one caveat when doing this is to remember that you can have many class names assigned in a single class attribute. So, when adding and removing class names, you have to be sure to leave pre-existing class names alone. Instead of writing these functions, I did a quick Google search for “Javascript addClass” and found these handy Javascript functions, hasClass, addClass, and removeClass, at openjs.com. I’ll let you look there for that code.

With those class manipulation functions in hand, I rewrote the setSuggestedFormText function down to this.


/* setSuggestedFormText takes 2 arguments, mode and field.
/ mode is either set to put in place the suggested text
/ clear is to remove the suggested text
/ the set mode also assigns adds a class of blurred
/ field is the value of the ID attribute of the input or textarea element
/ April 13, 2008, Davin Granroth, granroth@gmail.com.
*/
function setSuggestedFormText(mode, field){
var key = document.getElementById(field);
var defaultText = key.title;
if(mode == 'set'){
if(key.value == '') {
addClass(key, 'blurred');
key.value = defaultText;
}
}
if(mode == 'clear'){
if(key.value == defaultText) {
removeClass(key, 'blurred');
key.value = '';
}
}
}

This function takes two arguments: mode and field. The first, mode can be either of set or clear. The one puts in the suggested text from the title attribute of the element, and the other clears it out. Each checks to see if the value of the field has been edited, in which case it respects the user input.

The next step is to set up the function which triggers this function at the appropriate events. There are three events at which the function needs to be called: when the page loads, when focus is put on the field, and when focus is removed from the field. Here is the code for setUpSuggestedFormText.


/*
/ field is the id of input or textarea field
/ parent is the id of the containing form element
*/
function setUpSuggestedFormText(field, parent){
if(document.getElementById(field)){
// This will set the text on page load
setSuggestedFormText('set', field);
// These 2 events will toggle between the set and clear modes
document.getElementById(field).onblur = function(){
setSuggestedFormText('set', field);
}
document.getElementById(field).onfocus = function(){
setSuggestedFormText('clear', field);
}
// Clear the text before sumitting the form.
document.getElementById(parent).onsubmit = function(){
setSuggestedFormText('clear', field);
}
}
}

This setUpSuggestedFormText takes two arguments: the id of the field element and the id of its parent form. The id of the parent is used in the trigger for the form submission. I had considered using a parentNode property to find it, but depending on the markup in the form, it may be multiple parentNodes up. So, this is less code. However, if someone wants to write up the function to recursively walk up the parentNode tree to find the parent form’s id, I’d be happy to incorporate it.

The last step is to call the setUpSuggestedFormText once the DOM has loaded in the page. One slightly intrusive means of doing this is to put a Javascript setUp function just before the closing body tag. You can, of course, choose to use something like an addDOMLoadEvent (Google for that) function. Here is what the setUp function looks like in the Javascript.


function setUp(){
setUpSuggestedFormText('to','msgForm');
setUpSuggestedFormText('from','msgForm');
}

You can download sample code which uses an illustration of a message form with from, to, and message fields. The download is a ZIP file which contains an XHTML file, a CSS file, and a Javascript file.