- Aesthetic Programming:Crafting Personalized Software
Marrying traditional methods of computer programming with an artistic temperament allows the birth of a new phenomenon: the aesthetic program. The work of the author and his students builds on visual approaches in programming as well as in software modeling, leading toward a gradual evolution from program to model. The need for the aesthetic model is increased with the importance of personalized, individually tailored media, as found with web-based style sheets and the economic movement termed "mass customization." The author and his students have formulated the rube Project methodology around the use of 3D web-based virtual-world model construction. Initial results suggest that these models are artistic, while containing symbolism and concise metaphoric mapping sufficient to be executable on a computer.
The merger of computer programming and art usually manifests itself under such rubrics as algorithmic X, computer X or digital X, where X is replaced by a term such as art or music. This naming trend denotes a qualification of art, or more particularly, how art is modified as a result of computer technology. However, if we reverse the word order to obtain "artistic computation," we find a relative dearth of information. Software representations that lend themselves to an artistic rendering tend to be minimalist and iconographic. More work needs to be done in inculcating the importance of the arts inside of the metallic computer box and within the virtual spaces inhabiting the box. It is not only necessary that the box, monitor and interaction devices be stylized-we also need software that is aesthetic and of considerable sensory appeal. It is only by creating it that we can reinvent programming to be more humane and, interestingly, closer to traditional engineering, which has historically managed to forge alliances with style, as in the field of architecture.
When one thinks of computer programs in their complex and cryptographic text-based glory, the idea of aesthetics does not generally come to mind; however, the area of programming has developed its own aesthetics over the past four decades. Donald Knuth  authored a classic series of books entitled The Art of Programming and later created an approach to text-based software development termed literate programming , through which programmers could develop more readable programs that would, in themselves, serve as complete textual, typeset documentation. The resulting programs are attuned to what could be called a text-based aesthetic, with forms that go beyond mathematical formalism toward pseudo-natural language but are still fairly minimalist when compared with the extensive history of aesthetic movements over several millennia in art. Much of this may well be due to differences in historical development, with programming being a fledgling enterprise in comparison with art. Economic and cultural factors have also likely played key roles in the dominant role of text-based representation. Writing text is less expensive than making drawings or producing artistic pieces.
Why are programs limited to text, and what directions can we take to pursue the path of aesthetic programming? To make software artistic, we need to endow software with aesthetic diversity . This implies looking to art for ways in which software can be made more useful, interesting and comprehensive. Harold Osborne  refers to this need for diversity as a widening of "our aesthetic horizons." I will henceforth use the adjective aesthetic to refer to "diversification of aesthetic choice," because, while text and 2D graphic-based software are in tune with a particular kind of aesthetic, this aesthetic is limited to fairly minimalist, abstract representation. The primary reason for the extant minimalism appears to be largely economic in character-that is, working in text is less expensive labor-wise and in terms of memory and disk space. To the extent that economics affects culture, culture is amenable to change toward more aesthetic forms as the economy, associated with producing these forms, advances.
Computing and software incorporate numerous metaphors [4,5]. When we talk of program components, we speak of "looping around a section," "walking through code," "piping X into Y," "forking off processes" (in Unix) and "calling a subroutine." Often, a mixed set of metaphors is loosely applied at the...