Robbert Haarman



I like to design software, particularly operating systems, network protocols and user interfaces. Realizing that my designs are too ambituous to hope I can ever implement them, I decided to put them on my website, so others may do something with them.


emsg, short for electronic message, is a modification to email that reduces the damage done by spam, as well as making sending spam less attractive. The basic idea is that the messages are kept by the sender, and only a link to the message is actually transfered to the recipients. This reduces the network traffic and storage space that is wasted when messages go unread, and facilitates sender identification.

Friendly File Format

FFF or Friendly File Format is a simple data serialization language. It allows any kind of data to be expressed using a simple, human readable (hence friendly) syntax. This makes FFF an excellent choice for a configuration file format.

Graphical Usable Interfaces

In my experience of working with various operating systems, I have also seen various graphical user interfaces. Although they almost invariably build upon the same elements (windows, buttons, icons, ...), they differ quite a bit in appearance and usability. This essay collects my thoughts and ideas about GUIs.


There is a variety of formats for storing email. The most known are mbox (the traditional UNIX mailbox format), the MH format, and maildir. Besides these fairly standard formats, there are a number of proprietary formats, and some lesser used ones. All these have known strenghts and weaknesses. mailfile is yet another format, which aims to be simple, scalable, free of locking issues, and to play nice with replication and archiving.

Structured Graphics

There are many graphics libraries out there, for various languages and platforms. Some provide only low-level access to the framebuffer, allowing the display to be controlled by standard byte or file operations. Others provide a set of drawing primitives to draw not just pixels, but also lines, circles, boxes, etc. Besides being more intuitive to the programmer, these primitives can sometimes be accelarated, giving primitive-based solutions an edge in both usability and performance. This design goes a step further, by composing the image of logical units that can be manipulated independently. This provides additional expressive power and potential for performance gains.