Tuesday, July 10, 2007

David Mertz

David Mertz is author of Text Processing in Python, and recently worked a gig under the title Secretary of Ontology. He is enormously fond of words and of the things they might describe.

In describing my computer desktop, I was tempted by the slightly flip answer of writing: "My desktop is called bash." That is not quite true, however. While bash is probably my favorite application, I mostly use bash to launch other wonderful applications like grep, sed, wc, cut, paste, tr, head, sort, wget, tee and their friends (often with all that yummy piping and redirection bash allows). Moreover, there are other applications I like nearly as much as bash: IPython, ssh, a decent text editor, even an interactive web browser.

Readers will probably have gathered that David isn't primarily a Windows user. All the commands he mentions have stood the test of time in the UNIX command shell, and are now Linux staples (though they are also available on Windows through the magic of Cygwin, which I commend to Windows users interested in dipping their toe in the Linux waters).

All of these favorites I mention have something in common, perhaps something easily predictable from my background and known interests. The applications I like inevitably follow the the patterns "text in, manipulation, text out." In fact, most any sort of icons, toolbars, or graphical elements serve as mere distraction to me, being ultimately low in information content for the pixels they occupy. A desktop for me should simply arrange as many WORDS as possible in an easily accessible, and rapidly cognizable, fashion.

This is less surprising when you consider that David is the author of Text Programming in Python and the author of many technical articles.

Were I more monastic in inclination, I would follow Ian Bicking in using the Ion window manager. Out of a certain practicality, I instead generally use Gnome, or KDE, or OSX, but in each case with desktop, dock, or taskbar elements reduced to minimal intrusiveness. All of those do enough to get out of my way that they impose little burden. MS-Windows, naturally, I simply do not touch, except reluctantly at the end of a VNC session pointing to a single maximized application.

For a text editor, I marvel at the efficiency of my colleagues who know Emacs or Vim well; but I settle for merely good editors like jEdit and Kate. Once all unnecessary toolbars and ornaments are disabled, these editors have what I really need to edit either code or essays (without requiring the cognitive load of Vim or Emacs): multiple vertical editing panes; tabs that display all the open documents in a project; syntax highlighting; reasonable language-mode behaviors.

Who could take exception to this? Your editor, meanwhile, is beginning to wonder if his own interest in graphical tools makes him an oddity in the Python world.

Which brings me to one of my favorite, now widespread, interface conventions: document/context tabs. My text editor must have it. My web browser must have it. My terminal also must have it: gnome-term is good, as is konsole. On OSX, iTerm is a welcome improvement on Terminal.app. Since screen size is limited, tabs present a minimally intrusive method of displaying and switching between contexts within the same type of thought process. For example, in a terminal, I often have multiple tabs, each pointing to a different SSH host (and each labeled by host name).

Let me wrap up with a few words on physical configuration. At a recent gig, I was lucky enough to work at a place that did not skimp on computer equipment. In particular, 30" monitors were readily available, with good multi-monitor capable video cards. The configuration I liked was two side-by-side landscape-mode 30" monitors providing one extended desktop. I know more about xorg.conf settings than I might have wanted to (OSX is far easier here), but the final setup is nearly ideal.

Of course such a setup isn't for hobbyists, but I know people who argue (correctly, I believe) that in certain environments such equipment can pay for itself in days in increased productivity. But it's going to be a while before hobbyists can afford to run like this.

With dual 30" configuration, I find that I can open a text editor on one monitor, with three document panes, each extending top-to-bottom (and many more than three tabs showing all the project files I might edit in a given pane). On the other monitor, I can display two full-height terminal windows, each having multiple tabs. And the final 1/3 horizontal of one monitor can contain a tabbed web-browser with multiple tabs (preferably each URL pointing at predominantly textual web pages).

Finally somebody submits a screen shot that includes an application! This is encouraging after a black rectangle and a purely virtual or imaginary image. And look - he's reading On Your Desktop! Maybe this blog will go somewhere after all. Well, one can hope at least ... from little acorns, mighty oak trees grow.

By maximizing each window vertically and removing extra space between windows, the above configuration gives me six [note: David mocked-up the above image in the absence of his preferred setup, which is why you only see four] panes of purely textual information to quickly compare. For example, the output of a program might appear in one bash session; three of the source files of that program show in editor panes; a web page displays the documentation of a library I am utilizing in that same program. A maximum of information relevant to a current task is available merely by moving eyeballs, without requiring navigation to other documents, files, URLs, etc.

Thanks for sharing your desktop with us, David.