10/22/2012

10-22-12 - Windows 7 Start Menu Input Race

I've been super annoyed by some inconsistent behavior in the Windows 7 start menu for a while now. Sometimes I hit "Start - programname - enter" and nothing happens. I just sort of put it down to "god damn Windows is flakey and shit" but I finally realized yesterday exactly what's happening.

It's an input race , as previously discussed here

What happens is, you hit Start, and you get your focus in the type-in-a-program edit box. That part is fine. You type in a program name. At that point it does the search in the start menu thing in the background (it doesn't stall after each key press). In many cases there will be a bit of a delay before it updates the list of matching programs found.

If you hit Enter before it finds the program and highlights it, it just closes the dialog and doesn't run anything. If you wait a beat before hitting enter, the background program-finder will highlight the thing and hitting enter will work.

Very shitty. The start menu should not have keyboard input races. In this case the solution is obvious and trivial - when you hit enter it should wait on the background search task before acting on that key (but if you hit escape it should immediately close the window and abort the task without waiting).

I've long been an advocate of video game programmers doing "flakiness" testing by playing the game at 1 fps, or capturing recordings of the game at the normal 30 fps and then watching them play back at 1 fps. When you do that you see all sorts of janky shit that should be eliminated, like single frame horrible animation pops, or in normal GUIs you'll see things like the whole thing redraw twice in a row, or single frames where GUI elements flash in for 1 frame in the wrong place, etc.

Things like input races can be very easily found if you artificially slow down the program by 100X or so, so that you can see what it's actually doing step by step.

I'm a big believer in eliminating this kind of flakiness. Almost nobody that I've ever met in development puts it as a high priority, and it does take a lot of work for apparently little reward, and if you ask consumers they will never rate it highly on their wish list. But I think it's more important than people realize; I think it creates a feeling of solidness and trust in the application. It makes you feel like the app is doing what you tell it to, and if your avatar dies in the game it's because of your own actions, not because the stupid game didn't jump even though you hit the jump button because there was one frame where it wasn't responding to input.

16 comments:

Unknown said...

I believe Windows Shell Classic doesn't have this problem.

http://classicshell.sourceforge.net/

Unknown said...
This comment has been removed by the author.
cbloom said...

Hmm, cool project.

It would be sweet to have an entire Windows front end replacement that stayed constant and old-skool as the back-end (underlying OS) changes throughout the years. God damn pointless OS GUI changes make me so angry.

Is there a project to give me back a Win-XP style control panel? I hate the new control panel in Win7 so very much.

Unknown said...

Getting the entire OS chrome freeze across versions would be great, but I'm not aware of anything in this area other that the Shell Classic.

Aaron said...

The scary thing is that as flakey as windows is, it's head and shoulders above it's competitors for productivity.

It blows my mind that Microsoft is able to achieve this. If you ever wan to *totally fall in love* with Windows (even Win7 with all its flaws), force yourself to work on a Mac or on Linux for a week, then come back. Windows is just sickeningly efficient in comparison. The Mac UI is pretty much designed to slow you down. Of course, you could live in the bash shell on the Mac, but that's different. Linux, *still* barely even works as a computer. I try it every few years to see if it's gotten better, and it's still a total joke unless you're a totally linux command line power user.

I wonder if there'd be a market in high-end MS Windows customizations. Essentially just taking Windows, and changing all the default settings to good ones, then selling that as an add-on. Probably not. No one buys anything anymore.

Aaron said...

For the control panel, if you change the view type to 'large icons', it's sorta similar to the windows xp control panel.

Personally I never use the control panel (or start menu navigation) anymore though, I just use start menu search.

Aaron said...

This might speed up start menu searches some. I never use start menu to open anything except apps. That should be nearly instant.

http://www.howtogeek.com/howto/28111/make-windows-7-start-menu-search-find-your-applications-faster/

George McBay said...

As useless as I find the Metro tile interface on a non-touch desktop, the WinKey+Keyboard-based search actually works a lot better for me in Windows 8 than it did in Windows 7.

In my experience it is significantly faster and the UI works better in those cases where you have to select from a couple of possible matches.

cbloom said...

"That should be nearly instant."

Slower than my fingers.

Aaron said...

Yeah yeah, I mean, I know it's broken, but it's a lot better. I can't out-type it on my machine :)

cbloom said...

" For the control panel, if you change the view type to 'large icons', it's sorta similar to the windows xp control panel. "

The problem is not the control panel, it's all the new dialogs for putting in settings.

Damn display settings are spread across like 20 different pages, and to do something simple like turn off all animation and fading takes me half an hour of looking around to find the durn settings.

Networking is so much worse now as well. They did this whole Apple-ification of things that hides everything from you. It's sort of nice and clean looking as long as it's working right, but when something is wrong and you're trying to find out why it's a nightmare.

johnb said...

"The scary thing is that as flakey as windows is, it's head and shoulders above it's competitors for productivity."

I wonder how much of this opinion is based on your having a lot more experience with Windows than with OS X or Linux though.

There are a whole bunch of little operations and configuration tweaks that I knew how to do really quickly in XP, but that's not because of good design from MS, it's just because I looked up how to do it and did it often enough to learn. I imagine all the systems have a lot of things like that.

Anonymous said...
This comment has been removed by the author.
Anonymous said...
This comment has been removed by the author.
Aaron said...

"I wonder how much of this opinion is based on your having a lot more experience with Windows than with OS X or Linux though."

Absolutely hugely. However. Basic things in linux (more specifically Ubuntu, and more specifically Mint, and more specifically Linux Mint 13 Maya...) do not work consistently. Video drivers (esp on laptops with Optimus switching). Audio. I installed linux on my laptop. It crashes if I close the screen. When I shut it down it goes to a black screen, then shows me some text about a 'broken pipe' (surely harmless, then don't tell me about it). When I try to update my video driver, it hoses everything, gives me no video accel, trashes my video settings, there are three or four ways to do it, and none of them really work.

The thing is everything *can* be done on linux, but there's always a different way you should be doing it. All the problems can be solved. It just takes you hours and hours of web searching to fix basic things.

I totally agree that windows out of the box is pretty crappy (though Win7 is much better than XP in that regard (the basic UI settings are better in 7, though there's a ton of CPU-vampire crap instead... so maybe it's more of a trade-off). The list of things you need to do to make Win7 usable though is relatively short, and none of them is in the category of breaking the entire machine like it is on linux:
* turn off autoplay
* set menushowdelay to 0
* turn off drive indexing
* set folders to show details rather than icons
* turn off extension hiding
* turn off recent documents
* tell start menu to only index programs
* install chrome or firefox and never touch IE
* run windows update for about 3 hours, rebooting your machine 10 or 15 times :)

Aaron said...

I used Mac exclusively for years also (though that was pre-osx). When I finally switched to windows (2000 at the time), it was an obvious improvement.

I recently spend a couple weeks on OSX again, and while I admit I didn't get up to my windows level of skill, the problems with OSX are just fundamental UI things that being an expert using the OS won't fix:

* Window buttons too small.
* Not near the corners of the screen, so you can't muscle-memory them
* Ridiculous bar that's always at the top is a broken usage model
* Crazy issues with hard drives and whether they 'show' on the desktop or not (stick an NTFS formatted drive in a mac, and enjoy the ambiguous fun).
* No true full screen (though they finally put a half-assed one in)
* Absurd animated transitions for most of the gui effects that slow down productivity
* LAN networking/sharing doesn't work reliably (this used to be super great in the old days, now it's horrid... machines just won't show up, or you'll click into one, and it'll show nothing, or out of date contents)
* Try to set a black background as your desktop. oh wait, you can't, it's not a color choice and they don't let you customize colors! Uh, well you can, but you gotta give yourself a black jpeg.
* Basic hardware choices are ass backwards. All the usb ports on this iMac are on the *back*. Pretty, but stupid. god help you if you can find the power button.
* Insanity with ejecting DVDs. Some Apple-built apps can eject, some can't. All cuz there's an eject button on the mac keyboard, and devs are allowed to rely on it.
* Finder menu navigation is totally bananas and confusing, even after a few days when you finally go read about how it's *supposed* to work

Apple does nail the look of the hardware, simplicity for grandma/grandpa, having bash instead of cmd, and their os update process is super great.

old rants