Month: February 2005

  • Usability and the Harris Teeter’s self-checkout carousel

    “Self-service checkout systems have to be flawless. It only takes one bad experience to create an an ex-customer” – Gotcha! The Problems With Self-Service Checkout Systems, Baseline.com

    Four bottles of Harris Teeter seltzer, slab-o-jarlesberg lite, some rice-cakes, box-o-ZipLoc, I’m ready to check out and head home for a relaxing Sunday evening … that is until I ran into one of them automated, U-Scan, self-service checkout carousel contraptions. I press the “Start Here” icon on the screen and then obediently swipe my Harris Teeter VIC savings card key fob thingie … I carefully remove a 33.8 oz bottle of sodium-free, caffeine-free mandarin orange seltzer so as not to tip the hand basket … which is too large for the surface provided for me at the convenient self-service checkout robot. I swipe … nothing … nothing … nothing.

    Clerk walks up and tells me I need to start over again and swipe my key fob again. I look down the aisles and think I might have a better chance with a human … no luck, only 2 lanes and backed-up by other individuals avoiding an interface with frustration.

    Back to a different machine to “Start Here,” card swipe, and then again with the bottle – only now my wife is there to make sure the basket doesn’t teeter off the squirrel-sized perch. Nothing happens. My wife tells me I’m not doing it right, but I look at the scanner and I can see that someone with some sloppy milk has fouled the scanner. A different clerk walks-up, yanks the bottle from my hand and holds it over the scanner – waits two seconds, completely still – two seconds later – beep – he walks away without saying a word – his disdainful body language screaming ‘moron.’

    I call over to him “do I have to do this [wait 4 seconds routine] for each item?” He looks at me then looks down at his command and control console ignoring me. So like a good monkey, I also hold a bottle over the scanner in stop-action animation style similarly simulate the clerk’s wordless instructions to successfully get it to beep after another 5 seconds of my life have been wasted due to a dirty scanner.

    Having already tried to get the help of the clerk both in word and with a kind wave, I drop the seltzer into the bag – hoping the thump will finally get the clerk’s attention so he’ll at least give me some Windex and a paper towel to do the dirty work myself – after all, it’s not like Harris Teeter isn’t already paying me to do their work. The clerk briefly gives me an admonishing glance then finds something else important to look at.

    More slow-motion scanning until I get to the rice cakes. I scan them, put them in the bag and get “please wait for assistance.” To me its clear that the 3.52OZ of the Quaker Rice Snacks didn’t register on the anti-theft scale. Instead, said clerk startlesmy 5-year-old daughter – putting his hands on her shoulders and asks her not to touch the carousel – which she wasn’t doing. An action towards a defenseless member of my family that might have earned said individual a whole new checkout experience had I not been a peaceable man of God.

    I take the rice cakes out and place them in the bag with a bit more velocity than usual. That worked!

    Now comes the bananas – of course I have to squint at the screen and look for a picture that doesn’t display anything as common as the banana. Instead have to guess “miscellaneous fruit” out of a choice of 5 or 6 other blurry and overcrowded 150 x 75px collages of tropical delicacies with not-so-descript black labels against a dark green background.

    Finally the ZipLocs. I’m almost done but what I didn’t see was that as I was scanning the box, my wife was simultaneously removing the bananas into a second bag. Again, “please wait for assistance,” again the clerk walks over with his arms again aimed at my daughter’s shoulders – she cowers towards mommy until I bellow not to touch her and shoot him an expression I haven’t conveyed since riding on the double-G train through the bad parts of Brooklyn at 3 PM some twenty years ago. The young man sulks away, unsure of why I’m upset.

    So what has this got to do with Church websites?

    Glad you asked, it all boils down to customer-centric, servant-hearted usability. If your church website forces your readers through a similar set of flaming hoops, then you can expect fewer return visits and emptier pews. For just as I’m inclined to take my shopping business across the street, so too may seekers dissatisfied with your online presence take their gifts and talents elsewhere.

    For example, in doing some research I found an interesting pattern. Trade magazines tout these self-service checkouts and time-savers, sometimes quoting happy housewives as they breeze through the checkout line at Jeff Gordon speed. Yet when I add the word usability to my search phrase, I find several articles and comments bagging on the coupon belching behemoths, along with one post by a clerk whose job it is to “monitor four simultaneous transactions, handling problems, making change, monitoring security, teaching the newbies, helping the eternally clueless …”

    Hmmm … so that’s how they perceive me? Perhaps that’s why Harris Teeter has at least for the duration of our transaction hired me, an experienced and hopefully better-paid systems analyst/usability expert to do their job? But I digress. Point #1, don’t treat your users like idiots. They’re usually better trained, better educated and have more of a clue than you think – but even if they’re not, they’re still the ones who put the money in your paycheck … or collection plate.

    Along those same lines – work to solve the customer’s problems – don’t tell them yours. The HT clerk had no business touching, my daughter let alone accuse her of something she didn’t do. His job was to facilitate my shopping experience, not make me feel like a moron nor my daughter feel like she was a ‘bad girl.’ Train the people who maintain your church website that the customer comes first – or at least remind them that machines were made to be the servants of men and not the other way around.

    Third, keep your equipment (and systems) maintained, clean and in good working order. Yes, I know the real reason we have self-service checkouts is because the one time cost of $24k + 4k in annual maintenance is still cheaper than hiring someone at $10/hour … it also cuts down drastically on theft, however there is no excuse for not keeping these machines working in top shape. I don’t mean to cry over spilt milk, but many, if not all of my frustrations could have been averted with some basic period maintenance. At least put a timer on the software that bugs the clerk to check the scanner after several consecutive failed – or overly long scan attempts.

    Fourth, spend some money on usability testing. I didn’t even get into the screens, but there are several stupid ‘Split-Focus‘ things like “Yes/No” buttons top-to-bottom that asks if you have any under my shopping cart, immediately followed by “Yes/No” buttons left-to-right asking if I have any coupons, followed by a matrix of colored buttons representing about 12 different payment types. Be consistent, in color, in fonts, in layout and in verbage. Similarly, do some other smart things like not asking me to press “Start Here” and then scan my card. Initiate a shopping transaction as soon as I scan my card. Likewise, after about 7 or 8 times, learn my language preference and default to it.

    I could go on along these lines, but I found several other articles that describe the usability issues in far better detail than I have time or space. For example, check out the experience of a usability expert over at ElectronicInk.com who evoked an AMEN out of me when he/she wrote:

    “The other day, I had to pick up a few items from the grocery. I was with my 4-year old son, I was in a rush and I thought that I would save a few minutes by using the new computerized self-service check out lines. The experience was nothing like I expected it to be…

    …I have enough stress in my life without being made to feel stupid at the checkout line in a grocery store!”

    Of course my favorite find was the following snarky comment on the topic at the “Ravings of an Intermittent Fool:”

    “I have not used – and WILL not use – a self-checkout aisle, until the stores provide me some sort of incentive (say a 10-15% discount on my entire purchase). My reasoning is that they are making ME do the job of the cashier, but they are still charging the same price as if they were paying a cashier. Until they spread the savings around, I will stubbornly stand in line to have my purchases rung up by a store employee.”

    Here are some other interesting articles on the topic:

    How about you? Like’m, hate’m, think they’re poorly designed? And would someone please tell me why these machines don’t use the hot-babe voice that came equipped with the computer on the Star Ship Enterprise (yes, I know, shopper demographics .. )?

  • Using .htaccess to deal with a recent flood of trackback ping spam

    “Holy smokes, I’ve been hit!

    My comment spam ‘secret code’ filter is working like a charm – no spam in weeks, but now they’ve decided to spam through trackback. The other day I had two new trackback pings on older entries, both spam. This morning I had 135, all spam. Yikes. So, later today I’ll be deleting away, but it will take a while…” – Salguod.net, February 01, 2005

    Updates 2
    Had to make some changes, the spammer decided to ‘teach me a lesson’ by adding healyourchurchwebsite to his referrer. I’ve tightened that up – and in the process, also snarfed some information from him/them – and am now in the process of filing a formal complaint to the Feds. Take note to the sections in yellow where my examples include healyourchurchwebsite…

    The Problem
    Like many of you, I noticed a spike in Trackback Spam pointing to various card-shark subdomains at terashells.com, chat-nett.com and other domains that are sure to change on a daily basis.

    First thing I noticed: the same crap coming in from a variety of anonymous proxies. This mean blocking by IP would quickly become a full-time job. As a stop-gap, I employed a girthy but quick-n-dirty .htaccess solution offered at Aaron Logan’s Loblogomy blog.

    I knew I’d have to find a more efficient approach, I also know that Mark Pilgrim’s ‘How to block spambots …” was causing some other issues on my server because I suspect my server is configured slightly different than his. This happens.

    Still, I didn’t want snoopers like the one I saw from BranDimensions.com, not that I’m hiding anything, but they’re not paying me for my bandwidth even though they profit from it. I needed a solution to solve my short-term trackback spam issue, and take care of my long-term no-pay no play policy regarding the commercial abuse of my bandwidth.

    The Not-So-Final Solution
    With not all that much searching, I found that Parker Morse of Flashes of Panic offered an elegant .htaccess approach that would get me 98% of what I needed. Ina post entitled ‘A little meanness,’ Morse employs a Blocking Referer Spam – mod_rewrite technique developed by Ed Costello back in May of 2004.

    The (obligatory) Warning
    Before we go any further, I need you to understand that while this is an excellent approach, it is not without its dangers. Dangers made clear in an absolutely must read, related post entitled “Killing referrer spam,” Caveat Lector offer this excellent advice:

    BE AWARE: YOU CAN BORK YOUR WEBSITE WITH THIS. I’ve done it. (In fact, I did it two minutes ago. Go me.) How will you know your .htaccess file is borking your site? Well, usually, when you browse to your weblog’s URL you’ll get a “500 Internal Server Error” page of some sort instead of your beloved weblog.

    Always, always, always keep a last-known-good version of your .htaccess file! If you’re using FTP to place your .htaccess file and you bork your site, you just upload the last-known-good file, and you’re golden.

    Or in my case, working from a jailed ssh session I was able to do the following:

    wget http://www.flashesofpanic.com/htaccess.txt -O htaccess_parker.txt
    pico htaccess_parker.txt #see modifications below#
    cp .htaccess htaccess_02feb05.txt
    cp htaccess_parker.txt .htaccess

    The Modifications
    After downloading Parker’s text file version of his .htaccess file, I gave it a quick inspection and modified the following line:

    from:
    SetEnvIfNoCase Referer .*flashesofpanic\.com.* !spam_com

    to:
    SetEnvIfNoCase Referer “.*(healyourchurchwebsite|deanpeters) *” !spam_com

    The script also needed to be modified because I found some problems when trying to enter a post using my crufty old version of MovableType, so I had to add a line to Parker’s otherwise excellent approach. A problem also described in Laurabelle’s Blog article “Die spammers die!“. So after adding a few more drug names to the kill list, I immediately followed with another line of code:

    SetEnvIfNoCase Referer “.*(phentermine|diet-pills|p …
    SetEnvIfNoCase Referer www\.healyourchurchwebsite\.com\/cgi-bin\/mt/mt\.cgi.* !spam_ref

    I suspect this fix was necessary because the way the .htaccess file is set-up, everyone is considered a spammer until we say they’re not. More on how-to modify and the mechanics of how this all works can be found over at Caveat’s column.

    Finally, you may want to block the user agent CandyGenius has identified in this delicious post which asserts:

    The trackback spammer is leaving the same signature as the comment spammer. It’s the same guy. Use the code above to block it all. (psxtreme & freakycheats but that will change tomorrow.)

    Testing
    A quick-n-dirty test of this is to Google your domain using one of the forbidden words. This is because that word will now appear in the referrer header from Google and you should be able to block yourself. For example “healyourchurchwebsite poker.” Not the most fool-proof test, but close enough for government work.

    Now if I could just get rid of those irritating 414 generators trying to hack into an IIS server … which I obviously don’t use … I’m sure there’s an .htaccess solution out there.

    Likewise, let me know if you have improvements or patches … I’d be interested in seeing them.

    Update 11:54 AM
    It is becoming evident that this trackback spamming is less about advertising, and more about denial of service. For about 2 hours this morning, my server was under attack – the information below thwarted all but two trackbacks out of several hundred attempts. In the meantime, I am pondering whether or not I should enforce my terms of service and provide the spammer a bandwidth test using a variation of the following wget command:

    while [ true ]; do wget -r -nd –cookies=off –cache=off –proxy=on –delete-after –user-agent=”all your trackback spam is sucky” “http://online-poker.chat-nett.com”; done

    However, if this is about denial of service, and since the spammer is abusing several anonymous proxies, it could be that the owners of the URLs are also innocent victoms. Your thoughts?