Customer/User Experience Feed

November 06, 2012

Windows Phone 8 Development on Mac - All the Gotchas

After failing with my attempts to kickstart my Windows 8 development I decided to give Windows Phone 8 a try. Creating Windows 8 Developer account was straight forward compared to the Windows 8 experience however setting up the development environment on my Mac turned out to be painful. I will save you all the steps, which involved reinstalling Mountain Lion, setting up Bootcamp partition, installing Parallels etc. and resulted in few dosens screenshots with errors and exceptions in Visual Studio. Let's get straight to the point.

Is your machine ready for Windows Phone 8 development?

First of all, if you want to do Windows Phone 8 development (the same is true for Windows 8 development), you need a Windows 8 machine. In all fairness this is no different than iOS development... however there are the gotchas below :)

One of the most important things that you need when you do device development is the Emulator. If you don't want to spend all your money buying every possible Windows Phone the Emulator will be your solution for testing. Now, the problem with Windows 8 Phone development is that the Emulator uses the Hypervisor build into Windows 8. However in order to run Windows 8 Hypervisor your development machine (actually the CPU in your machine) needs to support SLAT. If you need more details you can go check Wikipedia's article about SLAT but briefly it is a new virtualization technology available in the modern CPUs.

Here are the official requirements for Windows Phone 8 SDK posted by Microsoft.

If you are like me and you bought your Mac awhile ago it may not be equipped with a "modern" CPU. Here are the steps you can use to check whether you will be able to run Windows Phone 8 Emulator on your Mac:

  1. Install Windows on your Mac
    If you have Windows already running on it it is fine. Doesn't need to be Windows 8, Windows 7 will work just fine. You can use Parallels or Bootcamp or whatever else you want. The sole purpose of this step is to have a way to run the program from Step #2.
  2. Download Coreinfo
    Coreinfo is a small program written by Mark Russinovich that checks low level hardware components.
  3. Run Coreinfo and check the output
    Here is the interesting part. If you have older Intel based Mac (or Macbook Pro like me) your machine may be equipped with Core 2 Duo processor that doesn't support SLAT. General rule is that Intel i-processors support SLAT while everything before that doesn't. Wikipedia has a good list of all Mac models and their CPUs.

For me here is how the output from Coreinfo looked:


I have Core2 Duo P8600 and although it supports hardware virtualization I wasn't able to run Windows Phone 8 Emulator (as well as the Hyper-V in Windows 8). Interesting though Windows 8 Simulator runs fine although I thought is is based on the Hyper-V too. The best I managed to achieve was the following:

Win8Phone Designer Issue

Interestingly before upgrading from Lion to Mountain Lion I was able to at least see the designer working. Now this is gone though.

Should you use Parallels or Bootcamp?

If your Mac passed the CPU test the answer on this question is quite simple - you must use Bootcamp (or at least for now).The reason is that Microsoft Hyper-V doesn't run in virtualized environment hence your only option is to have Windows 8 installed on a separate partition using Bootcamp.

My personal opinion is that the approach Microsoft took (again) will prevent some of the potential developers to start development for Windows Phone 8 (and Windows 8) as you can see from the following articles and blog posts:
Developers praise Windows Phone 8 SDK, but virtualization and upgrades rankle
Windows Phone 8 SDK what a Big Time Flop
Windows Phone 8 Emulator on MacBook Pro – No SLAT

There are two articles that I found explaining how you can use VMWare Fusion to run Windows 8 on your Mac. I doubt it will be successful if your machine doesn't have SLAT support but maybe it is worth looking into them:

Good luck with your Windows (Phone) 8 development :)

November 01, 2012

I was so close to like Windows 8... so close!

Everything was great (kind of)! Build conference started lame - with a T-shirt and a shopping tote but SteveB fixed the things in the next hour by giving every one of us a Surface, Lumia 920 and 100GB Skydrive. In the last two days Microsoft made pretty good job to excite me about Windows 8 and Windows Phone 8, and after listening to Josh (Twist)'s talk about Azure Mobile Services today I decided to give it a try. Yes, I decided to develop my first application for Windows 8 (and maybe Windows Phone 8).

I went to the Microsoft Company Store to buy a copy of Windows 8 and Visual Studio 2012 with the vaucher that every Build 2012 attendee was given. Windows 8 was on the shelves but there was no sign of Visual Studio 2012 - not in the physical nor in the e-store. Nevertheless, using my MSDN account I spent 1/2 h downloading and another hour installing and I was able to get Windows 8 and VS2012 running in Parallels on my Mac. Impressive! Windows 8 was running much faster than Windows 7 and was not killing my machine. So far so good!

The first thing I did was to go to Windows Store Apps Dev Center and to sign-up for developer account (forgot to mention that SteveB also lowered the sign-up fee from $99 to $8 for the 8 days following the Build start). And here is when my enthusiasm vanished in just a minute.

Clicking on Get your developer account now send me to the following screen:

Error "We don't recognize the computer you're using"

First, I had no idea what content I am supposed to see but at least it was clear that I should do this from a machine that has the name LAJOLLA. I used to have a Windows machine that was called with that name but now my Mac is called LAJOLLA so I decided to give it a try. Hehe, silly! I must be kidding! Of course it didn't work! My assumption was that the machine must be a Windows one.

OK, no problem! I can easily rename the newly installed Windows 8 VM to LAJOLLA and give it a try. Well... Not really! Although I renamed the machine to LAJOLLA when I login to the page above I still see the same error. Must be something else!

My only option is to choose "Not using this computer anymore! Update your info." So I clicked on that and was asked whether I want to delete LAJOLLA. Hell, yeah! I want to create my Developer Account as fast as possible! But... SURPRISE! The info will be deleted in 30 days. For security reasons! Ugh, why? I am not sure I understood but whatever, I can go and add my brand new Surface and my newly installed Win8 VM as trusted PCs and I should be set to go. Nope! Those will be added ... guess when... in 30 days.

OK, let's go back and undelete the LAJOLLA PC and see what can we do to get my developer account set up. Because I WANT MY WINDOWS 8 DEVELOPER ACCOUNT to develop my first Windows 8 application. 

Although I did the deletion from the same browser session when I clicked on Cancel the deletion I got the following:

Now I am hosed with no trusted PC and no way to create Windows 8 Developer account for (at least) the next 30 days.

It is not about the $91 that I will save. It is about the 1h frustration and anger against the PM who invented this feature. I am wondering - what is the point of the 30 days wait time? Can't you just send me an email, or SMS on the phone, or ask me the security question? What will happen in 30 days more than in a day? Except that you may lose one more customer. 

Update: I just chatted with one of the Windows 8 people present at the Build conference. The suggestion I got was to create new Microsoft Account (or LiveID or Passport or whatever the name of it is) that I can use as my development account. He mentioned that they had similar issues because the MS Account team does not allow more than 5 machines connected to it (yes, ONLY FIVE!) and they use this internally to overcome the limitation.

Update #2: One thing that I forgot to mention is that although I renamed my newly installed Win8 to LAJOLLA when I access the Windows Account UI I still see the old name of the machine. Hence I thought that if I create new Windows 8 VM and name it LAJOLLA it may work (yeah, I really thought that this feature is not only lame but also badly implemented). However, after doing the above I ended up with the following:

Screen Shot 2012-11-01 at 9.02.25 PM

Well, this proves that it won't be easy to cheat the feature but as a user... I really don't get it! I am acessing the site from a machine with name LAJOLLA - why can't I change the security info? And what the heck does it mean that LAJOLLA will be deleted on 11/30/12 and added on 11/30/12?

Update #3: Here is also transcript of the chat I had with the Windows Store app development support representative:

Please wait for an agent to respond. You are currently '1' in the queue.

Privacy Statement

You are now chatting with 'Steven'.

Toddy: hi

Steven: Hello Toddy, my name is Steven. How can I help you?

Toddy: I am unable to create Windows 8 Developer Account

Toddy: there are some issues with my Windows Account I don't have anymore access to my trusted PC and I am unable to add any other PC as trusted for the next 30 days

Steven: Have you already completed the developer registration or is this preventing you from being able to actually complete the registration?

Toddy: This is preventing me from completing the registration

Toddy: It comes out immediately when I click the registration link

Steven: Unfortunately the 30 day waiting period cannot be bypassed. You may want to create a different Microsoft account and go through the registration with the new account. Unfortunately you won't be able to link your Windows Phone developer registration because the publisher name will be locked to your Microsoft account that is already registered as a Windows Phone developer account.

Toddy: Why is this waiting period required?

Steven: This is to protect the owner of the account if the account access has been compromised. The 30 day period is the time provided for the user to realize that they no longer has access to the account and to report the problem.

Steven: In a case where the account has not been compromised, the user must wait the 30 days, as this process cannot be bypassed or expedited.

Toddy: Can't this be done via email confirmation or phone SMS or something more advanced than 1 month waiting period? I do own the account and I can change everything like password etc.

Steven: You must already have a different method that has already been confirmed on the website below:


Steven: If you do have a method listed there that had previously been approved, you can use that method to confirm your account.

Toddy: All other methods will be added also in a month

Steven: Unfortunately if the methods hadn't previously been added, you won't be able to verify your account through this authentication process until after the 30 day reset period.

Toddy: So! What you are saying is that there is no way for me to become Windows 8 Developer today correct?

Steven: Unless you were to use a different Microsoft account to go through the registration. This will require you to use a different publisher name than your Windows Phone developer account. If you have a business account, the publisher name must match your business name, so you would need to wait for the 30 day reset period to expire.

Toddy: Well, what can I say not very welcoming for new Windows 8 developers.

Toddy: Thank you for your time

Steven: You're welcome, sorry I could not do more to get you into the registration today.

Steven: Have a nice day.

Chat session has been terminated by the agent.


July 05, 2012

Can't teach old dog new tricks! (yes, I mean Windows 8)

As we all know Microsoft is recently trying to get into the 21st century by embracing new UIs, standards, Open Source and whatever else is fashionable. I have to say that I admire what Scott Guthrie is doing with Azure but unfortunately he seems to be the only one (I think) who does something in the right direction. For a long time the mantra in Microsoft was "We will make it and they will come" or more accurately "We will push it in your face and force you to use it until you give up and start using it." You would think that this has changed but...


Today I was looking at prototyping some WebSockets work using .NET and had to get my hands on IIS 8. The easiest way for me was to spin up Windows 8 VM, enable IIS and install Visual Studio 2012 on it. This was maybe my 5th encounter of using Windows 8 and I can say that I hated it yet again. Yes, there are "significant" improvements from the first build that came out of the Build conference (at the time Windows 8 was unusable virtualized or over Remote Desktop Connection) but that doesn't mean that it is any closer to a pleasant experience. It took only few minutes for me to get frustrated and if I didn't have to do it I would have given up on the 5th click.

I had to do four things:

  1. Change my IP address to static
  2. Enable IIS as a feature
  3. Enable Remote Desktop access to the machine
  4. Install Visual Studio 2012

Don't make me think

I am a big fan of Steve Krug's Don't Make Me Think approach but with Windows 8 Metro interface I find myslef wondering what will happen if I do X or what my next action should be. Here are few of my points:


Windows 8 Search

I am perfectly aware that you can trigger search by just typing something on the keyboard but I am always reluctant doing this for one simple reason - my brain is trained that when you type something you type in an area visible on the current screen, and not on a completely new screen. But in Windows 8 there is no such area on the home screen and you are suddenly taken to a completely new screen where you see what you have typed. To iterate my expectation for the workflow is:

  1. Give me a way to choose that I want to search
  2. Type my search terms (edit, delete, insert and whatever)
  3. Trigger the search (if necessary - instant is fine)

"Wait! Wait! You can do that in Windows 8!", you would say! "You know - the hot corners?" I will come back to this later but for now let's see what Windows 8 workflow is:

  1. Type something
  2. We drastically change the current UI 
  3. ... and show you the instant search results (i.e. make the UI change yet again)

If you translate this to real live you will see that the common sense workflow is: 

  1. Get a pen and paper
  2. Write with the pen on the paper
  3. Do whatever needs to be done with the writing

You can think of the keyboard as a pen and the screen as piece of paper. But the Windows 8 real life example is:

  1. Start writing with the pen
  2. ... and we will pop a piece of paper in your hands

As much as I wish to live in Wonderland I think we are far away from materializing things out of nowhere. Hence I think that this is unnatural and confusing. For the poor people who buy tablets with Windows 8 I am also wondering how the heck the pen (think keyboard) will materialize in their hands. "Wait! Wait! There is a way to do that", you would say. I don't care because I don't feel any desire of buying Windows 8 tablet:)


One more thing about the search functionality. It is not very clear to me what the scope of the search is. If I type on the home screen do I search only among applications on the home screen? If not, do I search application across the system? If so, why when I type "System" the system settings entry from Control Panel doesn't show up in the search results (in comparison if you type System in Windows 7 you will get it)? If the search is across the system does that include files too? BTW, are there still files in Windows 8? ;)


The hot corners

OK, let's get back to your suggestion - to use the hot corners functionality that Windows 8 offer.


Let me first ask you the following question: How do I learn about the hot corners? With the mouse it is easy! When the consumers get frustrated they start shaking the mouse (you do that too, right?), and at some point naturally the pointer will hit one of the corners. Then there is this aha-moment and she knows that those corners are magical and she starts exploring. The thing is that with tablets consumers tend to shake them when frustrated so I hope Windows 8 team implemented discovery mechanisms for such cases:)


Coming back to the mouse experience I think it is pure steal from Mac OS with very poor implementation. The most frustrating thing with it is the area that the pointer needs to hit in order to trigger the functionality. I am pretty sure that this is 1px by 1px and I can assume what the reason for that is. Imagine the following conversation in a meeeting:


Junior PM: "We need to make the area bigger so that it is easier for the users to click on it"
Principal PM: "No, we can't do that because in Desktop mode the area will cover the X in the upper right corner, or the menu button in the upper left corner, or Show Desktop button on the lower right corner, or the Start Button in the lower left corner. Oh, we don't have the Start button anymore because we need to force the users to use the Metro UI - the more they use it the more familiar they will become with it."


The next frustrating thing with the hot corners is that the functionality is not complete. For example when I wanted to configure my network I pointed the mouse in the upper right corner (which turned out to be quite tedious task in a VM window), clicked on Settings -> Networks, then I saw my network connection and... what am I supposed to do next? Neither double-ckick nor right-click helped me open the Network settings. I had to go the traditionial way by searching for Control Panel (remember, System doesn't show in search anymore so does not Network too), then opening Network Settings and so on. 


One additional thing to note here is that while Mac OS uses Spaces to either clean up your windows (show Desktop) or show you all available windows from the current app but it does not enable any new functionality that is not available from other more intuitive places in the UI. This is not the case with Windows 8 - there are no other entry points (that I could find) in the Metro UI that I can use to open the search box or the settings. I don't remember seeing the hot corners functionality in the first public build of Windows 8 (the one from the Build conference) - you can correct me if I am wrong here; but my impression is that Windows team discovered all the shortcomings in the UI and shoved those as "the hot corners". Whether this happened before Build or after doesn't matter because I think it is poorly designed experience.


Windows Metro and the Desktop

At the end I would like to go back to the value proposition of Windows 8. If you ask anybody who works on Windows why should you buy Windows 8 instead iPad the answer will be: "Because Windows 8 allows you to not only consume content but also to easily create such." This message was even reinforced by Ballmar at the Surface announcement. But after using Windows 8 for a couple of minutes you will discover that you are constantly pushed into the Metro interface, which... interestingly enough... is designed for content consumption and not for content creation. Either there is big disconnect between what Microsoft wants to deliver and what is actually delivered (remember this nice caricature about the software projects?) or I am not getting it how is it easier to create content with Windows 8 Metro interface. If I am required for every simple task to go from the Desktop view to the Metro UI and back to the Desktop view then I am better off staying on Windows 7 or Mac OS for my content creation and buying iPad or Android for my content consumption.


The whole problem here is that for long time Windows team thinks that they should create one product that will be able to satisfy everybody - enterprises, consumers, content creators and your grandma. Unfortunately such products are rarely successful (the only two I can think of are the Swiss army knife and the copier-printer-scanner one). The underlying cause though is that the people who brought you Windows 3.11, and Windows 95 and Windows 98, and... every other Windows including Windows 8 are all the same, and they think that if you force it down the consumer's throath they will swallow it. Well, maybe or maybe not. One thing is clear though - you can't easily teach them to do something new especially if this has been successful tactic for so long. Now, you poor consumers will need to swallow and learn how to create content with Metro.


What about me?

In conclusion I want to say that I have been Windows user by choice for the last 20 years. And by choice I mean I wanted to use it and have not been required to use it - I've used it at home and at work. However, I like to have choices and to make my own decisions. Looking at Windows 8 though I don't think it will be a choice of mine - neither for content consumption nor for content creation. Windows 7 and Mac OS will be my "content creation" choices while iPad and Android will be my content conssumption choices. I don't think I will need to overwhelm my brain with a mutant OS that does everything but nothing well.


October 10, 2010

3 Things Developers Always Miss... And Customers Get Annoyed With

Last week I had to deal with very interesting bug that reminded me of the common mistakes developers make. Here is the story. We use inclusion list (aka “white list”) for allowing access to users from specific domains. Everything worked fine with the initial list of domains we had, however after adding some more domains to the list users from those domains were not able to login. To amplify the problem the issue appeared to be present only in our production environment, and we were not able to reproduce it in any of our test environments. 

As it turned out the problem was quite simple. Can you guess it? Yes - trimming white spaces. Something so simple is able to turn the live of developers and testers into a nightmare but not only that - it can annoy customers like hell. In each and every project I was part of, I have seen this one repeated again and again together with two other common mistakes: case insensitive comparison and sorting in the UI. Let me elaborate a bit on all of those.

Trimming Forwarding and Trailing White Spaces

Honestly, I can’t think of a scenario where one doesn’t want to trim forwarding and trailing white spaces when user input is involved. The chances that users will add additional space while typing or paste text with spaces at the front or the end are close to 100%. From other side we are so used to software that handles such simple transformation for us that we already take it as given. Hey, we are not in the 90s anymore (or at least most of us)!

For comma or semicolon separated lists trimming the white space is a must have. The simple reason for that is that people intentionally add spaces for readability, and not trimming those will result in such silly bugs.

Here is an interview tip for you! Next time you interview a developer, ask him to read the items from comma separated list and compare it to some user input. Depending on how he does on this simple assignment you can guess the quality of your future implementation. I am pretty sure you will get very interesting answers.

Case Insensitive Comparison

How often happens to you that type your credentials on some web site and you cannot login? Then you start wondering whether you forgot your password only to discover after 5 mins after that they forgot to mention on the login screen that your username is case sensitive. Smart, isn’t it? Not really! Shift and Caps Lock keys are so close to each other and the odds that one switches to caps lock while typing are quite high. My nickname is ToddySM doesn’t matter whether I type it “toddySM”, or “Toddysm”, or “ToDdYsM” - I still expect you to sign me in. If you don’t the chances are that I will use your product less or not at all.

One note here though - make sure you don’t do case insensitive comparison for passwords. People expect passwords to be case sensitive because this is part of the algorithm to create strong password. And to give you good example for usability, Windows warns you with yellow bang when you have caps lock on on the login screen - small hint that I bet lot of people appreciate (including myself).

To expand my interview tip from above - ask the developer to implement back end for login screen. Pay good attention how the comparison of the string is done - case insensitive for username but case sensitive for the password

Sorting in the UI

Let me be clear here - it is not about sorting, it is about providing intuitive way to find the one thing one needs among tens or hundreds of others. Take for example the list of countries - if nobody bothered to show a sorted list of countries in the drop down lists every registration page on the Web would be nightmare to fill in. Unless you have special reason not to sort, and this reason is more than obvious for the average user, sorting is the your best bet to make your UI usable. Even if the default view you provide is not sorted you should give an option for the user to sort ascending or descending. 

Here an example from TweetDeck where I have few lists created. Of course, the developers of TweetDeck forgot the sorting - it is manageable (but still annoying) at the moment but can you imagine if I have more than 20 lists created (and I do plan to have more than 20).

Screen shot 2010-10-08 at 10.06.23 PM

Different example I have is the way regions are presented in Windows Azure Portal. Here is the current list:

Anywhere Asia
Anywhere Europe
Anywhere US
East Asia
North Central US
North Europe
South Central US
Southeast Asia
West Europe 

Of course the list is sorted, but is it usable? I don’t think so - If I am US customer I will expect to see all US regions to be together so that I don’t need to search for them. Here is a better choice (again sorted): 

Asia - Anywhere
Asia - East
Asia - Southeast
Europe - Anywhere
Europe - North
Europe - West
US - Anywhere
US - North Central
US - South Central

(Don’t worry! We are fixing this soon ☺)

My last interview tip - use the first list above, and ask the developer to present it in the UI.  

Development is not anymore about moving bits from one place to another - development nowadays is about the experience. I hope the tips above will help you develop better and more usable software in the future. 



    Free trial

March 02, 2009

Are Your Customers Really Being Difficult?

In today’s blog post on her blog Valeria Maltoni lists the “Top 10 Reasons Why Your Customers are Being Difficult” and on my comment that I prefer to look at the “customers” more like “client” she replied something that provoked my post. This is what Valeria wrote:

“@Toddy - however, interestingly, many businesses are set up to have transactions, keep moving people through the funnel or pipeline. This might be fodder for another post as things are changing rapidly especially in types of businesses that are evolving.”

This brought up the question how may businesses are set up to have transactions or keep moving people through the pipeline? And is this the right business model? The only one I can think of is the grocery business and even that one can lose customers if it just uses the conveyor model.

Let me give you an example. Imagine you have few choices of grocery stores to go – let’s say Whole Foods, Safeway, QFC and Trader Joe’s. How do you choose which one to go to? Here are few criteria you most probably use:

  • Closest location
  • Assortment
  • Quality (Organic food:))
  • Price
  • Brand preference

Let’s say that you are a snob and the brand preference is the most important for you. Than the financial crisis comes and you cannot pay anymore the triple price for organic food in Whole Foods and you settle on the low price (for the same organic product) in Trader Joe’s. Once the crisis passes then you go back to Whole Foods and everybody is happy – you saved money during crisis, Whole Foods got you back and Trader Joe’s made few transactions with you. This is typical for pipeline businesses – they don’t care who comes in and who goes out as long as they can sell you something. As Valeria wrote, many businesses are set up that way – they consider their success by the number of transactions, and this is the most important for them.

But what if?… What if for example Whole Foods finds a way to keep you as their customer during tough time. What if they provide you with some incentive so you receive part of your money back – whether it is a cashback, or discount coupons, or rewards card, or link to Upromise account. There are many options they can choose from. The key is they know what are you looking for.

I know that it is easier said than done. You may say: “How are they supposed to capture the feedback? Stick surveys to the apples?” Not really! But if you give me an apple I will be glad to fill in five-minute-survey for you:) Knowing me, and you, and the guy staying next to you in line they will know what they can do to keep us in their lines and not move to their competitors’. We call it “feedback loop” but the loop is not closed until the business reacts on the feedback.

I think the point here is not whether your customers have been difficult; the point is whether you know your customers and whether you adapt your business according to your customers’ needs. Here are the two questions you need to answer:

  • Is your company transaction oriented or customer oriented?
  • Which one will position you better in the long term?

February 12, 2009

How late is “late” to keep a customer loyal?

Today I received a phone call from Comcast representative responsible for our street (you know, those guys who knock on your door and offer you stuff:)). He told me that he received a list of people who are scheduled for disconnect and was interested to know whether I will reconsider my decision if he gives me discount on the rates and “more movies”. Too late!

I was Comcast customer for more than 3 years – started with basic TV and Internet and upgraded about year and a half ago to premium channels and DVR. Of course with the upgrade also my bill grew:) The only times I heard from Comcast for those 3 years where when I had problems with the service, and the only “offers” I got from them were from this type: “If you don’t want to pay for support on issues, you can pay few bucks more per month, else it will cost you $99 to get technician to your home.” At the time I thought: “OK, if I pay $2/month I will be covered for the next 4 years and I can call the technician every day:)”, and signed up. Don’t understand me wrong! It is not that I was unhappy with the service but at some point of time I got the feeling that I am not getting enough value for the money I am paying.

Few of my neighbors switched to Verison FiOS and sent mail to the neighborhood how happy they are. Few weeks ago Verison guy stopped at my house (you know, one of those guys who knock… you get it:)) and threw few numbers for the same service as Comcast + 1 more HD box + watching recordings in every room + more premium channels for the half of the price I was paying for the first 6 months and $20 less for the remaining of the year. In few words – he convinced me. Of course you should not forget the installation fee that will offset the $20 for the second half of the year but my saving was 1/4 of what I was currently paying and I got more goodies like premium channels and additional HD box.

When I called Comcast to cancel the existing service the lady was very friendly (I had problem with their callback service that really frustrated me but this on the side), and just asked me whether I will reconsider if she offers me same options for lower price. She wasn’t pushy which I liked, but she tried to keep me as customer as much as possible. Normally I am hard on my decisions and don’t look back and wonder “what if”, but after the call from Comcast today I asked myself: “What if I received a call after New Year, and Comcast offered me to upgrade my service and pay less money?” Would I consider Verison then? I don’t think so. Normally I don’t want to go through the troubles of having some cable guy at home, drilling my walls just to save few hundreds.

But the country is in financial crisis. My goal is to keep my standard of living but pay less money for it. Goal for businesses should be to keep their customers so they have uninterrupted stream of revenue. It may not be obvious but the solution is simple – if companies (or their employees) think proactively what their customers want, and act proactively to offer it, we, the customers will be happy and stay loyal. Isn’t it that what companies need – to keep existing customers and acquire new ones? In case of Camcast is really simple. If they gave me a call few weeks ago and offered me what they offered me today I wasn’t going to switch to Verison.

Here is what I would do if I was the guy who called me this morning:

  1. Every January I would call every one of my customers to wish him or her New Year and chat about their experience in the past year. Why January? For two reasons:
    • After the shopping spree made during the holiday season, people start rethinking their finances, and
    • Tax season starts in January, and people start thinking about their finances even more
  2. I will have handy all the promotions my company offers, and will go over those with my clients (yes, I would think of those people as clients and not just customers). We will work together to find a way to increase the value of the deal; for both sides. This doesn’t mean I have to give them money back. Can be rate discount, or free service for 3 or 6 months, or they may want to subscribe for more but just have no time to call our customer service. And it is not that companies don’t offer discounts – Comcast always has promotions for new subscribers, why don’t they extend those to the existing ones?
  3. Two-three months after that I will call them to ask whether they are happy with the service and whether I can help with something else.

Next year I will do the same and the year after and the year after, as long as I work for this company. If the year is bad (think recession like now) then I will be even stricter. I will not wait to hear that my customer goes to the competition before I remember that he or she is MY customer.

And one more thing: if Verison forgets about me by next year, I will switch back to Comcast… or somebody else, who knows :) We, the customers are the one who drive the economy, and should demand that companies pay attention what we want.

November 18, 2008

What is “typical” for web response time?

Very often I participate in discussions where web response times are discussed and I hear all kind of strange statements (called “crap”:)). While browsing the Web for the last 13 and so years, starting with slow (9.6Kbps) modem connection over analog telephone line and ending with quite satisfying (6Mbps) broadband one I can certainly say that I’ve build my own opinion. When I hear statement “typical page load time is 6 sec” I get really pissed off. I want to scream: “Are you nuts?!!!! 6 sec is ridicules time! Who is going to wait 6 seconds for your crappy page to load?”

I remember few years ago at SAP when we developed one of the first WebDynpro application and our prototype page loaded in… (hold on)… 20 mins. And I remember the time before SAP when colleagues of mine developed online PDF merger that presented the success page with link to the merged PDF after… (hold on again)… 20 mins (I don’t know what is so “typical” about the number 20 but they really responded after approximately 20 mins of time). Twenty minutes is totally unacceptable response time for any application (not only Web) and this examples triggered research I did years ago (SAP one is from 2003 and the PDF one from 2001) to understand what are the acceptable response times in Web space. After searching Google for the PDF scenario and reading the UX guidelines for the WebDynpro one, the number 3 stuck in my mind and I can’t get it out now.

3 seconds is the response time you should not exceed on the Web! That’s it!

Searching in Google today here is one of the top results you will receive The Psychology of Web Performance. I really like the following sentence from the post:

“Keep your page load times below tolerable attention thresholds, and users will experience less frustration (Ceaparu et al. 2004), lower blood pressure (Scheirer et al. 2002), deeper flow states (Novak, Hoffman, and Yung 2000), higher conversion rates (Akamai 2007), and lower bailout rates (Nielsen 2000).”

10 years ago when the modems ruled the world the goal was to create small pages that can be served fast via modem connection. Today we create huge pages that contains tons of images, videos, style sheets, JavaScripts, Flash and who knows what else. Some of these can exceed few hundred kilobytes. However users don’t care how big the pages are; they don’t care how many images there are on the page; they don’t care how many servers are in your web farm. Most of the users don’t understand the mechanics behind the page, and why should they? The only thing they care about is how fast your page is loaded via their 6Mbps broadband connection.

Here is my table for tolerable response times on the Web. It is based on the post above as well as on Response Times: The Three Important Limits.

Response Time Analysis
<0.1 sec I don’t think you can achieve this one on the Web (if you can, the the user’s browser will not be able to render it:)) but it is goal that you may want to pursue.
<1 sec Your page load time is great. You can continue to improve your performance but only if you don’t have better things to do.
<3 sec Your page load time is OK, however you need to keep an eye on it. You are on the border for broadband users. However if this is the load time over narrowband you should not be worrying too much.
<4 sec This is the limit for broadband users. I certainly think you have a problem if your users need 4 secs to load your pages and I will suggest you spend some time improving your performance.
<6 sec You are on the border for narrowband users. Performance should be one of the things you should be thinking already.
>6 sec You are amateur:) Your web site may still be visited but you will lose visitors (approx. half of them including myself). If you don’t care keep going.

Few more things that you need to think about when you exceed the 1 sec threshold. The first one is that you need to provide feedback showing the user you are still working on the request. Modern browsers do provide progress bar although it is not useful all the times because it spins like the hourglass in Windows without giving you any indication when the result will appear. If you go above the 6 seconds threshold you must think of ways to change the workflow or even the architecture (we managed to solve the 20 mins issues above only through major changes in the architecture).

Although performance is not the only key it is one of the keys for your web site’s success. If you target the thresholds in your performance testing you will surely be screwed because you don’t account for the unknowns and you will surely exceed the threshold. What happens next – the user moves on.

November 12, 2008

How do you respond to your customers' requests?

When I started blogging several weeks ago I remember reading a post from David Meerman Scott talking about the blogging mistakes and the worst about pages. I should have thought more before I selected Blogger as my blogging platform. David, you were right! Free service comes with its "qualities". Right after setting up my blog I submitted two post - my About post and my first post about Staples... Voila! Google decided that I am spammer and blocked my blog. You know - I got the standard message telling me that I need to submit my blog for review by a real person and everything is fine they will unblock it. I did that and verified that I am person.

My goal is not tell you that Blogger sucks but how companies interact with their customers. My request to Google went into black hole. Or at least this was my impression. My expectation was to receive e-mail (even automatic would help) confirming that my request is received and somebody will look at the issue in the next X hours... days... months. Nothing like that happened. I received no e-mail and had no idea whether my request was received, handled, denied or something else. On the next day I went back and submitted the request again... and again on the third day. Nothing. I just moved on. Blogger was not in my list of choices anymore. The feeling that my fate will be decided by the bits of a machine made me feel miserable. Will I be the lucky one who will be randomly chosen to live or will the Terminator erase any sign of my existence?

My next example is Sphinn. As part of the registration I was supposed to receive activation e-mail. For some reason I did not receive it on the e-mail I used for registration. I tried contacting Sphinn team through their Contact Us form using my registration e-mail as well as my Gmail. So far no response. However I really want to use the service and I registered with my Gmail account - surprisingly it worked.

My third example is from the offline world. I am looking for a new car and decided to check Audi Q7 from the local dealer Barrier. Everything was fine - the guy showed me the car, I did a test drive with him, we checked the inventories and so on. I had to leave and asked him to send me what is available as well as what APR they will give me. Two days after that he left me a voice mail asking me whether I need something more to make my decision. Dude, I told you what I need. Where is it? I called him back and left him also voice mail with the exactly same information. I got even a call from some girl in Barrier to ask me what was my experience and she promised to talk with the salesman and get back to me soon. I don't know what they understand with "soon" but it is almost 3 days and I still don't have what I need. And I like the car, and I want to buy it... and in this market where car manufacturer are facing bankruptcy I would expect that dealers will run after me to sell me the stupid car. Ooooh, I am just flying in the sky and thinking that "the customer is god". It seems nobody cares about the customer.

Time to stop complaining - here are my takeaways:

  • If you own a web site make sure you have good feedback channel for your visitors. If somebody sends you a message try to respond within acceptable amount of time - for me this is 24h, but it is your own choice; you may want to respond to such inquiries once a week or once a month but are you sure this person will wait so long to hear back from you. The worst thing you can do is to never reply.
  • Provide link to your feedback channel where you think people will be confused in your workflows. Perfect example for that are error pages (look at my post Staples found an easy way to lose money - AdSense) as well as product and check-out pages. Don't assume that people will go through your web site smoothly and without asking themselves "what the heck does this mean".
  • Don't hide your contact information. Lot of corporations burry their contact information so deep that users get tired of clicking and just give up. It is all for "support cost savings", "deflection" and other stupid reasons. I know it costs money to reply to every message but people get frustrated when they can't find a way to send you a message. And it is even bigger nightmare with the phone numbers. For example I needed to click 2 times to find phone number for Google, while Shpinn's one I couldn't find at all.
  • If you provide phone number (and better you do) make sure there is a option "Speak with customer support representative". In the spirit of "deflection" every company tries to hide the option for "customer representative". Normally this is the last option in the menu if at all mentioned; companies try to change the default 0 to 9 or 8 or #*723#2**# (try to remember that one:)). What happens after such tricks is that people learn and next time thy call they directly go and choose the "customer representative" option just because they are frustrated.
  • Provide alternative feedback channels or ways to contact your company. Email and phone are the standard ones but you can add chat, forum, social web site where you participate or something else. Be creative.
  • I want to iterate - respond promptly. Sending back automatic message when a user sends you request is mandatory. This is the first indication that your system works. In the message include your expected time to respond (or Service Level Agreement - SLA) and stick to it. In all three cases above my expectations were not met (apparently Google enabled my blog but month and a half after I submitted my request and not 20 days as they promised; I still don't know how long Barrier needs to get the list but 1 week I think is too long).
  • When you respond to your customers try to be personal. Don't use case numbers, "madam" or "sir" (I really like the e-mails from Mr. Mumbaga from Zair who offers me $2M and addresses his mails with "Dear Sir"). Use your customer's name - this will make him or her feel much better. I really enjoyed my stay in the hotel in Tokyo not because the hotel was nice but because people there made the effort to say my last name (now try that:)).
  • When you respond to customers give them your name. You can give them any other information that will be helpful for them to find you (unless you think you provided really crappy service:)). You will be surprised but somebody may want to call your manager to say "thank you" and not to complain about you.

Those are just few of the advises I can give you if you are committed to provide great customer support (online or offline). I will be honest and tell you that I broke some of them in certain occasions and I still feel bad about that - everybody makes mistakes but you should try to improve. Just ask yourself the question - what is more important for you? Spending 1h replying to your customer or losing your customer?

October 31, 2008

Do your user scenarios fail with catastrophic errors?

While in Japan 2 weeks ago I needed a photo organizing tool for my photos. What I needed was a way to edit the caption and description as well as to add some tags to the photos. I went through a couple of choices described below.

Google Picasa 3

I used Google Picasa for quite a long time and it was my first choice. It is OK for browsing pictures but what I figured out was hard to do was to edit their properties. Let me be clear - it is not hard but it is confusing, and I wasn't sure what the end-effect will be. Finding the actual menu (or button) for the properties was small challenge. As a long time Windows user my first choice was right click menu -> Properties. This brought a pop-up window showing me all kind of "useful" information about the picture, like file name, file size, camera information, aperture and bunch of other things - all of it... READ-ONLY. Good! Now what? From the quick screening of the available buttons on the screen Geo-Tag was the only one that sounded similar to what I wanted to do but I already knew this is not what I was looking for. From my experience with computers I learned that I should let myself be surprised and clicked on the button. Of course it asked me to install Google Earth. No, I am sorry but this is not what I need. Next choice was the menus but the only choice I had there was Picture -> Properties, which brought up the same properties pop-up as above. Now I was stuck and went to my second choice - Windows Explorer, described below.

Few days later I came back to Picasa because I was curious to learn how I can achieve my goals with it and after some more searching I found the following button: image with a tooltip "Tag photo(s) with words for searching". Great! I found it!... Or at least I thought so. It seems that this button allowed me to tag the pictures but only that.  Changing the caption/title (I am not sure whether those are the same?!?!) and adding description is done from other places on the UI or there is no chance to do it at all.

By some reason Picasa saves the Caption in what Vista considers Comments field - Duh!

One more thing I would like to have from a photo organizing tool is to give me a way to easily filter photos that are not tagged, have no titles and most likely use some cryptic filenames. Picasa provides some filtering functionality but I couldn't find a way to get only pictures from specific year for example.

Here is my scenarios checklist for Picasa:

  • Bulk edit - Poor - I can do bulk edit but only the tags
  • Properties edit - Poor - Not concentrated in one place but spread everywhere in the UI
  • Filtering - Poor - Although I may want to filter by face (I am still trying to figure out why this one is the most important) I would like to have richer filtering like date, camera etc.
  • Search - Great - I really admire Google for their search (and may continue to repeat it over and over again); if the picture is tagged you can find it within a second
  • Upload to Web - Poor - works only with Picasa Web (I know, Google wants to push their apps, but... I like Flickr)
  • Easy to achieve your task - Not at all - I had to think a lot
Windows Explorer

My next choice was Windows Explorer. With all the marketing messages you will think it is easy to do lot of things as far as "photos" are concerned. And it is! You can bulk edit, add titles, tags and subject and few other things. What a surprise was when for the same file type I received different properties in the Details Pane. Here the pictures:



They are both JPEGs - why do I get just subset of properties for some pictures? After some thinking (and heavy headache) I figured out that files with longer names have fewer properties shown in the Details Pane. I guess it depends on the screen resolution but on my laptop on 1024x768 the last column of properties was disappearing. More interesting is that together with the last column disappears also the last property from the column before the last. This made me think that there is some idea behind the behavior but... there isn't. Putting this to the side I think Windows Explorer does pretty good job for editing picture properties.

Here the summary:

  • Bulk edit - Very Good - I can select bunch of file and edit every one of their properties at once
  • Properties edit - OK - Right-click -> Properties works well but the bug (or feature) described above makes the editing in the Details Pane annoying
  • Filtering - Non existent - I cannot filter by criteria
  • Search - Poor - It is slow... really slow
  • Upload to Web/Share - Non existent - I don't expect Windows Explorer to be able to upload to Flickr but...
  • Easy to achieve your task - Quite Easy - for Windows user the learning curve is quite steep
Windows Live Photo Gallery

If you are wondering where the title of this post comes just continue reading. I already had Windows Live Writer installed, but I didn't want to install the whole suite because I don't care about the toolbar and Windows Live Hotmail - I don't see any useful functionality in the toolbar and I stopped using Hotmail short after Sabeer Bhatia sold it to Microsoft. Writer I find pretty useful though after I started using it about month and a half ago. Deciding to add the next application to the suite I went to Windows Live Photo Gallery Web page and clicked on Get it Free. Free is cool :) when the installation started I got the following error:


This is CATASTROPHIC ERROR! I am really sorry but the colleagues from Live really screwed it up! How can they imagine that somebody will always install their whole suite? And the error message? It is ridiculous! "Catastrophic failure"? C'mon, can't you guys think of something better? I can imagine my mother seeing this error message - she will run to the next available photo organizing application and just forget about Live Photo Gallery. Few retries didn't solve the problem. Searching in Google and Live Search returns mostly results about failure installing Live Messenger. After some browsing through different message boards and some hard thinking I decided to un-install Writer and install both applications together. Voila! It worked. To be honest I would expect to see this topic as the first one in the troubleshooting notes for Windows Live Suite.

Once again I would like to emphasize - how do people from Windows Live thought that installing applications from the Live Suite one by one is not so common scenario? Why didn't they test that more thoroughly?

After I passed the troubles having Photo Gallery installed I could say this was the software I was looking for. It was missing features like slide show but I still had hover preview and full preview and this was enough for me.

Here is my summary:

  • Bulk edit - Very Good - Right Click -> Properties allows you to edit almost every property
  • Properties edit - OK - Right-click -> Properties works perfect but you can edit only few things in the Info Pane 
  • Filtering - Good - I can filter by tags and date taken, which is very helpful
  • Search - OK - It is comparable to Google search but I was wondering why it differs from Windows Explorer one. One more thing is that it doesn't search among the Tags set by Windows Explorer
  • Upload to Web/Share - Good - I can upload to Windows Live Spaces and... Flickr. Good one, guys!
  • Easy to achieve your task - Quite Easy - I was able to get around with most of the functionality pretty quickly
Adobe Photoshop Album Starter Edition

Adobe PhotoShop is my favorite tool for editing images and I started using it almost 15 years ago. Having this in mind I expected Adobe Photoshop Album Started Edition to be quite sophisticated tool for organizing photos.

After some clicking around I found it pretty easy to tag photos and filer by tags or date taken. Although the controls looked quite strange (sliding control with years as scale) finding out how to do certain things is not so hard. However not all of the image properties could be edited and also different properties are edited from different parts of the UI, which I find not very convenient. Search was completely missing and it seems Adobe put their effort in creating other "useful" features like Messagebox for example, which offers you to "Save $20US on Adobe Photoshop Elements 7". Sure, this is what I was looking for from a photo organizing software!

In general:

  • Bulk Edit - Poor - You can edit only the tags and captions in bulk
  • Properties Edit - Poor - You cannot edit other properties than tags and caption
  • Filtering - Good - Filtering by tags and date taken is quite easy if you get familiar with the controls
  • Search - Non existent - sorry, but I cannot live without this one
  • Upload to Web/Share - Very Good - Send via e-mail, send to mobile phone and share online (including Flickr:)) are all available
  • Easy to achieve your task - Easy - Once again, I needed some time to understand how the UI controls work but after that I was able to do most of the things quite easy

Coming back to my scenario here is what were my prerequisites and goals:

  • Between Oct. 14th and Oct. 18th 2008 I took about 300 pictures
  • I used two different digital cameras - point and shoot and SLR
  • Both cameras save the pictures with different file names and both use something cryptic
  • I wanted to download the files from both cameras to my PC and add captions, author, tags and some description to the pictures
  • After that I wanted to upload my pictures to Flickr and expected to have the information preserved
  • Optional I wanted to be able to organize my pictures the way Flickr organizes them (in sets and collections)

From all the tools I chose Windows Live because it mostly matches my goals. I may not be the typical user (or I may be) but I would expect most of the tools to cover this simple scenario above.

Few other things that I noticed while investigating the tools:

  • Not covering the main scenario people want to go through frustrates them
  • Adding unfamiliar UI elements on top of complex workflow adds even more to the frustration
  • Separating common functionality and spreading it throughout the UI adds confusion (and more frustration)
  • Not supporting "standard" ways for accessing some functionality increases the confusion (and hence the frustration)

There are trends and new inventions but product goals should be to make live easier for the user (and not harder). Now I will go and organize my photos.

  1. While playing with the tools I may have missed some of their features but my goal was not to do side-by-side comparison. This Google Picasa may be able to upload to Flickr and Windows Live Photo Gallery may have slide show and Adobe Photo Album may be able to edit all the properties. I was just not able to find this functionality if it exists.
  2. I need to remind you that I am Microsoft employee and some people may think that I am recommending Windows Live Photo Gallery because I am biased. If this was the case I wouldn't have named my post with the failure I saw while installing it :) I will try to do my best to submit this information to my colleagues and I really hope they will improve the experience in the next release. And working closely with Windows Live content team I will suggest troubleshooting article for the failure I saw.

UPDATE: As G pointed out below there is a slide show button in Windows Live Photo Gallery. He (or she) mentions that the button is on the Menu Bar but I couldn't find one there. However one of the controls at the bottom triggers the slide show: image

October 22, 2008

Do you know your international customers?

Last week I spend in Tokyo visiting Microsoft's subsidiary. It was my first trip to Japan and thus my first opportunity to learn about their local culture. I worked a lot with people from different countries but mostly over the phone. Although you can learn something about the person on the other side of the line meeting them face to face is worth hundred phone calls.

I personally think every country has its own culture and companies should respect that. For me being global doesn't mean "create one product and deploy it globally" as most of the companies do. That your product sells well in your own country and may be couple of more doesn't mean it will sell well everywhere. As confirmation of this statement of mine I learned why iPhone sales in Japan are not doing so well (don't think that Windows Mobile or Blackberry are ruling the market - no, that is totally not the case). Here some statistics first:


  • Japan population is ~127M
  • Average number of phones per subscriber in Japan is 1.2
  • Number of mobile phones subscribers passed 100M mark at the beginning of 2007


All this can tell you that mobile phone market there is HUGE.


Apple released iPhone worldwide (including Japan) on July 11th 2008. For the first 2 months the estimated sales for Japanese market are 200,000 units (source This is just a small fraction of the 10M iPhone 3G sales (source Yahoo!News) and even smaller if you take into account the Japanese market of 100M (forgot to mention that this is also the biggest 3G market).


As usually the reason people in Japan are not buying iPhones are the features. If Apple tried to learn a bit about the local culture they would have understand that Japanese use their phones for almost everything - they call, send text messages, send reminders to themselves, take pictures, and… play. However browsing Internet and GPS are not among their highest preferences. Few of the important features iPhone misses and as it seems are crucial for the local market are decorated email (read "dancing Panda" and "meowing Hello Kitty") - this is hit among youth people in Japan; keyboard (for texting) and ability to recognize captured barcodes - it is not easy to text if you have the on-screen keyboard and even harder to play. Additional to that iPhone is not localized in Japanese and this is one more obstacle for their customers (it may be hard to understand but very few people in Japan speak English).


I have to admit that Steve Jobs made great deal requiring SoftBank to make minimum order (500K units). The question now is whether SoftBank will make second one.


From other side Windows Mobile and Blackberry are also among the losers in Japan. They both target information workers and although they include keyboards and localization (at least some of the models) they miss the rest that can make them "cool" in this market.


Once again I would like to emphasize - learn about your local customer before you enter the market, this can make or break your sales. Apple is a great example how such successful companies can fail locally.