October 28, 2008

Workflow? More Like Workarounds.

Filed under: Uncategorized — numist @ 5:39 am

let’s get right out and say it: the problem with the application-centric model of Mac OS X is that it’s a flawed solution chasing a worthy end. each application does something, and in Mac OS (classic), applications usually aligned well with tasks. thus Mac OS has traditionally been application centric in an attempt to also be task-centric. this worked well, The People were Pleased.

but then the web got huge, so browsers became one application used for multiple tasks (Fluid could be considered a workaround for this problem).

then OS X shipped, and we got a terminal, which I used for everything. about this time I also got seriously interested in code, so my editors (vim in Terminal, TextMate, and XCode) would commonly represent a half dozen or more tasks at once.

now, using this wanna-be task-centric system is a usability nightmare. the objective that was once in grasp has since been lost, and there’s no visible movement towards a fix.

thus, my life became one of workarounds in an attempt to return to a task-based life. Spaces (released in 10.5.0) is a phenomenal advancement towards task-centric living again; you can put each task on a different virtual desktop, which increases focus and decreases clutter. unfortunately, until they added the checkbox of justice (added in 10.5.3), it was totally unusable because switching applications would often fling me into another Space – the realm of another task – completely ruining my workflow while I sat staring at my monitor, temporarily stunned.

ok, checkbox of justice set correctly, but now I have two browsers on this space where I’m working on TMBO. one is the site itself, where I’m hammering smooth the trainwreck that is my UI prototyping (really, I’m the least qualified person to do some of the things I do), the other window(s) is(are) documentation for the various things I’m trying to do. unfortunately, using loopy-tab just puts me on Webkit, whose topmost window may or may not be what I want. while I’m at it, the dozen other applications that are open on the system are showing up in the loopy-tab list, even though they aren’t present in this task’s scope, further cluttering up my brain.

in desperation, I began using Witch. Witch has a lot of potential, but in reality it’s not a great workaround for my problem, crippled by an impenetrable WindowServer and being non-proactive in its data collection. if an application goes critical somewhere and I try to invoke Witch, the UI doesn’t appear immediately. it doesn’t even appear after a short lag. while we wait, it polls for windows, and we end up waiting for the application that’s spinning to time out or return to normal – a total switching buzz-kill. by then I’ve already used my mouse (ugh) and have moved on, at which point suddenly Witch comes back to life, switching my active window, leaving my workflow interrupted.

it’s not all bad though. Witch has options to only present you with windows on your current Space (well, Witch was forward compatible with Spaces in that the option really only shows visible windows), and the result is almost exactly what you want when all systems are responding properly (ok, maybe it’s a little ugly).

too bad I can’t bind it to loopy-tab, because it’s a super-special key command that the system won’t share, like a screaming child during playtime.

the problems aren’t all system-based, I guess. applications like Twitterific, the least wretched desktop Twitter app I can find, don’t help – its window doesn’t show up in Witch because it prefers to operate from my menu bar (diediediediedie) and this further hurts my quest for an organized and sensical environment.

but that’s fixable (write a better twitter client). I can’t rewrite

you know what, if there are any Dock team members reading this post, I would like to work on your team. my project: fix the switcher to work on a per-window basis in an intelligent, configurable (and pretty. pretty is good too.) way. call me.



  1. Response from Apple: We already have a per-window switcher, its name is Exposé.

    I’m even partly serious, wire expose all-window mode to loopy-tab, add a “checkbox of more justice” to make the windows lay out in a horizontal row, add icon badging, and make it so that loopy-tab and shift-loopy-tab iterates through them forwards and backwards and you arrive at exactly what you are asking for. It’s probably a week or two of work tops for someone that knows the expose code, or they could give it to an intern.

    Comment by Blind Jimmy — October 28, 2008 @ 8:31 am | Reply

  2. Maybe you want KDE…

    Speaking of which, plasma is currently working on taking this further. (KDE already does the per-window thing right, folks figure why not go ahead and figure out what’s next afterwards?)

    Here’s some posts on the recent directions of where they’re trying to take portions of the project:

    Comment by djcapelis — October 28, 2008 @ 8:39 am | Reply

  3. @blindjimmy: “We already have a per-window switcher, Exposé” <– yes, but it requires lots of mousing :(

    you’re absolutely right thought, it shouldn’t be hard to write a proof of concept window switcher from the existing Dock codebase.
    the image I linked (the word “pretty” near the end) was literally a screen capture of my dock, with the windows minimized to it.
    badged with application, representative of the window contents, the hard work is already done.

    @djcapelis: my window/application navigation worflow in Linux has never had problems (and it’s good to hear that things are still improving despite this), but the reason I use OS X is because of a set of killer apps that add enough value to the platform for me to put up with its shortcomings and still feel a net win. if the same functionality were available on Linux, I’d go right back to it.

    Comment by numist — October 28, 2008 @ 9:01 am | Reply

  4. XMonad is completely the win. You can mark a window such that it appears in multiple workspaces (sort of like sticky, but more flexible). You can also implement this magic checkbox of justice in a line of code. And NO MOUSE REQUIRED. EVER. <3 it so much. It also works admirably in a multihead environment- better than anything else I’ve tried. You can explicitly switch windows to different screens, and even change the focus to the other window, from the keyboard. I really can’t speak highly enough of it.

    Comment by Mike Lundy — October 28, 2008 @ 3:58 pm | Reply

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at

%d bloggers like this: