# interface design

## A 1-post collection

Designing user interfaces. It's not that hard.
Okay, it's really hard, but two central ideas strike me:

1. Users like to do things quickly, and if you're quick you can be efficient.
2. The more clicks or button presses it takes to accomplish what you want, the slower it goes!

Now complexity is its own bane—and it can be a worse one, but it's all about balance.

Ideally your most used functions should be within one key press / mouse click, lesser ones two, three, and so on, adding organization as you go.

I don't think this is very difficult to understand, which is why cell phone interfaces can be particularly frustrating.

What phone applications are the most time sensitive? Phone, Camera, MusicID, flashlight. Put them on hard buttons! At least a hard button that launches a wide menu which makes these options immediately selectable, but remember that when you go from one to two buttons you're doubling the amount of actions required, the most significant a one value increment can be.

Just keeping these points in mind is enough for much lauded user interface innovations to be obvious. Just take a look at new features of Windows 7 and you'll see what I mean. It doesn't take a company like Microsoft to come up with these things.

A while back I made an effort to emphasis the importance of minimal user intervention in relation to Vista and XP's taskbar, and it's interesting to compare and contrast those supplemental 3rd party tools with the Windows 7 taskbar.

Though I didn't mention it in that post, I had also written an AutoHotkey script to accomplish the Apple-esque (and now Windows 7) task of focusing an application's window if one existed, and otherwise launching a new instance of the program.

#NoTrayIcon

programPath = %1%
launchState = %2%
winTitle = %3%
excludeText = %4%

if 0 = 1    ; left side is always variable
{
Loop %programPath%
fileName := A_LoopFileName
Process Exist, %fileName%
processId := ErrorLevel
if (processId)
winTitle = ahk_pid %processId%
}

SetTitleMatchMode RegEx
WinGet windowUID, ID, %winTitle%,, %excludeText%
if %windowUID%
WinActivate ahk_id %windowUID%
else
{
; replace commas with escaped commas
StringReplace programPath, programPath, ,, ,, All
Run %programPath%,, %launchState%
}


Compiled as launchOneInstance.exe you would assign your launch/focus shortcut as follows:
"C:\path\to\launchOneInstance.exe" "C:\path\to\program.exe" Max "Program Window Title"

Max/Min/Hide or simply "" are fine for the launch state parameter.

Windows 7 is a wonderful experience when it comes to application launching, but cellular phones remain horrible, including Windows Mobile devices. Manufactures and carriers have their own influence, but even Pocket PC user customizations seem to miss the mark again and again.

Minimal interaction, guys! Minimal interaction! Why pull up the task manager to check for an app when you can launch/focus it from the start menu in equal or less clicks? Why not launch the start menu from a hard button for easy access even within full screen applications? Add an extra column to that programs list if it fits easily, we don't want no damn scrollbars!

Discussion