How to get 4.3 stars for customer service!

Coincidently, a few days after deciding to write this post, I was listening to NPR’s On the Media reporting on the problem with online reviews:

When it comes to rating products online, it turns out we’re way too nice. The average out of 5 stars for things like dog food, printer paper or boots is 4.3 and … all that kindness is actually kind of a problem.
Source

Which presents a problem: I’m about to give a positive review to Soupgiant’s host, QuadraHosting, due to their customer service, despite some major technical problems in recent months. This leads to one question: Am I being too nice?

In July, all sites on our hosting account — fortunately none of them belonging to clients — experienced an outage due to a data centre power failure.

Since then, it appears both Quadrahosting and Equinix have been working to ensure such a problem doesn’t happen again.

Another outage on Sunday Oct 12, 2009, between 8:20am and mid-afternoon, and my thoughts were that a change of webhosts was not only necessary, but probably urgent. As the outage was long enough to trigger an SLA credit, I wrote to QuadraHosting and requested a 10% credit to our account, which they subsequently denied:

Section 4a states that we do not cover loss of external power due to ‘[an] inability to obtain raw materials, supplies, or power used in or equipment’

If this was related to our internal power set up, then we could credit you, though it was the main power source that was [affected].

We apologise for this.

I responded that I disagreed with their assessment ‘as it was an upgrade by the data centre’ but that I accepted their decision. Rather than leave it at that, I detailed my real concerns which was rather more than the $2.99 I was hoping to get back. My concerns are:

…that since the external / power company outage a couple of months ago, I’ve found that my server is going down more frequently. I don’t know if the timing is a coincidence, but the result is I no longer am able to recommend you to my clients.

(Pro tip: at no point did I call them thieves, or worse, reality TV contestants)

Rather than leave respond with a cursory, ‘thank you for your comments,’ Brendan, who was handling my case, responded:

We appreciate you taking the time to provide us with some feedback. The upgrade was related to the power of the Data Centre. Please note that we do purchase power from them and this is considered as a third party source.

The upgrades to the systems in recent weeks were planned and announced to all our customers.

With this in mind, we have decided to give you credit to cover one week of your hosting plan.

Hopefully you will see major improvements in our systems once this power issue has been completed.

I believe there will be a similar incident in two weeks which we be very similar to the power outage we have recently experienced.

It seems there are major power upgrades at the data centre related to expansion. We will announce this to our customers when we have more information.

The end result, after some fine customer service, an explanation of how they obtain their power, and a little bribery, is that I’ve decided to stick with QuadraHosting while they and their data centre fix the power issues. If the problems continue after the upgrades, then I’ll reconsider my options.

Having dealt with a number of hosts and the kind of customer service that involves a student reading a script, I do think good customer service at a host is worth sticking around for. While their servers at the moment are a little up and down, the customer service outweighs that disadvantage.

All in all, I give QuadraHosting a 4.3 star rating for their customer service.

Including WordPress’s comment-reply.js (the right way)

Since threaded comments were enabled in WordPress 2.7, most themes include the following line in header.php

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

This code checks if the visitor is browsing either a page or a post and adds the JavaScript required for threaded comments if they are.

I prefer a slight variation

<?php
if ( is_singular() && comments_open() && get_option('thread_comments') )
  wp_enqueue_script( 'comment-reply' );
?>

My variation checks if the visitor is browsing either a page or a post, if comments are open for the entry, and finally, if threaded comments are enabled. If all of these conditions are met, the JavaScript required for threaded comments is added.

If you run your wp_enqueue_script calls in functions.php, as I do, this is the code to use:

<?php
function theme_queue_js(){
if ( (!is_admin()) && is_singular() && comments_open() && get_option('thread_comments') )
  wp_enqueue_script( 'comment-reply' );
}
add_action('wp_print_scripts', 'theme_queue_js');
?>

The call is added to the wp_print_scripts action as is_singular and comments_open are unknown during the init action.

 

Note: I’ve¬†written a plugin to make the comment-reply JavaScript unobtrusive, it’s call Rapid Comment Reply.

Career Stats: Shane Warne the Musical (.com.au)

Very generously, the producers of Shane Warne the Musical have given me access to their website stats for the purposes of this post.

All statistics below relate to the period from opening night – December 10, ’08 – until mid March ’09; during this period there were 25,377 visitors leaving 96,867 page impressions.

Of the site statistics I have access to; SWTM provides an example of a site with a cross-section of visitors, from multiple age groups and backgrounds. This is all conjecture on my behalf; Google Analytics is yet to report sex, age group, and economic circumstances (but they’re probably working on it).

Caching on the Google AJAX Libraries API

Using the Google AJAX Libraries API, there are several options for specifying the version numbers of the library you wish to use, for example the following URLs all point to the latest version – at the time of writing – of jQuery.

  1. http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js,
  2. http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js, and,
  3. http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js

The first uses the latest release in the version 1 tree, the second the latest in the version 1.3 tree, and the third the release 1.3.0 exactly. What I found interesting – and discovered accidently – is the browser caching times for each of these urls; the first two are cached for an hour, the third for twelve months.

The vastly different caching times make perfect sense, in the first two cases, the developer is expecting an upgrade to the latest version, and doesn’t want to wait up to twelve months for it; in the third case the developer doesn’t expect an upgrade so an extended caching period has no effect.

To take full advantage of the Google servers, as described in a recent article by Dave Ward, the caching times suggest it’s best to specify the full version of the library you wish to use.

google.load Method – Update Jan 24, 2009

Why I will not be dropping support for IE6

Increasingly I’m reading of web developers deciding to drop IE6 from their list of supported browsers, usually, because of its creative interpretation of CSS standards, besides IE7 is over a year old, and, IE8 about to be released.

I’ve decided to continue support for IE6 as it’s still in wide use – especially in corporate environments – and, I don’t think it needs to take a lot of work to develop for. I’ll say that again, I don’t think IE6 is as bad it’s sometimes made out to be.

JavaScript Equal Height Columns

The desire for equal height columns in a CSS layout is nothing new; there are many solutions available, some use JavaScript, others use CSS with negative margins, and then, there’s the faux columns method using background images. All of these methods have their place as perfectly valid solutions, and, depending on the situation, may be the best solution available.

Base JavaScript File

Upcoming posts on JavaScript will include references to functions in my base JavaScript file; rather than explain these functions each time, they’ll be detailed in this post for future reference.

There are many pre-written JavaScript examples and functions available, so it’s important to note that all of these functions have been written by others, some include slight changes; all moved to the namespace PWCC, as you’ll see in the source code.

Review – Everything you know about CSS is wrong!

During the week I read Rachel Andrew and Kevin Yank’s Everything You Know About CSS Is Wrong! At a little over 100 pages it’s a concise explanation of CSS tables and how they will – and an argument why they should – change the way in which web developers work.

EYKACIW! begins by explaining how today’s web developer has hacked CSS to do things it was never designed to do, in much the same way that we hacked HTML tables in the heady days of the 1990s; floats, faux columns, negative margins, positioning, and, several more tricks now used as a second nature all get dishonourable mentions.

Published
Categorized as General Tagged

Don’t start with a reset.css

Earlier this year, Jonathan Snook wrote an article on why he doesn’t use a reset.css in which he referred to Eric Meyer’s reset, a short time later, Eric Meyer responded with an article of his own. Unlike many discussions on the web, it wasn’t a mudslinging match, but a sincere discussion of the tools available to web developers.

My initial thoughts were that a reset style sheet, combined with a base style sheet, was a helpful place to start any web project as it reduces the incidence of unexpected results. I thought it was important for the developer to have her own reset and base styles; blindly adopting someone else’s reset and base style sheets will just lead to a different set of surprises.

Published
Categorized as Code Tagged