User Experience Principle #2: The user should always feel in control.
So I've been going through the tutorials for Expression Blend coz I'm supposed to be an expert at it by now. However, on my machine at work I couldn't get any of my applications to run. All the sample applications would run, but mine would crash immediately (even if they were identical to the samples):
Well it took me hours to figure it out, but it turns out the problem is related to my 'My Documents' folder. Blend saves your projects to My Documents by default, and at work my 'My Documents' is on actually on a server for backup reasons. Turns out a thing called CASPOL stops the application running because my "My Documents" folder doesn't have the right permissions, or something.
The fact this happens is nobody's fault - just one of those things. Security is a necessary evil. However the USER EXPERIENCE leaves somethnig to be desired! Instead of "UntitledProject1.exe has stopped working". How about a hint? Windows/.NET/the program actually does know exactly what the problem is, it just doesn't choose to share it with the world. How about "UntitledProject1.exe cannot run because it is stored in an untrusted location. More information"?
First rule of error message design: Describe the problem in user terms, and how to fix it. (Better yet of course, where possible: just fix it.)