Customer Experience

Are you Selling Winter Tires or Customer Experience?

Note: This article was re-editing and re-posted on the Macadamian blog.

In Canada, right around when the first major snowfall hits, all the last-minute drivers bring their cars into Canadian Tire to get their snow tires put on. Pop Quiz: If you were managing a Canadian Tire, what would you say you’re selling?

The obvious answer is “winter tires”. Someone brings their car in, you put some winter tires on it, then the driver picks it up. This is the naive answer. Yes, ostensibly you’re trading tires for money, but what you’re really doing is providing a service. Anyone can put winter tires on cars, but the people who will be most successful at doing so will be the people who take this opportunity to show off their customer experience skills.

This year, I needed new winter tires and new rims. Let me tell you about how this went for me at Canadian Tire, and as I go, explain some of the ways in which they could have sold the experience of getting winter tires, rather than just some rubber and steel.

I did a bit of research first to make sure I knew what I was doing ahead of time. I got my tire size, the bolt pattern for the rims, looked into which brands of tires they sell and figured out which ones I want. Then I called the store’s automotive department. The conversation was pretty straightforward; juggle the auto-answering system, tell the tire guy my specs, and hear that yes they have tires and rims in stock for me. Good start!

I drive over to the store about 20 minutes later, and walk up to the automotive desk. I mention that I called not long ago, and the guy asks me for my phone number, then does some work on his computer, then asks me what size the tires are.

Why didn’t the guy on the phone enter the tire size into whatever record the behind-the-counter guy pulled up with my phone number? In fact, I’ve been here several times before, including 6 months ago to get my old winters thrown out and summers put on; this data should have all been there already. This would have saved time and a lot of trouble if I hadn’t known my specs off the top of my head.

After mentioning that the rims need to match a 4-bolt pattern and making sure I point this out because the 2008 model of my car is much more popular and has a 5-bolt pattern, the service rep disagrees (!) and insisted we look it up in some book. Lo and behold, it’s a 4-bolt.

Why didn’t the service rep trust me? Again, this could have all been avoided if they’d recorded this information last time they worked on my tires. This is at least the third time I’ve mentioned my tire information to this store, shouldn’t it be worth writing down?

After asking what brand of tires I would like (it didn’t occur to him that I might not know? good thing I did) the service rep informed me that I would have to leave my car there for a day and a half for them to get the tires installed (why didn’t the guy on the phone warn me about this?), then told me the price and that they’d call me when my car was ready. I pulled out my wallet, but he said payments are done when the car is picked up.

By waiting until pick-up, I have to come back into the store and wait in line again to get to the register. Not efficient. I should have been able to complete the transaction right then and there.

The next day, about five hours past the estimated time the service rep gave me, I still hadn’t received a call. So I reluctantly called the store, dialed through the auto-answering system, got transferred from Auto Department: Tires to Auto Department: Service and was finally told that yeah, the car is ready to be picked up.

Gee, thanks for letting me know! Why did they not call me when it was ready like they promised? Why did I have to jump through so many hoops to get a simple answer? If the store is this busy, and calling people back is too much of a hassle, maybe it’s worth investing in some sort of “dial a number/enter your license plate/find out if your car is ready” system.

I ended up walking to the store because it was late and I had no one around to drive me out of their way in the middle of a snowstorm. File this in the over-and-above category, but if they know I don’t have my car, maybe they could run a service offering to pick me up and drive me to the store? I’d gladly have paid them to avoid a 40-minute walk, knee deep in snow. Hell, if they’d let me pay for the tires when I bought them, they could have driven my car to me!

So I get there, half-frozen and covered in snow, wait in line to get to the register, pay for stuff I technically bought yesterday, and they hand me my keys, telling me the car is in the lot. Thanks. Have you seen a parking lot during holiday shopping season? This particular location shares its parking lot with a Starbucks and a Best Buy. It’s massive, completely full, and somewhere in there is my car, covered in a foot of snow.

Rather than having me wander about aimlessly looking for my car, they could have simply noted where they had parked it and told me that when I’d picked up my keys. Better still, they could run a valet service where an employee finds my car, brushes off the snow, then brings it to the front entrance.

I now have my car back with new winter tires and rims, which are working great. So in one sense, you could say that Canadian Tire sold me some great winter tires. That’s true, but what they didn’t even attempt to sell was a great customer experience.

To sum up, the next time I need new tires I’ll be looking for a store that:

  • keeps the guy on the phone and the guy behind the counter in sync.
  • warns me right away if it will be a long wait to get the tires installed.
  • trusts me when I know my specs, or better yet doesn’t expect me to.
  • keeps a history of previous work they’ve done on my car, and uses it to avoid unnecessary questions.
  • eagerly explains the differences between the various tires it carries.
  • lets me buy and pay for tires in one transaction.
  • calls me back when it says it will.
  • offers an easy way to check if my car is ready.
  • brings my car to me, or at least tells me where it’s parked.
  • sells great tires.

Update Much?

Wow has this ever been a busy month. I dare say this was the busiest November of my entire life. I’ll be resuming my steady stream of Cutting-Edge Blog Posts and Tech World Commentary soon, but as filler an insightful look into what’s been keeping me busy, I present you with a run-down of some of the more notable things I’ve been up to lately:

Google Wave Hack-a-thon

I’ve been pretty quiet about Google Wave since it came out, which is odd because it’s a technology I fully endorse (ok, I did have one post about the invites). The Ottawa Wave Group was kind enough to hold their own “WaveCamp” hack-a-thon with an open invitation to local technophiles. It was a great time and really strapped my boots for the wonderful world of Wave development. They have posted an event wrap-up for the curious and there are some slides there I’d definitely recommend checking out if you want to start developing for Wave but don’t know how/where to begin.

I’ll definitely have a post or two about Wave in the near future, so keep your eyes peeled and your RSS reader at the ready.

Bringing High Tech to High School

I’m involved with something called the Ottawa High School Technology Program. I should really have a full post about what the program is and what I do there (I’ll make a point to have one up soon) but the jist of it is that enrolment in high-tech fields at the college/university level in Ottawa has been way down in recent years, which is worrisome for a city that has been nicknamed Silicon Valley North. Seeing this problem, a number of local high-tech companies and organizations got together and started cooking up ideas for how to increase enrolment, and the result was a program that takes industry representatives (such as myself) and sends them to local high schools to help students develop real, working software for the XO laptop. It’s always great to see what the students are capable of with a little guidance, and every semester we’re amazed with the results.

November is a significant month for the program because at this point the fall semester students have been ramped up on the XO and its target audience, branched into small groups, and started on actual development. It’s a very fun time for them and for those of us involved, but also very busy when added to an already packed work schedule!

And then there’s my Day Job

After a few extra-busy weeks, the project I’m working on at my nine-to-five has finally hit private beta. While it’s not something I can really talk about (at least not until it goes GA) nor something that would be of much interest to most of you (it’s a very niche product) it does feel good to hit such a major milestone after many months of hard work.

With things cooling off a bit at work, I should be able to get some neat posts up soon. A lot of neat things have been traversing the net the past few weeks, and I’m bursting with arguably valuable input.

Distraction through Gaming

Busy times call for stress relief, and I often rely on gaming to fill those ever-crucial relaxation needs. Here’s a list of what I’ve been into lately:

  • Typewar is a fantastic game that teaches you how to identify popular typefaces. We need more games with this blend of education and fun.
  • Ka-Glom is actually the first game I’ve ever kept
    on my iPhone. It’s an extremely fun and highly addictive tetris/bomberman mash-up made by local mobile gaming firm Magmic. Apparently it’s also widly popular in Japan.

  • Left 4 Dead 2 was released a couple of weeks ago, and on time no less. Some of you may remember the train-wreck of a release that brought us the demo, which we can all learn a few things from. It’s an absolutely wild time, but by now I’m sure you know whether or not this game is for you.
  • Torchlight is something I’ve heard fantastic things about. I haven’t actually gotten around to playing it yet, but I absolutely will as soon as I can spare some time for it.

What’s been Keeping You Busy?

I’d love to hear about it; leave a comment!

Software Development

Adobe “gets” Integration

In the world of software development, I submit that the hardest thing to do is to continue developing your code after it has been integrated into someone else’s code, which they are also continuing to develop.

The challenge here is that you and this other person are now co-dependent. If you break the build, it’s broken for both of you, and vice-versa. If your next feature requires some "almost finished" feature from the other party, your deadline depends on their deadline. This isn’t so bad with literally you and one other person, but what if you’re part of a large team working on one product, and the other person is an entirely different team working on a different product altogether, with different priorities and different deadlines? That’s just asking for headaches.

Adobe has some kind of magic handle on how to do this really well. Let’s start from the beginning: for a while, they just did Photoshop, which was pretty neat. Then they added Illustrator, a great Photoshop companion. Interoperability was a bit rocky at first, but now it’s a piece of cake moving a design from one tool to the other.

Then from the opposite direction, they released Flex Builder. Web mark-up integrated with Flash. Adobe gets it right again, bridging the gap between two like technologies. But do you know what made things really interesting? Catalyst.

With the release of Catalyst, suddenly everything has to work together. Designs made with a combination of Photoshop and Illustrator have to be compatible with Catalyst, which has to play nice with Flex Builder, which relies on Flash. This is a lot of complex products interacting with a lot of complex technologies; it’s an absolute mess of dependencies. And you know what? They made it work. Seamlessly.

Take a moment and appreciate how awesome that is. Imagine what would happen if they wanted to add a new feature to Catalyst. First, there are the normal issues that may come up in Catalyst:

  • Will this break any of Catalyst’s existing features?
  • Does the user interface match the rest of Catalyst?
  • Does it introduce any new bugs into Catalyst?
  • Does it open up any regressions in Catalyst?
  • etc

Then, you have to consider what this will do to any incoming Photoshop/Illustrator design files:

  • How will new design files take advantage of this feature?
  • How will existing design files react to this feature?
  • Does the underlying design file format have to change?
    • If so, does that cause any bugs/regressions in Photoshop or Illustrator?
    • Who is expected to report/fix/test these issues? The Photoshop/Illustrator guys? The Catalyst team? Some combination of both?
  • Besides that, is there any work at all required on the Photoshop/Illustrator side?
    • If so, do the Photoshop/Illustrator guys have time budgeted for it?
    • What parts of the Photoshop/Illustrator changes depend on what parts of the Catalyst changes?
    • Can any of the Photoshop/Illustrator work be done in parallel with the Catalyst work? How much?
    • How will this affect the deadline?

And of course, that same list applies to how this feature affects the content Catalyst exports for Flex Builder. And that’s just the obvious dependencies &#8212 it gets even worse:

  • What if a team can’t fulfil their side of the changes? Reschedule? Cancel? Release anyway?
  • If one team is late, what does that mean for the others? What if several teams are late? What if everyone is late?
  • What happens if the release cycles between any of these products don’t match up?
    • Can we release Catalyst with its changes before the changes to Photoshop/Illustrator/Flex Builder/Flash are released?
    • What if a user upgrades one product but not another? For that matter, how backwards compatible is this for outdated versions of any of the products?
      • Aren’t there thousands of possible version combinations? How many should be tested? Who’s managing this?

And this is just what I’m thinking of as I type. I can’t even imagine what a mess it must be to coordinate features in all these applications. How do you even measure what effect a new feature in one product will have on any of the other products’ thousands of features?

I don’t know how Adobe does it, but they do it and they do it well. If they can keep this up, they’re going to be around for a very long time.

Gaming Software Development

Two things we can learn from the Left 4 Dead 2 Demo release debacle

1. How not to delay a release

The thing about deadlines is that sometimes, even when you’ve done everything you possibly could, they still get missed. It’s not always your fault, but nobody cares; once it’s late, everyone will blame you. And if you’re Valve, they will be loud and bitter and increasingly annoying.

But that doesn’t mean it’s ok to be stupid about how you postpone the release.

For those who of you who weren’t sitting on the edge of your seats from Tuesday afternoon until Wednesday evening, here is what happened:

  • Oct. 23rd 11:30 PST — Valve announced that the Left 4 Dead 2 demo would be available on Oct. 27th for anyone who pre-ordered the game.
  • Oct. 27th (early morning) — The release was scheduled for noon PST.
  • Oct. 27th noon PST — The release was postponed until 1pm PST.
  • Oct. 27th 1pm PST — The release was postponed until 2pm PST.
  • Oct. 27th 2pm PST — The release was postponed until 3pm PST.
  • Oct. 27th 3pm PST — The release was postponed until 11pm PST.
  • Oct. 27th 11pm PST — The release was postponed until Oct. 28th at 6am PST.
  • Oct. 28th 6am PST — The release was postponed until 1pm PST.
  • Oct. 28th 1pm PST — The release was postponed until 2pm PST.
  • Oct. 28th 2pm PST — The release was postponed until 3pm PST.
  • Oct. 28th 5pm PST — The demo was finally released.

This demo has been heavily anticipated for weeks, so needless to say people were very excited about it. After the first delay, most people were probably still too excited to care. After the second and third, the general populace was getting annoyed, but still had faith. But by the time it was delayed until 11pm (that’s 2am for us east-coasters!) people were starting to get quite upset. What was Valve doing that suddenly needed an extra five hours after already pushing the deadline by one hour several times? The comments on the official steam community group were shut down due to the sheer rage of Valve’s loudest fans.

When they missed the 11pm deadline, that’s when things got bad. Imagine living on the east coast and staying up until 2am to play the demo the moment it’s released only to find that shortly thereafter, Valve delays it until the following morning. Then waking up that morning only to find the deadline pushed until the afternoon!

And it didn’t end there. Even in the afternoon, Valve promised one more hour twice, then stopped updating anyone altogether before finally releasing the demo two hours later after a grand total of 8 missed deadlines in under 30 hours.

Now the proper way to handle a missed deadline is to give it one solid push, not to string it along for a day and a half. If Valve had come out on Tuesday and said “Sorry everyone, but we’re making some last minute changes to our servers and the demo won’t be ready until Thursday” then sure there would have been a bit of backlash, but nothing like what actually happened. Since this is the first push, the community can still have confidence that the new deadline will be met. And imagine how excited everyone would be when on Wednesday evening Valve releases it earlier than they had cited!

This was a serious mistake on Valve’s part. I’m not sure what went wrong or why they kept thinking they could fix it in under an hour, but they should have known better. They should have given it a big estimate with plenty of buffer in case more things went wrong — this would have been less stressful for everyone, and if it really only took an hour to fix, they could’ve just released it anyway.

2. Why it’s important to make awesome products

Because it makes people forget about things like a botched release date.

There’s no denying that the demo delivers. The new content is fantastic, and there’s just enough of it to give gamers a sense of what the full game will contain. It’s all kinds of fun, and the nature of Left 4 Dead means that the two levels available will be worth playing plenty of times — easily enough to satiate the cravings of many between now and the full-game release. A smashing success!

But back to my point. The blog coverage for the Left 4 Dead 2 demo between the afternoons of October 27th and October 28th was completely negative. Anger about the constant delays, blind rage directed at Valve, and users feeling that they could no longer trust their favourite publisher. How’s the blog coverage now? Very positive — everyone’s talking about how great the demo is. A couple of days’ worth of gushing is already drowning out all the bad press from the release. In a week, when the demo is opened up to the public, will anyone care that the pre-ordered version was a touch late? Of course not! It’s here now, and it’s awesome.

This is the power of a fantastic product. The power to overthrow 2 days’ worth of bad press and replace it with accolades.

What’s your take?

Can we draw any other lessons from this experience? Will Valve? Are you still pissed about how long it took the demo to come out? Leave a comment — I’d be glad to hear about it.

Web Design

What is a Font Stack?

Font Stack (n) : A list of several fonts provided from a website to a browser via CSS from which the browser will chose a font with which to render the associated text. eg. font-family: Helvetica, Arial, sans-serif;

This is a pretty simple concept to understand. To show text on screen, the browser needs to use a font, and the way web developers tell the browser which font to use is by making a font stack like the one shown above. The browser will go through the list from left to right, and when it finds a font that it can use, it renders the text using that font. So you put the ideal font first, then the next-best-thing that looks pretty similar, then maybe another back-up or two, then a default like serif or sans serif, which essentially tells the browser to use whatever default font it has of that type.

I was sifting through WordPress themes the other day when I stumbled upon:

font-family: Georgia, sans-serif, Verdana;

Let’s take a moment to go over the various atrocities committed by this abomination:

  1. Georgia is a serif font, while Verdana (and obviously sans-serif) are sans-serif fonts. It’s purely nonsensical to include serif and sans-serif fonts in the same stack — you either want serifs or you don’t.
  2. Browsers choose fonts from left to right, remember? And sans-serif is one of those default fonts we talked about, so it’s guaranteed to always be supported by all browsers. This means that the Verdana in that stack will never be used, ever. There is absolutely no reason to include another font after a default.
  3. One of the notable characteristics of Verdana is that it’s very wide. The wider the font, the less characters will appear on a single line. It’s a terrible idea to include a wide font, such as Verdana, in the same stack as a comparatively thin font, such as Georgia (or Arial, which is a more common mistake) because now the width of your lines, the length of your page, and the general look and feel of your text vary greatly depending on which font is used.

Horrible! But all is not lost; here are a few simple guidelines to make sure you don’t create anything similar:

  1. Never mix serif and sans-serif fonts in the same stack.
  2. Always include a default font, but always put it at the very end.
  3. Always test each font first to make sure your lines break in about the same places and that your text still has the same general shape.
  4. Never guess — the internet is a wonderful place with plenty of resources for the aspiring typophile, use them!
Web Misc

What Makes for a Good Domain Name?

A domain name is the unique, human-readable address of a website — the stuff in your browser’s address bar after “http://” but before any subsequent “/” characters. This blog actually has two domain names:

Both redirect to the same content, but each serves a different specific purpose (which we’ll get to in a moment). The idea behind a domain name is that it represents where your website “lives” on the internet, so you’ll be telling it to a lot of people and it plays a very important role. In particular, a domain name should be related to you and easy for people to remember. Each of these qualities is quantitative, and varies from domain to domain.

For this blog in particular, both domain names are easily related to me — they’re my name. Where they differ if in how easy they are for people to remember. There are essentially two high-level ways for someone to find out about a domain name; to hear the domain name spoken out-loud, and to see the domain name written down or on screen. These are different situations which have different requirements:

  • A domain name that is easy to hear out loud should sound very simple and clear. No weird characters, nothing too clever, no ridiculous abbreviations.
  • A domain name that is easy to read should “parse” well. This means that even a quick glance is long enough to comprehend what it says.

I chose to use two domain names for this blog because I couldn’t find one name that matched both those qualities. On the one hand, is very easy to hear out loud. “Dan Menard dot com” or “my name, dot com”. But I hate how it looks; it’s very hard to read, because the “nm” bit kind of obfuscates the whole thing. The other,, is the opposite. It’s easy to look at an instantly read, but it’s awkward to say out loud “Dan dash Menard dot com” doesn’t exactly roll of the tongue, and I’m sure people would confuse the dash for an underscore or a slash. By choosing two domain names, I have the best of both worlds:

  • If I’m talking to someone in person, I tell them my blog is at the pleasant-sounding
  • If I’m sharing my blog in writing (email, Twitter, etc), I write because it is easier to read.

What do you think? Do you have a blog? Would it benefit from a second domain name? Leave a comment and share some thoughts.

Web Security

Are Google Wave invites to blame for recent Hotmail/Gmail phishing attacks?

I have no idea how the recent Hotmail/Gmail account compromises actually took place. What follows is a simple hypothesis based on a somewhat embarrassing anecdote.

Like many of you, I am currently waiting for an invite to Google Wave. Imagine my joy when this came across my inbox one Tuesday morning:

Subject: Google Wave invite

Congratulations! You’ve been invited to Google Wave by your friend {a close friend of mine with a Wave account}. Click the link below to register:

Still half asleep (and now bursting with joy!) I open the link, suddenly thinking it’s strange that Google would use a url-shortener to send me a Wave invite. As you may have guessed, what was waiting for me was not a desirable HTML5 product but was in fact a YouTube video of Rick Astley performing Never Gonna Give you Up — yeah, I got rick-rolled a year after rick-rolling people was cool.

Now I’m fortunate that my dear friend (it was davefp) has a sense of humour – the truth is I technically just fell for a phishing scam, and I’m lucky there was no malicious intent involved. This got Dave and I talking; phony Wave invites would be a very opportunistic way to steal account credentials from eager Gmail users, and could be what caused the recent account compromises.

Let’s look at the reasons why I was inclined to trust the link in the email I received:

  1. I was expecting an invite
  2. It looked like an invite
  3. I was half asleep
  4. I was overjoyed

I was expecting an invite. There are thousands upon thousands of Gmail users anxiously awaiting Wave invites. There are thousands upon thousands more that have no reason to expect an invite but would still take one if one were offered to them. This is an exciting product, after all.

It looked like an invite. Sure the shortened url was one possible give-away, but even that could have been improved by masking the url with text that looked like a safe url, such as Add a couple of Google images and maybe a formal signature and this could have been a lot closer to foolproof.

I was half asleep. Admit it, you’re not always paying attention when you check your mail either. We check our email late at night, early in the morning, on our mobile phones, while we’re eating or playing with a pet; there are all kinds of distractions that may contribute to not paying full attention to routine tasks like checking email.

I was overjoyed. Don’t discount this one &#8212 human emotion is what sells a social engineering attack such as phishing. I had a rush of feelings and thoughts flying through my head as I clicked a link I barely looked at: who do I know that already has wave? I hope it’s awesome! who will I invite? I should thank Dave for inviting me! where’s the link for that two-minute introduction video I saw the other day?

Of course it could just be a coincidence that Wave launched a few days before a high-profile phishing scam, and it could be that I’m the only one stupid enough to fall for a prank like this, but at the very least I think it’s conceivable that a phishing attack based on Google Wave invites could have snagged 30 000 users or so from a group of major email providers.

Am I out of my mind? Have you heard a better explanation? Share some thoughts and leave a comment.

Web Technology

Does Chrome Frame do more harm than good?

There’s been a bit of buzz around the web lately after Google proposed a solution to the IE6 problem in Chrome Frame. While it seems like a great idea up front, there’s actually quite a bit of controversy behind whether or not this is a valid solution. Read on for a quick summary of anything you might have missed, followed by my own take on the matter and a chance to share yours.

Let’s get you caught up

Internet Explorer 6 is a browser that was created for Windows XP and released in 2001. Due to the massive popularity of XP and the widespread adoption of the Internet Explorer name going into this millennium, it’s still used today by a non-ignorable portion of web users. This is a problem for web developers, because it’s often necessary to bend over backwards in order to get new and exciting web products to perform reasonably in a browser that is about half as old as the world wide web itself.

While developing Wave, Google had to come up with a solution for IE6, and decided to do something novel by creating a plug-in for Internet Explorer which replaces the entire web page with an instance of Google Chrome, a very modern browser capable of rendering the latest-and-greatest the web has to offer. This “Chrome Frame” is then used to render the intended page, all completely transparent to the user who is still using and looking at Internet Explorer.

Now obviously this was met with a bit of backlash from Microsoft, who was none too happy seeing Google inject its Chrome rendering engine into Redmond’s (in)famous browser. They pointed out that this makes IE less secure, which Google obviously disagrees with, and some blogs noted (correctly) that Chrome Frame breaks accessibility features in IE which is kind of a big deal. Further supporting Microsoft was Mozilla (!) who referred to the Chrome Frame solution as &#8220browser soup&#8221.

Of course there are many proponents of Chrome Frame as well; it is a very convenient way to handle the growing discrepancy between IE6 and the modern web, and in some cases that benefit alone will outweigh the issues described above. There’s an article about how Chrome Frame will affect the corporate world which has sparked some very interesting discussion in the comments (which are now more enlightening than the article itself) &#8212 I highly recommend taking a look.

My thoughts on the matter

I think an underrated aspect of this debate is that this is about users, and what they expect from a browser. It’s not a technical problem, and it shouldn’t be met with a technical solution. Google is essentially offering a patch that will encourage users to continue browsing the web with a broken browser. What Google should do is inform users of the problems with IE6 and explain the benefits of a new browser with a very strong recommendation to upgrade. This will result in more educated users using better browsers, which is far more valuable to Google and the web as a whole than more users still clinging to IE6.

What’s your take?

There are a lot of different ways to look at this issue. Share your perspective and leave a comment!