March 10, 2008

SD West, Day 4 & 5

My brain is full...

WPF Internals

The WPF Internals class was less about WPF and more about what made it work. Not quite what I expected, but interesting and useful regardless. Dependency Properties are like normal C# properties, but with some special and interesting ideas that make them work for WPF. Unlike properties, they: can have a default value, do not use a backing store if one isn't needed (i.e. if the property is set to a default value, it won't bother allocating memory for the property), can inherit values from parent classes (e.g. if the form's background color is red, and a button on the form is default, it will inherit the red), and can have change notification events setup for them. "Commands" are single actions that can be attached to menu items, toolbars, etc. so that a single place can be marked enabled/disabled and cause a single action to fire when triggered. Almost another page directly from Qt's QActions book. Data Binding using the Dependency Property events creates simple action-reaction lines. Sort of like how Qt handles signals and slots.

Advanced UI Design Strategies

Jim Hobart had a great session on strategies for UI design. Here's some of the better bullet points I picked up:
  • Rules vs. Strategy: Rules (like UI guidelines) are like rules to any other game. You may know all of the rules on how to play basketball, but that won't let you win the game. You need a strategy to succeed.
  • Complex systems are still usable, there are some things that have to have a learning curve because of their complexity. Are you building a kazoo or a violin?
  • If you ask a user "What fields can I get rid of?" they will always claim to need all of the fields. Instead of asking what fields to remove, ask the user what they're trying to accomplish from the page.
  • For an average web user, mousing over causing a highlight is a good way to indicate interaction is possible. After staying over for 1200ms-1300ms (gathered from testing), a popup of more information can be shown.
  • Delays in the UI cause a user to lose their concentration. After about 2 seconds, users will lose track of what they were trying to do.
  • People don't read.
  • UI designs for probability. (What do most users do?) Engineers design for possibility. (What might happen?)
  • Better interfaces usually have a high ratio of content to the tools necessary to navigate that content.
  • Error messages make a user feel dumb, whenever possible try to interpret whatever the user inputs and use that.