Sometimes people (especially Windows users) ask me what I use for some common task in Linux. These are my software preferences when working on various environments; your mileage will definitively vary.
My software preferences
- Operating system:
- GNU/Linux, namely Debian GNU/Linux. I have used on my own computers, all in this exact order, SUSE Linux 9.1, 9.3, openSUSE 10.0, Mandriva Linux 2007.0 (free version), Ubuntu Linux Something, Knoppix 4, openSUSE 10.2, openSUSE 10.3, Ubuntu Linux Whatever and finally Debian GNU/Linux 5.0 (lenny) both when it was the testing distribution, and as the new 2009 stable distribution. I have also used Fedora Core 4 and 6, and Kubuntu Another in public computers. That said, I do not usually recommend Linux to “non-computer people”.
That said, I have also used virtually every Windows version ever and I tend to prefer Windows XP to the rest nowadays.
I have also used FreeBSD a bit out of necessity, and learned that I'm too used to GNU coreutils. - X11-based Desktop Environment:
- KDE 3.5 or KDE 4. I don't understand those people who claim that KDE sucks and it's too “Windows-like”. I've got to say I can't stand GNOME and Gtk2-based software at all and if there's a KDE or Qt-based counterpart application providing similar functionality, I'll use that instead. That said, I don't use every feature of any desktop environment since I do most tasks with terminal emulators running Bash sessions; console applications are most often faster and lighter than their GUI counterparts, and in the case of simple file system operations (copy, move, etc.), the console shell commands are usually more flexible than the GUI front-ends, and analyze less details about the objects they manipulate, resulting in better performance; this is something that I learned with MS-DOS/Windows 95 rather than Linux, which is possibly an advantage over other Windows users migrating to Linux.
- Text editor:
- Kate if I can get away with it, for C, C++, Perl, PHP, Bash scripts, Wesnoth WML, XML, HTML/XHTML documents and CSS. Vim otherwise, although my skills with it are those of an eternal newbie.
- Office suite:
- Microsoft Office 2003 and earlier. Yes, I know that free software purists would like to rip my head off for saying this. In my defense, I prefer plain text or HTML/XHTML documents.
- Graphics editor:
- The GIMP 2.2, 2.4 and 2.6. Why, yes, the version numbers matter when a development team insists in changing some important user interface aspects with every new series.
- Music player, video player:
- Audacious and the VLC media player, respectively. Bonus points for the latter providing a Qt4 interface.
- Web browser:
- No particular preference. All web browsers suck. Happy now? Okay, I do prefer Failfox Firefox over the rest, but if I need a failsafe environment I use Opera instead. Of course, I almost always test my stuff with some of the most common browsers: Firefox, Opera, Google Chrome, Konqueror and Internet Exploiter Explorer. I occasionally write blog posts on this subject, too.
- E-mail client:
- Kmail, although I'm currently using Icedove (the Debian fork of Mozilla Thunderbird) due to some outstanding bugs in the KDE 3.5.9/10 version of Kmail shipping with Debian lenny.
- IRC client:
- Irssi or KVirc, although telnet suffices if I'm too desperate/lazy to install an IRC client.
- Integrated Development Environment:
- None at all! I prefer to have separate specialized tools for every task.
- PC emulation/virtualization:
- Dosbox for old DOS games. VirtualBox (not the open-source distribution) for complete system emulation; interestingly, I used to recommend qemu but some changes starting with 0.10.0 disappointed me, as explained around the end of this blog post.
- Window manager:
- Plain kwin. I usually work with too limited hardware or display controllers that are not completely/reliably (if at all) supported in Linux so I cannot run managers with more bling like Compiz or else.
To achieve the best experience of binary Linux distributions, I always build my own kernel configurations by hand, removing lots of unused modules and features that I could not even hope to use, and enabling some processor class-specific optimizations. This has allowed me some significant performance boosts, especially with 64-bit systems. I could probably get even better performance rebuilding glibc with some special flags, but replacing a glibc is, in my opinion, more risky and complicated than installing a new Linux kernel of the 2.6 series.
Despite what some people believe, compiling a modern Linux kernel source tree on a modern machine (even a laptop) can take less than an hour or 30 minutes depending on the build configuration. Also, one isn't staring at the make output for that interval; it's called a multitasking operating system for a reason, you know.


