Preface & Introduction

A note to my english speaking visitors: This  website is intended to give you an idea about my german book Codierte Kunst (Coded Art). The book is currently only available in German, but I’m looking for ways to publish it in English … so stay tuned.

In this book, I will combine two independent themes at first sight. It is on the one hand the computer art (Computerkunst) and on the other hand the programming, more exactly the programming with the computer language Logo or with Snap!, one of its successors. My increasingly intense engagement with both topics led, in addition to my first exhibition activities and a blog on Digital Art, to documenting my experiences and ideas in this book Codierte Kunst.

Coding is about programming, computer art is about a form of contemporary art. The title should make it clear that this is not a systematic introduction to programming, but an approach to learning how to create images in the tradition of early computer art and other forms of art.

Prerequisite is an interest in this art direction, that is predominantly non-representational image motifs, abstract geometric shapes and color figures. Practically, it is about the possibilities in terms of programming to reproduce the shown and other such picture examples. Therefore, the focus is on the analysis, the recapturing, the reprogramming (Recoding) and, following that, the implementation of own variants (Remixing).

The visual programming environment Snap! is used, and therefore no programming knowledge is required. With this free-of-charge tool you can continue to pursue your own ideas after working through this introduction. You will thus find an entry into the highly up to date, exciting field of media art. Maybe your own results will be part of a media art exhibition? With this introduction I would like to make it possible for all interested people – especially those with no previous knowledge and programming experience – to realize such works very quickly.

It will reassure many readers that the projects can do (almost) without mathematics. Logical thinking is enough! I limit myself to always introducing exactly the computer science concepts needed for a specific project and to show ways in which more complex, sophisticated and aesthetic graphics and animations can be implemented. This topic orientation certainly differs from the usual introductions to programming, which are usually more theory-oriented and systematic.

Snap! is particularly suitable for this approach because it excellently supports the creation of sophisticated graphics and virtually challenges an experimental approach through the interactive possibilities and the direct feedback within Snap!. A very central part of Snap! is the so-called Turtle Graphics. With it, all graphical components of the presented projects will be implemented.

The Snap! Programming environment is ideal for self-study and of course also for beginners courses with (very) young addressees. Snap! thus is keeping in best tradition of the programming language Logo, which was originally conceived for children and schools. I myself have learned to appreciate a number of elements of Logo in the program implementation of the examples presented here. It was great fun for me to develop programs that were as compact as possible and at the same time as flexible as possible, so that the resulting graphics can be varied in many ways.

In the book, I will discuss the necessary basic concepts and introduce how to deal with Logo or Snap!. I hope to convey a little of the fascination that I felt when creating the graphics myself. Since I am neither a computer scientist nor an art historian (but a educational technologist and specialist in media didactics), you should not expect a computer-science based introduction to programming; I must also refer to the relevant literature in the history of art history (which you will find in the extensive bibliography). The result is a mixture of illustrated book and programming guide.

Introduction (excerpt)

When I discuss computer art in this volume together with the programming, this is due to two triggers, which brought me in 2015 on the connection of the two topics:

Trigger I: Fifty years of computer art. Just over fifty years ago, in February 1965, the world’s first computer art exhibition took place at the University of Stuttgart. On display were computer-generated images of the engineer Georg Nees. In the run-up to this anniversary, I became aware of clues in relevant magazines and so, like others, I was able to make a contribution in time for the jubilee year with a small exhibition (documented on digitalart).

Trigger II: Fifty Years Programming Language Logo. Also pretty much fifty years ago, the programming language Logo was introduced. By Apple Logo, the first version for the then very popular 8-bit computer Apple II, I got to know even in 1982 for the first time Logo closer. In the late 1980s, I worked on a teacher training project with study materials on Teaching and Learning with the Computer. These offered amongst others proven lessons including the appropriate software. One of them was the study letter Schildkrötengrafik – Einfaches Programmieren von Grafiken (Turtle Graphics – Simple Programming of Graphics). I can fall back on these experiences years later.

Both aspects determine the character of this book. The chapter Computer art deals with the basic elements of this art direction. In the chapter Recoding & Remixing the aspect of programming is added, because the recoding, which means the reprogramming, and the remixing, which means the modification and extension of templates, have become (not undisputed) components of the media culture.

In the following chapters, I will introduce you to our toolbox – the Snap! Programming environment – which allows us to recreate selected works of early computer art and other art movements to create unique variations and enhancements. Although Snap! is a necessary tool, it is only one element of the overall design and design process. The teaching of the programming concepts is still not incidental, but always experimental and result-oriented. Therefore, this is not a systematic introduction to programming with Snap!, but getting to know and using those language elements that allow us to create our own graphic exhibits. Thus, in this context, several additional language elements and opportunities of Snap! are not treated.

A central part of Snap! is the turtle graphic, with which you can program simple, but also increasingly complex graphics with a manageable instruction set. You learn the formulation of algorithms and their coding. You will gradually learn about central programming concepts, such as

  • the repetition, modularization and extensibility, generalization and control structures (in the chapter Erste Schritte …),
  • the recursion (in the chapter Ein Block ist ein Block ist ein Block …),
  • Fields and lists (in the chapter Die Sprache G),
  • working with objects in the form of sprites and cloning as well as the communication between objects (in the chapter Alles in Bewegung),
  • the coupling of objects (in the chapter Kinetische Kunst) and
  • Procedures as data (in chapter Coqart: Quadratische Strukturen).

The experience gained here can easily be transferred to other modern, higher-level programming languages ​​if required.

With the components of Snap! and the turtle graphics gradually an aesthetic laboratory (Nees, 1995, p. 7) is built. With the computer, we have an experimental workshop at our disposal, which allows us to experiment graphically until we succeed in producing aesthetic objects – often enough as the result of a happy coincidence. Nees (1995, p. 183) has once characterized the procedure as Gestaltfallenstellen: “At some point you will be rewarded by an extraordinary catch”.

The first step is the replication of suitable pictures as role models. For such, we focus on the images of early computer art. Equally suitable are works from other art movements, such as Minimalism, Op Art, Constructivism or Concrete Art. When implementing the program, we then get to know the most important principles of programming. This is the prerequisite for developing ideas according to the ideas of the role models and then implementing them as programs as well.

These topics will be covered in the following chapters. So that even absolute beginners master the entry successfully, I designed it with very small steps. In the following chapters, the steps will increase. Ultimately, the programming should open up opportunities to express oneself creatively.

Computer art has close links to other important art movements, such as Conceptual Art, Concrete Art or Op Art. These references are described in the chapter Kunst Programmieren?! and are illustrated by some examples. This is the purpose of the Recoding & Remixing of individual works by Josef Albers, François Morellet and the Drip Painting by Jackson Pollock. It will be shown that many elements of computer art appear in a new context.

In the final chapter, we dare to take a look outside the box because there are of course other projects that are dedicated to the recoding. And there are other powerful tools – such as drawing robots – for the implementation of the concepts of generative design, ie the connection of graphic design with programming.

The book ends with a small outlook intended to suggest what is possible with current technical developments. In addition to the animation, it is above all two concepts that open the door to multimedia installations. On the one hand there is the interaction, on the other hand the reactivity of programs through the use of sensors. Perspectively, this opens the transition from early computer art to contemporary media art.

All informations for the further work with Snap! is found in the annexes. So there is a presentation of the Snap! user interface with tips and tricks and a systematic listing of all Snap! commands. In the course of the chapters, a number of Snap! Instructions are developed in extension of the given command set, which can be found in a block library created in this way.