Do one thing and do it well

A perfect example: RadioTray

The shortened Unix philosophy of "Write programs that do one thing and do it well" by Doug McIlroy is something that is quite often ignored in and out of the Unix software world. There are obviously cases where it definitely cannot apply but for most things I do on Linux these days, I like having a specific tool for a specific job.

The job: streaming radio

Such a simple task right? Before I found Radio Tray it would always be a rather large hassle using a bigger piece of software such as Rhythmbox or VLC to do what is effectively an incredibly simple task that requires no play controls whatsoever except from 'select' and 'volume'.

Radio Tray is not a full featured music player, there are plenty of excellent music players already. However, there was a need for a simple application with minimal interface just to listen to online radios. And that's the sole purpose of Radio Tray. - via Radio Tray @ SourceForge

Radio Tray handles the task beautifully while keeping the configuration simple and the interface out of the way. It has no detached windows in common use and is controlled solely from the task tray in Gnome or KDE with a simple left click giving a nicely separated list of your online streaming radio stations, grouped in whatever fashion you please with simple separators or drop-downs. A right click allows configuration of the radio stations (which in itself it simple, only name and URL for each station) and a scroll of the mouse wheel while hovering over the icon will change the volume level.

It's simplicity at it's best and what's more is the notifications you get thanks to the likes of python-notify and the fact it seems to handle anything you chuck at it including PLS, M3U, ASX, WAX & WVX as it's based on gstreamer.

Take your stations anywhere

Another philosophy the program abides by is to "store data in flat text files" - the program stores both it's config file (config.xml) and it's bookmarks file (bookmarks.xml) in your home folder under ~/.local/share/radiotray/. This makes it incredibly easy to backup and keep your configuration and list of radio stations portable, either by simply copying them to a USB stick or by keeping the files in some kind of central repository. For those that know how to use git, you can find my list of bookmarks on Github. On setting up a new pc, all I have to do is checkout the repo, and then symlink the location of where it expects the bookmarks file to the one in the checkout (ln -s /path/to/repo/bookmarks.xml ~/.local/share/radiotray/bookmarks.xml) and that's it - all my additions and changes to bookmarks will be synced everywhere (with a quick push and pull from the repo).

Oh, and did I mention it's all coded in Python?

Enjoy the post? You can follow me on twitter for more.