Robbert Haarman



I have opinions and ideas about many things. In these essays, I have written down some of those. I hope reading them will inspire you to think about these issues, develop your own ideas, and perhaps implement them or share them with the world.

Beautiful 8-bit Games

Screenshots of some of the most beautiful games running on 8-bit computers. I haven't played most of these games, but I've always had great respect for what programmers managed to achieve with the limited resources the hardware offered.

Better Languages for Better Software

Software bugs are a well known phenomenon. Virtually all software we use on a daily basis contains bugs, causing it not to function as intended in certain situations. Some of these bugs cause minor annoyances, others can cause programs to crash and lose data, or allow unauthorized access to the system. The vast majority of these bugs fall in one of three categories: buffer overflows, injection vulnerabilities and memory leaks. All of these can be completely eliminated by using different languages instead of the ones in popular use today (notably C and C++). As a bonus, these languages often allow programs to be written much more concisely and thus quickly, allowing more time for testing and improving software.

Data Compression

Data compression is the art of encoding data in such a way that it takes up less space than it did originally. On this page, I briefly discuss a number of effective data compression techniques, with links to more detailed articles on each. The techniques covered here include backreferences (sliding window / dictionary compression, Lempel-Ziv), range coding, and tANS.

Dotfiles Considered Harmful

If you are on a *NIX system, chances are your home directory is full of dotfiles (files whose names start in a dot) containing settings and initialization scripts for various packages. I think those dotfiles are a bad idea, and should be replaced with a more elegant system.

FIFOs in the Real World

Chances are you spend time waiting in line almost every day. Lines are everywhere: in the supermarket, in front of the vending machine, before the ticket booth, etc. Often, there are multiple lines to chose from. Most people pick the one they think will lead to the shortest waiting time, usually the one that has fewest people in it. It's generally considered a Good Thing if people are served in the order in which they arrive (known in computer science as First In First Out, FIFO). In this essay, I propose a queuing system that has this property.

Gatos y la Naturaleza Hacker

In my last year of college, I wrote a short essay on cats and the hacker nature. I thought it would be fun to publish the essay here. Beware of speling and grammer mistakes.

Hidden Strengths of Unix

GNU/Linux, popularly referred to simply as Linux, has its roots in Unix. As such, it has a very different design and philosophy from Microsoft Windows, the system it is most often compared with. Many of the comparisons between Linux and Windows focus on how Linux deals with typical tasks one would perform on a Windows system. What they don't tell you is that its Unix heritage provides Linux with a lot of functionality not found in Windows. Most people come to appreciate this only after extensive Linux or Unix usage, but it makes Unix systems immensely powerful and flexible, which even casual users can benefit from. This essay explains some of this Unix functionality and how it can benefit you.

How Perfectionism Got Me to Stop Updating My Website

A story about how the desire to do the work perfectly resulted in the work not getting done at all.

It's All Just Numbers

These days, many people work with computers on a daily basis. Many of us own computers, and many of us even perform various degrees of maintenance on them. Despite this, comparatively few people have a solid understanding of how computers actually work. To many, computers work as if by magic. This makes it difficult to understand what capabilities a computer is likely to have, difficult to understand and solve any problems that may occur, and, on a personal note, difficult for me to explain the work I do. In this essay, I propose thinking of computers as performing simple operations on numbers. This is a simple mental model that doesn't require much prior knowledge of computers, but is also accurate enough that it explains many of the behaviors and limitations of computers.

Linux Superstitions Exposed

The Internet is rife with discussions about the merits and flaws of Linux, comparisons of Linux with other operating systems, and discussions about whether Linux is ready for the desktop or not. During those discussions, a number of clichés often pop up, and not all of these are valid. This article is an attempt to clear up some of the more stubborn misconceptions about Linux, particularly the ones that undeservedly put Linux in a negative light.

Random Ramblings

This essay contains various random thoughts that I have had. I note down my thoughts here, and if I accumulate enough ideas around them, I may write an essay about them, implement them in a piece of software, or something of the sort.

Shell Tips

Some productivity tips for Unix shells.

The Importance of Interoperability

Most people who have worked with computers will be acquainted with Microsoft products, such as Microsoft Office and Microsoft Outlook or Outlook Express. These are the applications and software suites that most offices use. These products, and many others, use closed (only known to the company making the software) formats for storage of documents, messages, etc. This makes it difficult for would-be competitors to write software which can handle documents created with said products. Closed formats are harmful to both the software industry and software users. The same is true of closed communication protocols. This essay presents some of the dangers of closed formats and protocols, and calls for action against them.

The Toast Conspiracy

It's widely known that toast, when dropped, tends to land with the buttered side down1. What isn't widely known (because they don't want you to know it) is that toast is made that way on purpose. This essay uncovers the conspiracy behind it.

Unifying Shell and Programming

UNIX and UNIX-like operating systems are generally seen as devloper-friendly environmenst, and are often praised for their powerful command lines. Many shells approach the power of the C APIs, without actually getting there. It would be good if the distinction vanished, and all the functions available to programming languages could be accessed from the shell. This article explorers a few options, but doesn't come to a conclusive end.

Vorbis, Microsoft and Apple

Vorbis is a high-quality, public domain, royalty free audio compression codec. Various listening tests indicate that Vorbis offers superior audio quality to its main competitors (MP3, WMA and AAC). MP3, WMA, and AAC require licensing fees to be paid. Files in AAC or WMA format also often come with usage restrictions (DRM). It would seem that Vorbis has all the advantages for users and player manufacturers: better audio quality, no restrictions on use, and no licensing costs. However, in all the years that Vorbis has been around, it has never found mainstream acceptance. In this essay, I argue that this is because of anti-competitive efforts by Apple and Microsoft, both being major operating system vendors pushing their own proprietary audio formats.

What's Wrong with C?

This article discusses some of what I think are weaknesses of the C programming language. Some of these have lead to seruious bugs, others are merely inconveniences. It discusses historical reasons for those weaknesses, and mentions a few alternative languages that overcome them. It is intended for anyone with at interest in programming languages, but technical terms are explained in the footnotes, so it should be understandable for anyone.

Why We Should be Grateful for Viruses

Computer viruses are the bane of our modern, computer-dependent society. They infect and slow down personal computers, send out spam2 and cause millions of dollars of damage due to lost files and network outages. However, if we learn our lessons, they can have a very benificial influence on the software industry.

1 Note that it doesn't neccesarily have to have butter on it, nor does it have to have only butter on it. Jam or peanut butter works to, as do chocolate sprinkles, and probably lots of other things.

2 According to a study by Sandvine, 80% of spam is sent from infected PCs running Windows. [This was in 2004]

Valid XHTML 1.1! Valid CSS! Viewable with Any Browser