10/19/2009

10-19-09 - Against asynchronous GUIs

Most new Microsoft products have super asynchronous GUIs. This means they do GUI refreshes and window popups and threads and so on. This sounds like a nice thing, it removes big stalls and freezes in the GUIs and makes them "respond" more quickly, in the sense that when you request some new view it pops the window up immediately and then gradually fills it in, whereas before it would just freeze and wait for the new view to pop up.

In practice for power users this just sucks absolute balls. Power users use the keyboard. We use our peripherial vision. We don't sit around and wait for windows to pop up, we hit key combos that we know and we memorize sequences. So for example you might memorize that hitting Alt-F opens a find dialog and puts the focus in the entry window, so you can highlight the text you want to find, Ctrl-C, Alt-F, Ctrl-V, Enter, all in a row boom you're searching for that text.

BUT NO! No you aren't, instead you just pasted that text into your document because the fucking finder window was being built on a thread and wasn't opened in time to receive your ctrl-v so your ctrl-v went to the old window.

There are few obvious GUI design fails here. One is that asynchronicity and focus stealing should never go together. If a window opening is async then it should not transfer focus to that window. Also, if a key pops up a new window and transfers focus, do that immediately and queue up the key presses and don't process them until the action associated with each key press is complete. eg. if you get input like A,B,C, if you process A and it fires something async, then don't respond to B until the action from A is done if it's possible that they affect each other.

More generally, this programming pattern of finding clever complicated ways to hide the fact that your systems are overly bloated and slow is just not the win. You will only make the failure cases less common but more ugly. For example in this particular case I'd rather have a slow modal popup than an unpredictable async popup.

Now, there certainly is a place for asynchronicity in GUIs, namely in tasks spawned from GUIs that run in a pane. When you start some long process, that should be async from the GUI and run on its own thread, but I would argue that the entire GUI should run on one single thread and GUI drawing updates of things like icons and buttons should not be async (not any aspect of it that affects user input - purely visual updates could be async). So like for example, when you open a new folder, the population of the list for that folder should NOT be async because the user may be typing characters to navigate to names within the folder, and if you populate async you will screw up the response to their typing (it could be okay to be async here *if* you make it respond in the same way that it would if it was synchronous!). Ideally GUI operations should just be fast and not need to be async.


How do we not have a fucking universal laptop docking multi-port thing !? WTF.

The delay of Windows/PC's recognizing USB devices is really tilting. Every time I move my laptop or plug in the keyboard, it's wait .. wait .. wait .. okay now I can type. Urg.

I'm trying this new thing where I put my computer on automatic standby after 2 hours. I've tried lots of reminder apps before to make myself get up and stretch, but I always just ignore them. Standby is a hard enough obstacle that I think it might make me actually get up - if nothing else I'll get up in anger because the standby will fuck up what I'm doing. But when I come out of standby I have to deal with the fucking USB.


Computer-laid-out maps are abominations. Hand drawn maps are beautiful and convey so much more information. (what follows are just links related to maps, not examples of great hand-drawn maps)

Metskers Maps in Seattle is pretty great.

FeetFirst is a non-profit that supports walking in Seattle. Their maps are only okay.

See also : City of Seattle Map of public art and Historic Places in Seattle .

5 comments:

Aaron said...

Wireless dock FTW. That new dell Z600 has one. Once you go that route you don't have to worry about the shitty hardware part.

cbloom said...

No, that's bullshit. The Dell Z600 is a regular old laptop like any other that requires a custom/specific docking station with a custom/specific interconnect. It just happens to use a "wireless" magnetic induction connection. It changes the situation absolutely not at all. I would still have to buy multiple docking stations for each usage spot and they would be locked to the particular generation/brand of laptop.

cbloom said...

I want a standardized wide docking connection that has power, video, usb, etc. , and I'd like to be able to plug desktops in it too, so that my box that provides processing and all of my user interface devices can be easily swapped around.

Ideally all peripherals should just be on ethernet now. SCSI over ethernet is fricking awesome. Then all computers would only need to plug a net cord and power.

cbloom said...

In more seriousness, yeah the Latitude Z is good (the Latitude E that I got for Alissa was the bomb).

The charging plate is a stupid gimmick IMO but the wireless dock for USB/etc is a nice step though overpriced.

It's not really a viable purchase though because the basic tech in it is very last gen. I need to buy a new laptop soon, but when I do I don't want to buy another for like ten years.

Aaron said...

Ars sez: "Dell has designed an elevated laptop stand that uses induction to wirelessly charge the Z600 whenever it's placed on the stand. If you're going to charge by docking (as opposed to just plugging a cable into the laptop), then this is a better way to do it than lining up proprietary ports.

Also of interest is Z600's built-in support for wireless I/O (video, USB, and sound) connections. The Z600's hardware establishes a UWB-based link with a Dell wireless docking station that contains a DVI out, two USB ports, and an audio out. The end result is that you can walk into a room, set your laptop down anywhere (perhaps on the inductive charging platform), and immediately begin using the laptop via a stationary monitor, mouse, and keyboard without plugging in a single cable. The whole wire-free setup is quite impressive to see in action, especially for someone who frequently juggles their MacBook Air between a stationary workstation (external monitor, mouse, and keyboard) and a recliner throughout the day." http://arstechnica.com/business/news/2009/09/dell-eyes-spot-as-the-apple-of-business-it.ars

I agree with the non-viable purchase and all that. A single cable (preferably some existing spec like Ethernet like you say) or wireless is the way to go though. This physical 'dock' nonsense will never work.

old rants