What reading Tufte won’t teach you: Interface design guidelines

e accidentally sent this to me; it deserves to be blogged:

I’ve just spent two months carrying a terrible, ancient cellular phone and a mediocre non-Apple music player around the planet, and interacting almost exclusively with Windows XP terminals at internet cafes and hostels. As my frustration with these poor interfaces grew, I started a rough list of interface design guidelines. Here they are:

    * The application interface should be fast and non-blocking.
    * The application interface should be consistent.
    * Don’t interrupt users in the middle of common, nondestructive tasks.
    * Avoid notifying users of success.
    * Avoid giving users information that they cannot use.
    * Rare, destructive actions should be harder to complete than nondestructive ones, but always possible.
    * Give users the chance to ask for forgiveness rather than forcing them to confirm.
    * Deal with application failure gracefully.
    * Preserve state, mode, and user input for as long as it is relevant, until users save or discard it.
    * Provide multiple, complete navigation paradigms.
    * Design the interface before starting to code.
    * If the application violates one of these rules because its design makes implementation of a better interface too complex or too difficult, then the application needs to be refactored until it supports a better interface.

Full story at http://glyphobet.net/blog/essay/269.

Given that developers are notoriously bad UI designers, there is much food for thought.

VS2008 SP1 and .NET 3.5 SP1 Released

Old news by now, but SP1 is out with all sorts of glorious new features, except a good installation path.  If you have several machines to update with both VS2008 SP1 and .NET 3.5 SP1 (e.g., a team), you’ll want the ISO file, which can be tricky to find.  Direct link to combined installer .iso.  And, I use the awesome freeware ImgBurn to create the disks for my team.

I’ve seen a couple reports that the installation takes 3+ hours, but all told installation for me went 45 minutes.  I cheated, and downloaded the .NET 3.5 SP1 first (full package at http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe), installed that, then ran the combo installer. 

Greg has a great list of VS2008 things to download (including the MSDN update and training pack) at http://coolthingoftheday.blogspot.com/2008/08/visual-studio-2008-net-35-sp1-etc.html.

As always, make sure to remove any previous betas of the SP (both .NET and VS) you have installed.  I had the SP beta installed, and got rid of it from Add/Remove programs before I installed anything.  If you have any hotfixes installed, you need to remove those as well.  This time, there’s a hotfix removal tool.

Unlike Craig Shoemaker, I was not asked for the original media.  I installed the MSDN updates, too, which tool a little over 30 minutes themselves.  All told, you’re investing a couple hours for a full update.

dbdesc bug and great support from Logica2

One of my favorite database tools is dbdesc from Logica2.  I’ve reviewed it in the past.  It’s simple, inexpensive and does its job quickly and well.

Recently, I’ve had some turnover on my team, in addition to the usual bouncing around, and database scripts became out of date with what was in the database.  I got the “all clear” to refresh a database, and ended up wiping out some recent changes.  I couldn’t recreate the tables and stored procedures from their creation scripts, but fortunately I had run dbdesc earlier and had its output to work with (you can run it as a command line tool and include it in your automated builds).  Dbdesc includes the CREATE scripts in its documentation, so I copied and pasted and executed and ran into a problem.

After a little poking around, I noticed that the tables were all being created as dbo.schema.tablename.  Upon closer examination (and this took a while to find), I saw that dbdesc was outputting the CREATE as


rather than


This small difference is what led to the creation errors.  Manually fixing the sql script solved my problem, and I reported the issue to Logica2.  This is where the tale of great customer support begins.

I sent in the bug report via their website at around 3pm on Friday.  About three hours later, I had a reply from Jose that he was looking into the issue.  Not a bad response time, and I wasn’t expecting any update until today (Monday).  At 11:12 pm Saturday, I get another email from Jose saying the issue has been fixed and a link to the new installer.  Very impressive, especially since it would be Monday before I was back at work and would need the software.  This was probably a very simple issue to fix, but nonetheless it received prompt attention on a weekend.  My previous build was 730, and the updated build was 737.

Thanks, Jose and Logica2, I love your products even more!