My Favorite Software

Robbert Haarman

2003-03-04


Introduction

In this article I describe the software I use, and explain why I prefer it over the competition. Why should you care? Well, many people just use whatever software came with their system, or whatever was available or recommended by the store, which might have very limited offerings. I am not out to convince anyone to use the same software I use, my goal is to get people to think about the software they use, consider the alternatives, and find the solution that is optimal for them. Most software I have used is (legally) available free of charge, and most of it is Open Source, meaning that anyone with sufficient knowledge can, and is allowed and even encouraged to, enhance the software or adapt it to better suit a specific situation. I do not believe that all software ought to be free, it is just that the threshold for trying software is lower when it is cheaper, and it so happens that free1 software does a great job, not seldom better than competing offers from commercial vendors.


Operating Systems

The operating system is what it all starts with. All applications run under the operating system, and the operating system thus largely determines what applications you can run and how well they will run. Operating systems can be divided into several categories, based on their features. Two categories of major importance nowadays are win32 (32-bit MicroSoft Windows) and Unix-like. Desktop computers typically run win32 systems, whereas Unix-like systems are typically found on servers.

The win32 class can further be subdivided into winNT and what is often called win9x. The win9x series consists of MicroSoft Windows 95, 98, and Me, and is based on earlier versions of Windows and DOS. They provide more compatibility with older PC hardware and applications than NT. The NT series has its roots in OS/2, and is technologically superior over 9x, but doesn't provide as much downward compatibility. It consists of all versions of Windows NT, as well as Windows 2000 and XP.

Unix-like operating systems have traditionally been divided into System V Unices (derived from AT&T Unix), and BSD Unices (derived from Berkeley's fork of the original Unix). This is called the Great Divide, and it's cause lies in the fact that AT&T decided to no longer release Unix as open source, after which development continued separately at AT&T and at Berkeley. Both System V and BSD Unices are true Unices, as they ultimately derive from the original Unix, but there is also a large number of Unix-like systems that do not derive from it. One such system is the GNU system, commonly used in combination with the Linux kernel. This system provides a great degree of compatibility with both System V and BSD, as well as numerous extensions.

Linux

My operating system of choice is GNU/Linux. It is an extremely flexible system that runs on pretty much anything from wrist watch to supercomputers. And it runs on your PC, too! If you have a PC, you should really check out KNOPPIX if you haven't already. Just order the CD (or download and burn it), put it in your computer, start it up, and if all goes well, you will have a fully functional system, complete with office suites and games. Yes, it's all one one CD and you don't have to install anything. You can access all your old files and...why are you still here? Try it Today!


Web Browsers

As a webmaster, I have a lot to say about web browsers. While they all retrieve files over HTTP2 and render them in some way, different browsers have vastly different features (and misfeatures, AKA bugs). The World Wide Web Consortium issues standards, which, when followed, allow websites to work with any browser. Unfortunately, most browsers only follow the standards partially, and many so-called webmasters make websites that use non-standard features, or worse, don't make websites at all, but generate them with some tool that generates garbage that looks enough like HTML that the browser they test with renders it well enough to keep the boss happy.


Opera

Opera is a browser that, after years of existence, continues to be mostly unknown, despite being a fantastic product. It's speed is legendary (Opera is advertised as the fastest browser on Earth). It's support of web standards is unsurpassed; Opera fully supports all HTML versions, XML, and XHTML. It is the only browser to support CSS2 almost completely, and the only desktop browser to support WML. Opera was the first one to introduce tabbed browsing (all pages are opened in tabs in the main window, instead of in separate windows), pop-up blocking (yes, you hate pop-up advertisements, too), and small-screen rendering for handheld devices. It has a button to toggle author style sheets, so if the author of the page you are viewing majorly screwed up the colors or fonts, you can just view the page with your own favorite fonts and colors instead. You can toggle loading and displaying of images with one press of the button, without having to dig deep in configuration menus. There are keyboard shortcuts for absolutely anything, you really won't need the mouse anymore. If you prefer to use the mouse and ditch the keyboard, mouse gestures are the way to go. In short, Opera is a fantastic piece of software, and you haven't lived until you've used it. It's available for a wide range of platforms, and the download is only approximately 3 MB.

Despite all its wins, Opera is not free of drawbacks. It is an alternative browser and, as such, suffers from the dominant position of MicroSoft Internet Explorer. Many companies and webmasters not worth their title do not care about web standards and develop pages that contain MSIE-specific code. Such pages often work badly or not at all with Opera. Another point is that Opera is adware. There is a free version, but it features an advertisement in the navigation bar. You can get rid of it by buying Opera (which is quite cheap, and even cheaper if you apply for any of the various discounts). Of course, if you really feel you must use the browser without contributing anything to the folks who made it, you can supposedly download a crack to get it removed. Or browse in full-screen mode. One technical point about Opera is it's DOM support, which is generally non-existent. This makes Opera mostly unsuitable for DHTML.

Gecko-Based Browsers

The world-wide web wouldn't be the same if the legendary browser war between Netscape Navigator and MicroSoft Internet Explorer had never happened. Netscape has provided many of the core technologies of the web. Eventually they were pushed out of the market, which can in large part be ascribed to MicroSoft bundling it's browser with it's operating system, but Netscape is also to blame because they never managed to get version 4 quite right. Eventually they released the code for what would have become Netscape Communicator 5 as open source, effectively handing over development to the community at large. The Mozilla Project formed, and built a new rendering component named Gecko. This would eventually become the basis of many browsers, among others Skipstone, Galeon, Phoenix, Chimera, Netscape 6 and 7, and, of course, Mozilla itself. All these browsers have roughly the same features, what differs is mostly the user interface.

Gecko is an excellent layout engine, falling just short of Opera in terms of standards compliance. Moreover, there is a special ``Quirks mode'' that enables rendering of the many buggy webpages out there. Most Gecko-based browsers have enhanced support for popup window blocking which refuses unsolicited popups while letting popups requested by the user through. I can't remember the heuristic they use for this ever failed, so it is pretty good. The later Gecko incarnations are pretty fast, though Gecko browsers do not achieve the incredible speed of Opera (which, by the way, comes at a price; Opera caches everything, unless it is specifically told not to. This leads to annoyances with dynamic pages that forget to specify that they are not meant to be cached). The JavaScript implementation found in Gecko browsers is the most standard compliant in the world, and, in fact, is so good that applications are being written for it, using the browser as a platform abstraction layer.

The browser I use most is Phoenix, the little sister of Mozilla. It is basically a stripped-down version of Mozilla Navigator, providing all the features in fewer bytes. Despite its low version number (at the moment of this writing, Phoenix is at 0.5; I use 0.4), Phoenix is rock solid and completely usable. It offers excellent compatibility and can support Java and Flash through plug-ins, which can be downloaded with one click when needed. Furthermore, it has all the modern features that make browsing a better experience, including tabbed browsing, popup blocking, and cookie filters. Prebuilt packages are currently provided for Windows, Linux, and OS/2, with more expected to follow. If you are using Mac OS X, try Chimera, which uses native Aqua widgets and thus integrates seamlessly with the beautiful Aqua interface.


MicroSoft Internet Explorer

To many, Internet, world-wide web, and Internet Explorer are synonymous and refer to the browser so graciously provided by a software company in Redmond which is by no means microscopic. MSIE grew with the web, and is in large part responsible for the state of the web today. It is currently at version 6, available both for Windows and Macintosh. Standards compliance is decent, although some features are missing (e.g. fixed position elements) and some wrongly implemented (e.g. the Document Object Model). It does not support popup blocking or tabbed browsing, which can lead to your desktop being cluttered with MSIE windows. Internet Explorer implements many extensions not found in other browsers, ActiveX being the most notorious one, as it has been used for various security breaches. Since MicroSoft Internet Explorer doubles as a file manager in many Windows installations, and thus has full access to personal files, and in some cases even system files, such breaches can be quite serious.


Text Editors

Let me start by clarifying what exactly a text editor is. A text editor is not a word processor. Word processors can typically be used as a text editor, but contain many additional features, such as formatting. Text editors are used to edit so-called plain text files, which are often used as input to programs or as configuration files (especially on Unix-like systems). Text editors are vital for various kinds of tasks; I myself use them on a daily basis for programming, authoring webpages, and system management. To state things plainly, there is no text editor I am completely satisfied with. This may be because I have not found the perfect editor yet, or it might be because no-one shares my view on text editors, and therefore my perfect editor has not been written yet. Of course, Ed is the One True Editor!

vi

One of the best known editors in the Unix world is the classic editor vi. Just mentioning is enough to light the flames of the vi vs. emacs wars. There are many vi clones; I myself use elvis a lot, as it is small, fast, portable, and supports having multiple files open at the same time, which the classical vi does not.

Having read the end of the previous paragraph might have you think I am a vi fan. I am not. In fact, I think vi is a good example of a badly designed editor. The reason for this is that vi starts up in command mode, meaning you can't just start typing. I realize that this probably follows quite naturally from vi's history and ancestry, but it does not feel natural to the vast majority of people these days. Any key that is not a valid command results in a non-descriptive beep. Quite scary for a unsuspecting first-time user. Worse, if you don't know the program, you can't get out. The command for quitting the editor in :q (or <ESC>-:q if you were in insert mode), not something you would easily guess.

Emacs

When I first started to use Linux, I used GNU Emacs as an editor. There are many jokes about emacs; a few I have liked are:

These should give you an idea of the sort of program Emacs is. It is an editor, but it does loads and loads of other things as (e.g. browsing the web) as well. Each function has its own command, involving at least one, but often more, bucky keys3. This leads Emacs to be a horribly bloated program with non-intuitive and hard to type commands; if all you need is a text editor, that is. Emacs offers many nice features for programmers, such as bracket matching, syntax highlighting, and commands for compiling or debugging programs. I have abandoned it because it takes much longer to start up than I am prepared to wait, and also takes up lots more disk space than I am willing to spend on a text editor.

xedit

An editor often seen on Unices is xedit. xedit is a very basic editor for X11, offering a small subset of Emacs's features, usually under the same key bindings. I like xedit because it starts up quickly, can have multiple files open at once, and doesn't have vi's distinction of insert and command mode. What I don't like about it is that I have not discovered a decent way to save under a different filename (I use C-X C-F C-X C-S ESC, which seems way too long, and produces an annoying beep). Another drawback is that it is an X program, and thus cannot be used from the console, and is hardly portable to systems without X11 (arguably that is those systems' fault for not having X11).


1 `Free' is an odd word, which can either mean `not costing money' (free as in beer) or `with no restrictions' (free as in freedom). In connectian with software, it is commonly understood to mean ``free as in freedom''. I will use a capital `F' to distinguish this case from the ``free as in beer'' case, for which I will write ``software available at no charge'', or ``gratis software''. In some cases, I will use `free' with a lowercase `f', which can be taken to mean either one.

2 HTTP is one of the standard Internet protocols, namely the one used on the world-wide web. Another standard protocol that is often supported by web browsers is FTP.

3 Modifier keys, such as Control, Command, Alt, Meta, and Shift. See the Jargon File entry for bucky bit for a more detailed explanation.