|
 Monday, January 21, 2008

MSN Run Once Bombs...

It happens to the best of us, even the creators of the technology...

image

#    Comments [0] |
 Monday, January 14, 2008

Usability - Don't Make Me Think/Remember...

When we were first introduced to the computer it was to help us solve problems not create them. Your mother bought a computer so she could get things done quicker. She bought it because it had all these cool features that could "Remember things for you". We build software to help solve problems, to remove some of the more mundane things in life to make life simpler. Computers are supposed to make things easier, they are not supposed to take my time to answer stupid questions.

Each day goes by that I still find major issues with User Interface development of major web sites. There is SO MUCH information available for free on the Internet that major companies still make no attempt to help the user.

What am I complaining about?

When I visit a web site I want it to do things for me. Provide a service. The following sites provide services, but all fail miserably in regards to basic usability and irritating steps of action.

 


FAILING

www.ups.com, www.dhl.com, www.fedex.com, www.honeywell.com - All of these sites suffer from the same problem. They make me think. Why in the hell cant you figure out what country I'm in? There are ways to do this all over the net. Yet these companies cannot figure it out? I mean, come on... companies like Honeywell who have TONS of engineers on staff cannot figure this simple crap out?

My Beef: Don't ask me where I'm from, when you already know. That's like asking me my name when I'm wearing a name tag.

 

www.myuhc.com (doctor locator) - This thing... oh man, it makes me want to scream. The problem is ... if you log into your account, you can "locate a doctor", yet when you get prompted to enter search criteria you get asked what your plan is. HMO, PPO, PPO PLUS, BLAH BLAH BLAH, like 15 choices. They all look the same to me. That means I have to pull out my wallet each time, find my card, search the small print just so I can answer this question. BUT WAIT.... I LOGGED IN, DID'NT I??!?! That means, the web site should already know what plan I'm part of.

My Beef: Don't ask me what my plan is if you already know. Again, its like asking me my name when I'm wearing a name tag.

 


SUCCEDING

Outlook Web Mail, Gmail - These apps have it down. When I type in an email address and send an email to a contact, these applications save it for next time. The next time I attempt to send an email and start typing a few letters the app helps me find the person I'm looking for. Either by first name, last name or email address.

 

Google.com/Live.com/ask.com - All of these provide great suggestion techniques (such as explained below). Google does really well in this area. Tim Ferriss said that while in Germany (or somewhere Europe) he typed Google.com and got Google.de (Germany's Google). At the top of the site it had a small icon that said something to the nature of "Looking for the US Site? Click here." So it helped the 95% case of actual German users, but maybe the other 5% actually wanted the US Google (note: the %'s are just made up, but you get what I'm saying).

 

Pandora - The music discovery channel. If you like "Wu Tang Clan" and you would like to find artists that are similar to them Pandoras Music Genome Project will help. It helps by finding music similar to your tastes through over 400 attributes. But the real nice thing about the interface is how easy to use it is. If I typed in "Wyclef Jon" the system will return a question to the user "Did you mean 'Wyclef Jean'". Well of course I did, but maybe my friend always said "Wyclef Jon" so I thought it was "Jon". But hey, the user interface helped me find what I wanted to find. It didn't make me think. If helped me find what I wanted to find through assisting me with my spelling.

 


TIPS TO IMPROVE YOUR SITES USABILITY

- Don't make the user re-enter information you already have. (name, address, etc, - basic info)

- Use the Auto-Complete type of control as much as possible. - This helps users when typing in free text. If you're asking them to type in an address into a geographical website, try to assist them with possible solutions. Not everyone can spell Minneapolis correctly the first time. :)

- If you are an international site, FIGURE OUT WHAT COUNTRY THE USER IS FROM and give them that country.

- Catch all the errors. I MEAN ALL OF THEM. I should never see a MySQL Error, a YSOD or anything like that. Give me something telling me that something went wrong and I should check back later.

 

In the end, its all about user experience. Make it easy.

 

The only problem is ... is very hard to make something simple. :)

#    Comments [2] |
 Sunday, January 13, 2008

Works in Firefox, But Not in IE? (or vice versa) WTF!!!!

During my stint at McFarlane Toys and through many other consulting gigs I've had in my years I'm always running into CSS and style in web applications.

If you're a Windows developer be thankful because everything in WinForms pretty much renders virtually the same on the client. It's not that way in the web world.

 

Here's what I think of styling in the web world: "Welcome to the land of a 1000 faces, where the same face can have 10 different appearances."

 

Seriously, CSS is a huge P.I.T.A. and getting it right on IE, FireFox, Opera, Safari, etc is a hair losing experience.

So, I'm sharing this resource as one of my great saviors of CSS wisdom: The CSS Creator Forum

I've had many issues and they've all been solved simply by searching this forum.

I've never once even had to post a problem as I've been able to find the answer here.

Enjoy.

#    Comments [0] |
 Tuesday, January 08, 2008

TFS - ItemExistsException Fix

Oh what a P.I.T.A. this error has been. I received this error today...

Microsoft.TeamFoundation.VersionControl.Client.ItemExistsException: The item $/path/to/myFile.cs already exists. ---> System.Web.Services.Protocols.SoapException: The item $/path/to/myFile.cs already exists. --- End of inner exception stack trace --- at Microsoft.TeamFoundation.VersionControl.Client.Repository.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader) at (...)

blah blah blah...

We have two build servers set up at the client where I'm at and I'm in charge of keeping them up and running smoothly.

Build Server 1: Local, same office as where our TFS Server is

Build Server 2: Remote, connects via TFS Proxy Server at the remote location which connects to our TFS server (next to Build Server 1)

 

PROBLEM 


The problem is that I recently moved a project using the Move command in TFS.

The project was moved from a location which was incorrect for our Continuous Integration environment to a location that that was optimal.

Between the time that this move occurred and when the project was altered again, a file was dropped from TFS somehow yet it remained in the project. Not a big deal right? I asked a coworker to add it through Team Explorer. Bam, no problem, done. The file was back, it built correctly on our development machines and we went onto the next task.

Then CC.NET Barfed. It was the error that is in red above.

Robert Horvick had some great insight into this error on this post. Here's what he says:

"At a high level what is happening here is that there are two distinct items which happen to have the same path name (at different points in time, obviously).  When you are labeling TFS sees what you want to put into the label (the new item) and what is already in the old label (the old item) and sees the name conflict.  Since /child:replace means to replace the label on the same item it can't drop the label off the old item which means it can't add it to the new item so it issues this error message."

THANK YOU Robert.

 

SOLUTION


As Robert also stated in that post we have to "unlabel" the file so CC NET can re-label it correctly. We're getting rid of the old label on this file. We do this with the "tf unlabel" command.

tf unlabel 1234 "$/Path/to/myFile.cs"

(where 1234 is the label)

I did this, and then forced a build through CC.NET and it worked! Woo hoo!

UNTIL... the next build, it broke, and I get the same exact error message above.

 

After some research I came to find out that this solution that was getting labeled was a solution that was getting labeled multiple times a day on two separate build servers. We have a common source solution that is shared among many applications (such as security objects, loggers, etc). So while I cleared the label on the one build server, there was still a label that might have been newer on the new build server.

In order to get around this, I had to clear all the labels for that file. Normally this is not something I'd ever want to do, but fortunately this file only had about 4 labels applied to it as it was fairly new and we were not doing anything with those said labels (just cc.net labels). After removing the labels, everything started building just fine.

#    Comments [0] |

TFS Build Not Publishing Web Applications

_PublishedWebsites does not exist?! WHAT?! Huh?

One of our TFS builds was succeeding and a fellow developer noticed that the Web App was not getting copied into the _PublishedWebsites folder of our drop location.

I took a look at our TFSBuild.Proj file and I didn't see anything that stood out. I took a look at a similar project who's output was being copied into the _PublishedWebsites directory and the .proj file matched that of the one that did not work.

Solution

The problem was not in the .proj file, but in the actual .csproj file for the Web Applicaiton Project.

.csproj files ARE MSBuild files and inside of that I saw this:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!--<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0WebApplications\Microsoft.WebApplication.targets" />-->

The second Build target file was not getting loaded.

This build target file contains a target by the name of "_CopyWebApplication" which takes the output of the web application and copies it to the _PublishedWebsites directory.

I uncommented this line, checked it back into TFS and re-ran my build and my _PublishedWebsites started showing up. :)

My file now looks like this:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0WebApplications\Microsoft.WebApplication.targets" />
#    Comments [3] |