Archive for October, 2009

Upgrade advice for those considering Windows 7

I was quoted in an article over at IT Expert Voice that pooled advice from hardened IT Veterans on the process of rolling out a new OS in a business environment. There’s plenty of great advice on the actual act of a rollout — test-test-test, schedule for downtime, etc. — but obviously the timing of the article coincides with the recent release of Windows 7, and is directed at IT folks considering an upgrade.

To that extent, I urge all you IT pros to ignore everything else in the article (wink) and follow my advice, which is to wait.

Find more details in the article.


Website installing desktop applications

There’s a new post on the Fwd:Vault blog discussing a new website I found that makes installing and updating the most common desktop software a breeze. Check it out for a review as well as some program suggestions to get started.

In blog meta news, I know that comments were broken for a while. That issue has been resolved, and I apologize if you had a tough time finding the non-existent comments section.


Ads as entertainment: Office Max Rubberband Man

I was reminded today of Office Max’s classic series of commercials set to the tune of Rubberband Man by the Spinners and starring Eddie Steeples who now stars on the television show My Name Is Earl. I absolutely loved these commercials when they came out; you can’t help but dance in your seat with that happy song and Steeples’ fantastic physical dexterity.

A great advertisement is one that propagates itself. Make it funny, engaging, insightful, interesting, and people will willingly pass it along for you. So many marketers complain about the inability to keep peoples attention. You can still keep it, you just can’t deliver crap anymore.

Case and point: I’m writing a blog post about the Rubberband Man series, I readily found all the commercials online, including a “Making of” video, and it’s been over two years! That’s damn good advertising.

Enjoy some positive vibes before you get back to work.

Office Max Rubberband Man

Office Max Rubberband Man — Back to School


Get domain out of any URL string (yes, really)

It’s a common problem with no single right answer: extract the top domain (e.g. example.com) from a given string, which may or may not be a valid URL. I had need of such functionality recently and found answers around the web lacking. So if you ever “just wanted the domain name” out of a string, give this a shot…

<?php
function get_top_domain($url, $remove_subdomains = 'all') {
  $host = strtolower(parse_url($url, PHP_URL_HOST));
  if ($host == '') $host = $url;
  switch ($remove_subdomains) {
    case 'www':
      if (strpos($host, 'www.') === 0) {
        $host = substr($host, 4);
      }
      return $host;
    case 'all':
    default:
      if (substr_count($host, '.') > 1) {
        preg_match("/^.+\.([a-z0-9\.\-]+\.[a-z]{2,4})$/", $host, $host);
        if (isset($host[1])) {
          return $host[1];
        } else {
          // not a valid domain
          return false;
        }
      } else {
        return $host;
      }
    break;
  }
}
 
// some examples
var_dump(get_top_domain('http://www.validurl.example.com/directory', 'all'));
var_dump(get_top_domain('http://www.validurl.example.com/directory', 'www'));
var_dump(get_top_domain('domain-string.example.com', 'all'));
var_dump(get_top_domain('domain-string.example.com/nowfails', 'all'));
var_dump(get_top_domain('finds the domain url.example.com', 'all'));
var_dump(get_top_domain('12.34.56.78', 'all'));
?>

Most of the examples are simply proofs, but I want to draw attention to the string in example #4, 'domain-string.example.com/nowfails'. This is not a valid URL, so the call to parse_url() fails, forcing the script to use the entire original string. In turn, the path part of the string causes the regex to break, causing a complete failout (return false;).

Is there a way to account for this? Surely, however I’m not about to tap that massive keg of exceptions (i.e. just a slash, slash plus path, slash plus another domain in a human-readable string, etc).

No regex for validating URL’s or email addresses is ever perfect; the “strict” RFC requirements are too damn broad. So I did what I always do: chose “what works” over “what’s technically right.” This one requires any 2-4 characters for a the top level domain (TLD), so it doesn’t allow for the .museum TLD, and doesn’t check to see if the provided TLD is actually valid. If you need to do further verification, that’s on you. Here’s the current full list of valid TLD’s provided by the IANA.

If you need to modify the regex at all, I highly recommend you read this article about email address regex first for two reasons:

  1. There’s a ton of overlap between email and URL regex matching
  2. It will point out all the gotcha’s in your “better” regex theory that you didn’t think about

Text is more important than anything

Any “decent” website is going to do the following:

  • look pleasant
  • work in most browsers
  • load in a timely fashion
  • present approachable navigation layout

These are all the base requirements, as far as I’m concerned. What distinguishes any site from any other is the information it provides, aka the copy (“copy” ~ “text” in the publishing world, for you non-logophiles). The words you put on every page determine who’s gonna find it, read it, share it, love it, hate it. If you focus on nothing else on your site, the verbage would have to be number 1. A few key words at the right place and the right time make everything go very well or very badly.

I think the most important place to choose your words carefully is in the error messages. A user is never more vulnerable than when something goes wrong. Fault has absolutely nothing to do with it. Something screwed up, and now they feel some amount of stress. Leave that to fester long enough, and every user will go elsewhere. I have nothing to back that up save my own experience, but I guarantee its 100%, across the board, no exceptions.

You can easily remove all their stress by presenting them with the right information and steps to move forward. Obviously there’s quite a bit of usability and process logic to consider here, but it all starts with the text. Make the situation clear while simultaneously providing a clear path to a solution, and you’ll be ahead of the majority of sites out there.

Looking for more technical help with your error messages, I found this Think Vitamin post to be a great starter.

Now a recent personal example of copy going horribly wrong. The following excerpt comes from an email from DirecTV, after I signed up for automatic payments…

We have successfully received your credit card information, and your automatic payments should begin to take effect within one to two billing cycles. You can view the details of your Auto Bill Pay information at any time at directv.com by visiting My Account…

So what am I supposed to do until automatic payments “take effect?” Hope that my bill gets paid and I don’t get smacked with late fees? I have absolutely no doubt that some IT flack who had a hand in the automatic payments system penned this little jewel, trying to express to the end user the act of their data propagating through the cluster or some similar garbage. That or a lawyer got their hands on the confirmation email text before it was approved. Either way, this information does nothing but stress the user out, and create even more questions.

Your copy defines the user and their surroundings on your site. The right words put them at ease, the wrong ones can get them lost. Wield your power carefully.


Post update post

I’ve been keeping up with the release of presenter videos from the Future of Web Apps London 2009 event. If you never read it, or only caught my initial post, you may want to check back on it, as they’ve released 3 or 4 more presentations.

Also since Twitter is sporting the fail whale again, I thought it a good time to rehash my previous complaints about the service.


Do business like the Phillies do baseball

I don’t watch professional sports, but I was really glad that I decided to watch NLCS game 4 last night. The Dodgers maintained a lead through the second half of the game, and got the Phillies down to their last out in the bottom of the 9th, with runners on first and second. Jimmy Rollins was the final at bat, and hadn’t been spectacular at the plate. To make matters worse, the umpire’s strike zone seemed to be a moving target, with pitchers and batters having a say on the matter throughout the night. Needless to say, hopes were dim.

Then Jimmy does this.

It certainly wasn’t the 11-0 routing we saw on Monday, but the ending was far sweeter.

We see this situation in our businesses all the time, don’t we, startups? I’m sure more than a few of you would say you feel like Jimmy on a consistent basis, perhaps even further down in the count.

At some point you’ve got to quit analyzing the route you’ve taken. Some of it was you’re doing (Jimmy didn’t jack any homers that night), some of it wasn’t (there are eight other players). That’s alright, It doesn’t matter what happened to get you into this situation.

Own and live the moment. Accept that you’re herenow — and do everything you can to work the situation to your favor. If you’re still at the plate, you still have a chance.

[Update: Embedded video was removed due to dumbass MLB copyright complaint. Only one is a link on their site, and they won't allow remote embedding. I want to share your product, your story, on my site, and you whine about copyright? Are these companies really this dumb? I feel another post coming on...]


Future of Web Apps London 2009 video index

The Future of Web Apps conference is so right up my alley it’s almost stupid that I couldn’t attend. Web development with a focus on business: customer service, driving traffic, marketing, sales… It’s essentially the event for geeks who want to go from the basement to the corner office. Fortunately, Ryan Carson and the team at Carsonified are kind enough to freely distribute some the presentations made at this year’s London event.

I couldn’t find an index of all of them, and I wanted to watch them all in chronological order, so here you go. If there are videos for the presentations I’m missing (here’s the full presentation schedule), please let me know so I can link them.

Taking your Site from One to One Million Users by Kevin Rose

Introducing Atlas: A Visual Development Tool for creating Web Applications by Francisco Tolmasky

Start-up Metrics that Matter by Dave McClure

Branding and Marketing Essentials for Your Web App by Alex Hunter

Now is the Time to Cash in on Your Passion by Gary Vaynerchuk

The Future of HTML5 by Bruce Lawson

You-Centric: The Future of Browsing by Aza Raskin

The Future of the Cloud by Simon Wardley


What are the pre-reqs for a Nobel Peace Prize?

As you probably heard, President Obama was awarded this year’s Nobel Peace Prize. According to the Nobel Prize website, the award was granted to him “for his extraordinary efforts to strengthen international diplomacy and cooperation between peoples.”

Forget the right/left politics for a second, and just look at the schedule here. Per the Nobel Peace Prize Committee’s selection process

The Committee bases its assessment on nominations that must be postmarked no later than 1 February each year.

Bolding my emphasis. This means that Obama was nominated no more than 12 days after being inaugurated. Prior to his election, the only international exposure he had was the July 24th Berlin speech during his campaign.

I honestly don’t see how any President would qualify within that time period. Am I the only one who finds this a little silly?


Change timezone to GMT in Debian

If you need to change the timezone of a Debian system, your searches will probably tell you to use the tzselect utility. That will only change the timezone for the server temporarily. Use that command and then run this:

cat /etc/timezone

See how the timezone didn’t change? Left alone, the system will revert to the timezone stored in /etc/timezone at next reboot.

Plus, tzselect does not offer the full compliment of possible timezones. I recently needed to change my server to GMT, for example, and tzselect does not include an option for it.

Instead, Debian has a less-publicized tool that will solve both problems…

dpkg-reconfigure tzdata

Run that command and it will permanently change the timezone for the system, and includes options for all sort of obscure timezones. I wouldn’t consider GMT to be obscure, but maybe that’s just me.

Took me forever to find this searching earlier today. I don’t know why this isn’t more widely noted, but there you go.


Next Page »