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 Dock.app.
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.