JNRowe

Software conservatism

This miserly user's must-have software list

Software conservatism

I’m pretty set in my ways, and I happy with that realisation too. I know some people who are continually trying every new piece of software that passes by, but that just isn’t me.

Also, I have noticed how often the topic of must-have software comes up all too often over lunch with other geeky types. Being geeky enough to want to hear about some new technology you’re working on, or even your scathing review of some project I’m working on, I’ve decided to put this page together as a place to point people, so I can get on with discussing the interesting things.

This page was initially here to list some tools I used for mail processing in response to some emails about an article published many moons ago in a journal that doesn’t understand the value of web archives. I’m just going to hijack it, defocus it and reuse the URL.

Note

I know I started out by saying I’m stuck in my ways, but if after looking at the comments on this page you think you know of a piece of software I’m going to like or that solves any problems I mention please drop me a mail.

Desktop

  • enlightenment is, and has been since 2000, my window manager of choice. Simple, fast, nice eye candy and above all highly configurable(some people might even say too configurable). Since the Summer of 2006 I’ve been running E17 almost exclusively on my desktop and there have even been a few occasions where it has been run on my smartphone.

  • gselt is a GTK+ selection tool which opens a window containing user defined buttons in response to the changes to the X cut buffer. The config file uses RegExps allowing you to easily define actions for URIs or anything else for that matter. Highlight a URI in one window and a GTK+ dialog appears allowing you to send it to a viewer application, simple and really effective.

    Thanks to Adam Sampson‘s feverish coding of suggestions gselt handles every case I could want. gselt v1.2 ships with what is essentially my configuration file, but if you can think of new ways to put it to work I’d love to hear about them.

  • rxvt-unicode is the best Open Source terminal editor I’ve ever used, incredibly lightweight and very fast. It also features a wonderful client-server mode, that makes rxvt-unicode even lighter on resources and even faster on startup. It also supports scripting with Perl.

  • unclutter is a simple tool which hides the mouse cursor after a defined amount of mouse inactivity. No more having to knock the mouse out of the way when you are reading text on screen, which is a real bonus for people like me who keep mouse usage to an absolute bare minimum. You can even set a “jitter” mode so the pointer won’t be unblanked if it only moves a certain number of pixels, which covers all those times I slide the keyboard shelf about.

  • xdaliclock is a morphing digital clock. I personally use it as a desktop clock, which is always on top and with the sticky option set. Because it “melts” between the times that it is displaying it is very unobtrusive, say goodbye to those focus-killing flickering desktop clocks.

  • xosd is a library for imitating an on-screen display as found on many monitors and televisions. It isn’t strictly just a library it includes a command line tool for driving the library. Bindings are also available for most scripting languages and xosd makes a really nice feedback mechanism for all sorts of tools.

Office

  • Abiword is an incredible word processor which I’m sure most people are familiar with. It is fast, light and perhaps most importantly for me built around GTK+. There is no better word processor, in my opinion, for writing quick letters/faxes/etc.
  • gnumeric is my spreadsheet of choice, if I don’t have to think about dealing with broken file formats anyway.
  • gnuplot has to be one of the best plotting tools I’ve ever used, it can be a little tricky to use at first but once you get used to it you will find it hard to beat it. Sometimes the ancillary tools from GNU Plotutils fit my needs better and as such they are also installed.

Web

  • elinks for text based browsing. This used to be limited to a few news sites and archive sites, but I’ve noticed that over the past few months I’ve been using elinks more and more. elinks is a much improved version links, that includes a tabbed interface and better terminal support compared to links.

  • webkit based browsers of one kind or another, currently epiphany with its fancy new webkit backend. It is at least as standards compliant as mozilla based browsers, but it doesn’t eat 2GB of memory in fifteen minutes. webkit is also astonishingly fast, and with epiphany the difference is incredibly apparent because one is used to using the mozilla rendering backend.

    Although, I do have to admit I would rather use the faster, smaller and equally compliant Opera browser but the license doesn’t sit well with me(and it doesn’t run on many of the operating systems or architectures I use either). If Opera suddenly decided to ship source I’d jump ship so quickly I’d leave cartoon style speed trails.

Mail

  • mutt, with vim as my editor and msmtp to push mail to SMTP servers. Mutt is a fantastic text-mode MUA, I’m sure most people have tried it already. It appears you either love it or hate it. I can’t recommend it enough to people.

    I’ve recently added a page describing some of the configuration options I use with mutt, that describes some of the stranger settings I use.

  • rss2email is great little tool for processing feeds and sending mails for new items. Despite its name it supports real formats like Atom thanks to using feedparser.

Development tools

  • Midnight Commander is the closest thing to a GUI file manager I use. Its feature set outstrips most full blown GUI file managers by far, whilst still being simple and fast to use. It allows you to browse archives, patches, FTP, Samba shares and anything else you care to write a wrapper for.

  • I use Mercurial for tracking nearly every project I work on now, and I also use it to manage the configuration files in my home directory. A small twist of licensing fate prohibits me from using the VCS we use for private projects at work(that I also wrote a large chunk of the code for), but Mercurial matches it in almost every regard.

  • I’ve been using Ruby for almost every project I start since the middle of 2003, unless there is a definite requirement for a specific language. I just find myself to be considerably more productive with Ruby than any other language. There is an inherent beauty to Ruby’s object design that just puts everything else in the shade.

  • I do actually consider diffstat to be a necessity, it is a wonderful tool for sanity checking patches you’re about to mail out. It also provides a very clean, and useful, representation of a patch that is perfect as a first-level patch display tool in mutt.

    Thomas Dickey deserves a medal for diffstat alone, and the speed of his responses to bug reports is incredible.

Miscellaneous tools

  • bash is quite simply the only shell worth using for interactive work, if you believe a feature you like from your current shell is missing in bash it is probably because you’ve missed the section in the documentation. Perhaps it could be a little smaller or faster, but the features far outweigh those minor drawbacks.
  • dtach is a tool that delivers a GNU screen style detach feature, which is great for those times you need to carry a shell session across desktops or between X restarts. In my case I tend to use dtach a lot when debugging X builds, so I can pick a session up if X dies.
  • splitvt implements the only other useful GNU screen feature; a split screen mode. It isn’t capable of all the fancy tricks GNU screen can do, but it fulfils it purpose well and with a minimum of bloat and doesn’t break the keyboard handling of tools as often as screen does. That being said it doesn’t cope very well with Unicode terminals, which limits its usefulness.
  • mpd for playing music, because it is small, fast and does everything I need. I almost always have a ncmpc session running from the console via dtach, and then just connect to the dtach socket in X if I want to send commands to it. As far as a graphical client is concerned I’m huge fan of gmpc, and often use it for playlist management.

Return to Top