I use Windows, Macintosh, and Linux computers regularly, but I use them basically the same way, so I here's how I use Linux. I use a computer to edit text files in a variety of computer languages, read and answer email, browse the web, edit documents in a variety of formats, and run numerical programs that constitute experiments in machine learning. This document enumerates my favorite tools for accomplishing these tasks. My intention was to focus on less-well-known details, but I don't think I know very many.

I work in X11 most of the time, but occasionally I work in the console. (You can get a console from within X11 by pressing CTRL-ALT-FN, with N=1-6. You can get back by pressing ALT-LEFT enough times.) My preference in window managers/desktop environments has been maturing steadily over the 8 years I have used linux. First I liked Enlightenment (for the graphics), then I liked gnome (for the integration and the graphics). Then I liked blackbox for the speed and simplicity, then I liked fluxbox for the speed simplicity, and tabbed window feature. Then I liked ion3 because it allowed me to control my workspace from the keyboard, and because it could have completely fullscreen applications. Ion3 (circa 2005) is a great window manager, so long as you avoid programs that use dialog boxes or little popup windows, because these are not handled properly. Now, I have left my beloved Ion3 for GNU Screen, paired with a patched xterm that goes full-screen when you type ALT-ENTER. ( Here is the Xdefaults file that sets up xterm just right. ) This gives me a fullscreen text environment for editing text, as well as a modern window manager for programs with graphical interfaces, such as gimp, firefox, xmms, and KAsteroids.

Mostly what I do on the computer is edit text files, such as emails, program source, and html. For this I use vim. I use the folding feature, and the desert color theme (though sometimes I turn the background darker). I usually use vim in terminal mode (not gvim). Vim-Latex is good for editing LaTeX. Vim can

It also does about a million more things... sometimes by accident... which is why it's great that vim can undo recent changes (esc-esc-esc....-esc u)

For email I use mutt. When I think I've lost an email, sometimes mairix finds it. Unfortunately the key to check for new mail is the same one as for purging old mail [can lead to accidental erasing!] so I use this method for safe deletion. I send email though iro's heavily fortified smtp server with nbsmtp.

To browse the web I'm happy with the stock Firefox, but sometimes lynx.

To make computer programs, I usually pair BASH with C or C++. LibMSL even works with GNU autotools if you can believe it. I've been pretty happy with OCaML, but I haven't paired it with C yet.

Here is a screenshot of what I might, at this very moment, be looking at: editing c code with vim.