software.
Like many UNIX users, I have a tendency to spend lots of time engineering
a perfect operating environment. Here are some details on the software I
like to use on my desktops, with all the tweaks I've made to them, excluding
things like vi and basic UNIX utilities. All the tweaking took too much
time, but it made me happy. One thing I've learned over the years is that
usability and learning curve are completely separate things, and are often
inversely proportional. Many software packages that take longer to learn
make you more productive in the long run. If you're a casual computer user,
this often means that traditional GUI apps with short learning curves are
best for you. If you spend a serious amount of time on them, it's worth
investing in more challenging, but ultimately more rewarding software.
FreeBSD
The OS that I use for almost everything. I do have to keep OSX around
for audio recording and sequencing, but having an OS that isn't ruled by
a corporation and where all applications are free, modifiable and have
no DRM is simply a beautiful thing. No license headaches, no "warez", no
viruses, and low resource consumption. I've tried most every OS, and I
always come back to FreeBSD. It's not for everyone, but it's very much
for me.
zsh
zsh is my shell of choice, because it's forgiving of my wanton mashing
together of csh and ksh-isms, and because its tab completion is
brilliant (if dog slow). I've set up completions to finish URLs for w3m,
hostnames for ssh, package names on remote FTP servers, hostnames from
LDAP servers, etc. It does many tricks. My zshrc.
dwm
After probably 10 years of using WindowMaker/Blackbox/Openbox, awesome finally pulled me away.
Of course, the author of awesome has since gone insane and crammed in
tons of widgets and lua support, so I switched to dwm.
So now I use dwm. It's incredibly small and efficient, and follows the
UNIX philosophy. The idea of tiling window managers is that all screen
real-estate should be maximally used. Ideas like docks or menubars are
not generally compatible with this. So, rather than cluster apps in
a menubar, windows take up as much space as they can get and arrange
themselves automatically. Resizing or moving windows manually is almost
never necessary, and the keyboard can be used for almost all navigation.
Virtual desktops are replaced with "tags", which can be merged into each
other.
The dwmstatus.sh script, started from my .xsession file,
sets the status bar to have the current machine load, battery life, and time/date.
I also use the ``push'' and ``gaplessgrid'' patches.
You can compare my current dwm config.h to an equivalent
awesome rc.lua.
mutt
Mutt is hands down the best mail client I've found. I've tried many, and
I still like Thunderbird, but mutt is so much faster, more flexible and
featureful that I can't stop using it. I hate it and love it - there's nothing
it cannot do. It handles mailing lists great, supports pattern matching for
tagging or deleting, and does proper threading. I have a little mailcap
that uses the mutt_bgrun script to spawn a GUI app for handling attachments, or just converts the attachment
to text and views it inline (if I'm not using a GUI desktop). It uses programs
to convert Excel, Word, HTML, and images to plain text. Check out my .muttrc.
cmus
cmus is to music what mutt is to e-mail. It's console-based, very fast, and
has pretty much every feature you'd want. I used to be very into Amarok, and
I still use it for some things, but cmus starts instantly, is unobtrusive,
and can be made to do lots of nice tricks like integrate into last.fm.
I particularly like the lqueue and tqueue functions (my ideas!), which are basically
"party shuffle" for albums or tracks, respectively.
I use this status script to update things on
track change. It does the following:
- Submits track data to the last.fm helper, "post.fm".
- Changes Pidgin's status message to the currently playing track.
- Tells cmus I want it to move to the currently playing track.
- Updates the awesome status bar of the second monitor to display the track info.
- Looks for cover art in the folder of the currently playing track. If there is some,
it will be displayed along with the track info in a libnotify popup.
w3m
w3m is deceptively featureful. It's a text-only web browser, but it does a great
many things, and I find myself using it quite often. Among its many features:
- Not rendering images
- Not showing Flash
- Not supporting JavaScript
- Tabbed browsing (!)
- Actually being fast
- Compact enough to exist without obscuring other windows
- Text boxes can be edited with your favorite editor
- Fast vi-like search
publicfile
A vastly under-appreciated HTTP and FTP server. There are relatively
few services facing the external world that I run, and I demand that
the ones that I do (with the sad exception of OpenSSH) be bulletproof,
lightweight, and never have any security problems. Publicfile is all of
those things, plus it's trivial to set up and configure and delightfully
minimal.
djbdns
As with publicfile, I run this because it's simple, easy and has no
possibility of security issues. On most of my systems I use a local
dnscache, so I never have to worry about DNS issues when moving my
systems around or external DNS servers going down. It's fun to sit
around watching the same BIND exploits happen over and over again
and never have to worry.
calcurse
I had always wanted something like calcurse, and only recently found it.
It does everything I want in a calendar and todo list, all in a terminal
window, with a simple interface. And, it handles iCal import and export.
audacity
I actually use this as my home recording solution. It's cross-platform,
functional, and free. Quality audio software is really hard to find for
free - it turns out audio programming is hard - so I appreciate this
software all the more.
tmux
For over a decade I've used screen for running
multi-window sessions on remote machines. I've only recently switched to
tmux, which fulfills
much of the same purpose but with some more modern and desirable
features (and a BSD license).
LaTeX
I had never used LaTeX before last year, but took to it quite quickly.
I'm becoming more and more convinced that WYSIWYG document creation
has some serious disadvantages. Using LaTeX at work has made document
creation much less stressful and easier for me. It certainly has its
infuriating annoyances, but not nearly to the degree which OpenOffice
and MS Word have. Well, to be perfectly honest, LaTeX sucks, but I
haven't found anything that sucks less. And as is probably readily
apparent, I enjoy learning arcane skills that yield superior results.