My Linux stack

Saturday, 21 October 2006, in categories: Linux, Emacs

Well, I was bored a bit today. As usual I started Firefox and I’ve tried to find something interesting on reddit, del.icio.us or digg… I found nothing, so I thought I would write something interesting myself to kill the boredom :) I’m now “the guy who wrote the interview with famous programmers” and I don’t even hope to beat the popularity of that post ever with anything, so I will just try to have some fun now.

One of the topics I like to write about is software. And as I have been using Linux exclusievely for about two years and for seven years in general I have been writing mostly about Linux or cross-platform essentials. I don’t want to repeat the topics one-by-one or translate my Polish posts, so I thought I would write just one post gathering the essence of my knowledge about Linux.

Gentoo GNU/Linux

Yes, I use this distribution that you need to compile from scratch… I cannot help that it happens to be the only reasonable distribution around. Ubuntu is screwing me up alone with the 50 packages only to get a running Ruby, with Debian you have to either use 2 years old packages or deal with the unofficial repositories mess etc. With Gentoo I have got everything customized to my needs, optimized for my computer (but you loss more time compiling that you will ever gain by optimizing)… But the best thing is portage. You have everything in it, I have maybe two programs installed that aren’t managed by Gentoo and they are really exotic things. Even my emacs packages and -ck kernel sources are from Portage. Great stuff.

-ck series kernel

Whats a system without a kernel? -Ck from my experience happens to be the best solution for a desktop system - releases are both rock-stable and give a performance boost you can really feel. For a real bleeding-edge one should also use Resier4, but it destroyed my data a few times despite its performance, so I just sticked to XFS.

Gnome

The desktop environment is the part of the system that I used to change most often, looking without succes for salvation… Currently I use Gnome, because you can change icons, theme and fonts from GUI. I would rather run XFCE 4.3beta with less crap, but Alt+Tab didn’t work there for me. And 4.2 sucks even more. Also this deskbar desktop search is a nice try to rip of what Quicksilver proably was 10 years ago or so.

GNU Emacs

I’m a programmer, I spend at least a few hours a day in the text editor. Comfortable work in the editor is essential for my flow - one can’t focus on conceptual work if he needs to fight with the software to open the correct file or do a quick search/replace. Its hard to describe in such a short piece all the great features Emacs has, so just a skim: syntax highlighting, auto indent, fillable snippets (ala TextMate), version control systems integration, regexp search/replace (now also with command execution on matches), rectangular edition, quick file switching (with ido-mode), embedding an sql console/shell/interpreter, validating xhtml on the fly, spell checking, tailing a log inside, viewing differencies between files, sudo editing… and so the list goes. And the best thing is you can hack your own stuff - for example I have all my programming projects in separate directories inside “~/projects” - so I created a bunch of elisp to let me choose a project first (with input completion and hints of course) and then choose a file from the whole project directory tree (also with the nice additions). If you’re interested in Emacs don’t forget to visit the wiki. If you also happened to speak Polish check out the introduction by Martinez.

Mozilla Firefox

When I’m not in Emacs, I’m proably in Firefox. It’s not perfect, it eats a lot of memory, it crashes sometimes, but there is nothing better around for me. All the nice stuff is in extensions… I use Sage for reading RSS, del.icio.us for bookmarking, Tab Mix Plus for tabbed browsing customization and session saving, ViewSourceWith for Emacs integration and last but not least the killer combo for programmers - FireBug + WebDeveloper. Working on CSS/JS/AJAX is two times as easy when you have those installed. For eye-candy you have those cool skins, some of them seem to work quite nicely with linux (especially after tweaking the userChrome.css a bit).

Sylpheed

I’m not that much of a buisness person to get a 100 mails every hour, but email is still one of the most important mediums for me. I get about 10 messages a day, most of them regarding my programming work. I don’t have too much requirements from an e-mail client - just basic stuff everyone uses… But finding such a program is really painful. Configuring two email accounts in Thunderbind is so complicated and unituitive that I lost my nerves. I don’t groupware features, contacts and appointments, thus Evolution is too much. Sylpheed is small, fast and has a lot of nice features - like perfect spam filtering, advanced searching etc.

Gaim

I use instant messanging all the time - both for work and play. In Poland people are basically split into two grups - young people massively use the GaduGadu, and IT proffesionals communicate with Jabber. I don’t want to use two clients and the Jabber transports are down too often. With Gaim I can have it all natively in one application. The interface is nice and pretty, all the features are in place. I didn’t had any problems with it for a very long time and I can’t say that about a lot of other applications.

VMWare Server

This one lets you run a PC inside your PC. You can run another Linux, BSD or even Windows in it either just for fun or for professional use - like checking how your application behaves on different systems. Its not open source, but free of charge, in case you wonder.

Rxvt-unicode

A terminal emulator is one of the applications where a typical user of linux spends a lot of time. Rxvt-unicode gives you Xft fonts, low memory usage, real transparency, a searchable scrollback buffer and of course full unciode support. Its scriptable in Perl, too, so you can extend it to fit your own needs.

Zsh + GNU Screen

Using Linux without using a shell is like using Windows without seeing a blue screen, and zsh seems to be the best shell around for me. You have intelligent completion for a lot of things, even for ./configure scripts, mplayer options or whatever - not just for files. You can cycle the completions not just with TAB, but also with arrows using a nice menu-like thing. You can also rename hundreds of files using regular expressions (that one can also be done nicely in emacs with dired/wdired). For other nice things one can do with zsh visit: Zsh lovers.

GNU Screen is a great keyboard-handled replacement for a multi-terminal in X11, to describe it really quickly.

GNU Coreutils and stuff

The essence of UNIX philoshopy is to combine very simple tools doing one job well to solve even complicated problems. Utilities like grep, find, sed, wc, uniq, xargs etc. are those “tools”, and you combine them using your shell, pipes, redirections etc. With tools like netcat, ssh, wget and curl you can use the same magic to rule the internet. If you know a good scripting language like Ruby or Perl you’re dangerous.

Subversion

Version control is a must for me those days, both for professional and personal routines. Subversion has some problems with doing simple things I really don’t like, but there is nothing better around for free I think. And its damn useful neverthless the quirks.

Audacious / Listen

This music stuff its problematic. In general, there are two categories of such programs in Linux - WinAmp rip-offs and iTunes ripoffs. Audacious is currently the only option for #1, although his older brother Beep Media Player was better before the authors decided to make it more fancy… Those iTunes ripoffs most often hang up when creating collection (ie. due to poland-specific letters in filename) - but Listen actually seems to work and does some nice stuff like looking up informations about artist in Wikipedia or filling the playlist based on data from your Last.fm account.

Mplayer / VLC / Xine

Everybody likes to watch a movie from time to time, sometimes it isn’t even a porn movie. I use the duo VLC / MPlayer for this and they both share the same general characteristics - the backend stuff is great, but the interface is pure shit. So i don’t use it, I supply all the options from command line. The fun part is that this duo will play every format you can find when set up correctly. And VLC with Milk skin looks nice at least until you open any of 2^64 dialogs it has. I use Xine mainly for playing dvds, because mplayer doesn’t handle menus, and VLC crashes when trying to use one…

GQView

When you don’t have any interesting movies, you may want to look at pictures, too. GQView is quick and has all the options I need, like setting a zoom level and keeping in through various pictures you browse.

GIMP

For a graphic skills-disabled person I use GIMP quite a lot. Mostly simple things - slicing layouts, designing my own web pages once in two years or so, scaling and cropping photos, thats all. I don’t love it, drawing a black rectangle in it could be a little bit easier, but well, I did a lot of work with it, so its usable.

Conky

This little tool allows you to put some nifty little mostly text-based widgets on your desktop. It can display CPU usage, the amount of free space on you hard drive, it can show a tail of one of the log files, whatever. And it doesn’t steal you that much resources as some of the simillar applications. It looks good on a screenshot, too.

OpenOffice.org

There is not much choice in the office software “market” for Linux. Things like Abiword or Koffice work about 20% of time and have problem opening even not that complicated MS Word documents. OpenOffice as an office package sucks a lot too, but at least it has a nice pdf export.

Ruby / rails / PostrgreSQL / Exim / lighttpd

My web development stuff for work. I’m happy with it most of the time and thanks god it was easy to setup it gentoo. Setting up a small server stack for 127.0.0.1 testing purposes can be pain in the ass with some distros and some databases / servers…. Programming in Ruby / Rails is pure joy, but this is something for yet another article.

Besides the desktop environment I use pretty the same stuff for a long, long time. Its definetly the best Linux software set from everything I tested and I tested a lot, because I love to test new software. As you can see it’s all gtk+ software - there are some nice qt apps (k3b, kmail, maybe amarok) but they are not worth breaking the integrity of the environment or installing the whole kde bullshit.

One last thing… I have a little nifty bonus for you. I video-captured my setup to show the world the nicest bits and pieces of it. You can download it from Google Video or a high-res version from Rapidshare. This proably tells more about how nice Linux can be than the article itself. And it was also created using open source software - xvidcap, kino and mencoder. Have fun watching it :)

[ Remember I’m a geek without personal life, you’re mileage may vary. ]

The song used in the movie is Shine by Renfield on a Creative Commons license.

Add to del.icio.us / Add to reddit.com / Digg it!

Comments (RSS):

Stifflog - Emacs packages roundup, 31 October 2006, 10:45 am

[…] - Ido-mode makes opening files and switching between buffers sooo much easier. As you type the file path or buffer name, this package shows you possible completions - string containing the substring you entered. Its a bit hard to explain, take a look at Plentypopes screencast or my own Linux demo to get the idea. […]

Phil, 5 December 2006, 9:07 pm

A few suggestions about software I can’t live without:

Conkeror - If you’re big on Emacs, this will make using Firefox much less painful. It basically makes each Firefox tab act like an Emacs buffer; you can switch between them with C-x b, scroll around with C-n/p, and all the useful stuff you expect from Emacs.

MozRepl - Firebug is half-decent, but the console is pretty simplistic. MozRepl allows you to interact with the guts of Firefox with a REPL like IRB. It even integrates with Emacs and acts a lot like SLIME does for Common Lisp.

MPD - For playing music, the Music Player Daemon is really handy. It has a unique client/server approach to music so you can have one machine act as a server and you can use clients for practically any OS or GUI. GNOME, CLI, Mac OS X, and even native Emacs Lisp clients exist.

Sawfish - It’s a window manager. It’s scriptable in Lisp. That about sums up the awesomeness. I use it in conjunction with other GNOME components (panel and nautilus, mostly) as a simple replacement for Metacity, but it can also be used on its own.

My whole setup is optimized to minimize mouse usage, and I’ve found it does wonders to reduce RSI.

stiff, 5 December 2006, 9:20 pm

Thanks for the suggestions!

Alex, 6 December 2006, 1:01 am

Can you please repost your high-res video on Rapidshare againt. it has been deleted.

stiff, 6 December 2006, 8:03 pm

I updated the link, it should work again.

Nehemiah, 19 December 2006, 3:38 am

r you using aiglx (i may have that spelled wrong) or compiz (Novell’s xgl)?

stiff, 19 December 2006, 8:44 am

I’m using aiglx + beryl, or at least this is what I think I use ;)

Stifflog - The road to become an alpha programmer, 21 March 2007, 11:08 am

[…] This is where holy wars start, so I want go too much into details, for my software setup checkout the post called “My Linux stack”. Use your search engine of choice to look for more options - everyone has his own preferences. Also remember that tools change every year (besides emacs) and the fundamentals stay always the same… Some general tools resources: […]

Thorben, 8 May 2007, 7:02 pm

Nice setup.

I checked, I am a gentoo user since 2002, which is also around the time when windows left my hardware for good. I am really at home with gentoo, too, however, my stack looks a bit different.

I am pretty much indifferent about the kernel, as long as I get reasonable support for my hardware.

As a window manager, I use wmii, heavily customizeable with your scripting language of choice. It features a menu bar similar to the quicksilver extension for osx, with really fast incremental search in all binaries in your $PATH. hit Alt+P, type “fic” and there you go, openoffice starts up (first match for “fic”) ;-). of course, you can redefine your keyboard commands and stuff. another feature is, that you don’t get to see the background of your desktop (unless you have transparency of course). any application window is scaled to fullscreen, which gets divided, once another application is started. you get as many virtual desktops as you like, each one accessible via it’s own “tag”, which you define on the fly and via keystroke put application windows there. it is rather difficult to describe, but immensely useful and increased my productivity greatly, compared to window managers, where you have to click around all the time. and i forgot, startup time is 2 seconds, no kidding. you might want to have a look at eigenclass.org/hiki.rb?wmii+ruby

for listening to music, i exclusively use amarok. there is no mp3 player out there, which does such a great job on managing huge amount of music. features incremental search, scripting, remote access, skins, access to streams, smart playlists, automatically looks up artists in wikipedia (to be shown in the player window), downloads lyrics from various sources, and downloads cover art from amazon. amarok.kde.org

for email, i use google mail, as i often change machines… also for documents, i mostly use google documents.

i almost exclusively program in python, although i have expertise in java and prolog.

of course, emacs is my favourite editor, but when I’m lazy, i fire up eclipse.

greetings from germany

Comment this post: