Artful Computing

The principle computing tool we shall use is Processing This system came out of a project at the Massachusetts Institute of Technology (MIT) to help build connections between science and engineering and the humanities, so was jointly conceived by graphic designers and computer scientists. (MIT has a long and distinguished history in this area: many kids all over the world now take their first steps in learning to program with Scratch a visually attractive, and simple but powerful graphical programming environment from MIT.)

 

Processing Logo

Processing took off and is now an Open Source project maintained by volunteers. You can download Processing from https://processing.org and this site also provides instruction for installing the system on your own computer. (Macs and Linux machines are supported as well as Windows.) Most of the material displayed on this website was constructed with Version 3 of Processing. You can try out some of the techniques used in Processing on the cooperative sketchpatch.net website without having to install anything, and it is worth having a look here to see what others are learning, but once you start putting serious effort into constructing images, you will want everything under your personal control, with files saved to your own computer. 

The processing.org website also contains an excellent collection of >tutorials. Following these tutorials is the best way to learn how to use Processing, and I do not intend to reproduce anything you will find there. There are also lots of books listed on the Processing site but I found that you can go a long way just with the on-line material

You use Processing  by writing instructions in the Processing language. This is a very different experience compared to using a “paint” program, where the designers often try to make it feel and look (not very!) like using a real pencil or paintbrush on paper or canvas.

 

Many of us will also have used a top-end image manipulation system such as Photoshop or Gimp. Here you have to start with an existing image (often a photograph). You are offered a tool-box of methods for modifying the image, such as changing contrast and colour-balance for example, but other “filters” also include more extreme modifications, such as stretching the image into a whirl-pool. Here, we are not primarily interested in that type of approach (though I often use Gimp to modify images produced by Processing  - mainly by adjusting colour balances to more subtle combinations).

All these tools are all designed to support users in doing what they might want to do with the minimum of complication. There is, however, a drawback: you can do just what the software designer has allowed you to do and no more. I not infrequently conceive of potential photographic image modifications that are just impossible with that collection of tools. As an expert programmer I might, of course, decide to learn enough about how Gimp works so that I can build new “plug-ins” to make it do what I want it to do. That route, however, is closed unless you already are an expert programmer. (In fact, I find it easier to import original photographs into Processing  and program my non-standard manipulations that way.)

When you use Processing  you are defining an algorithm that generates the image. (Algorithm is just a posh word for recipe, or procedure, or a set of rules. However, algorithm is the standard terminology in computing and is the word teachers are now supposed to introduce and use when instructing primary and secondary pupils in computing.) Note well: you do not, on the whole, try to describe the final image ("This colour goes there!"), you say how it should generate itself. It is often surprising how simple rules lead to complex images through a rather organic growth process (which can have subtle resonances with natural forms).  

 

The Processing language is closely related to other widely used computing languages, so time spent learning how to program with Processing can be a sound foundation for other technical work.

In fact, the Processing language - a simplified version of Java - is just a way of access a rich tool box of image construction algorithms and wrapping them up with basic programming techniques such as loops and branches. Recent developments in the Processing framework mean that you can choose to use other common languages such as Javascript and Python for the same purpose. The Javascript variant has the advantage that the programs will run inside Web pages on Javascript enabled browsers, but a few of Java's more advanced features are not supported. (Some of the animated images on this site that demonstrate programs use the Javascript variant.)

The Python language is widely recognised as being particularly easy to learn and excellent for getting familiar with the fundamental principles of programming. Furthermore, the language would be familiar to a number of people who have recently been through the education system. This  Processing variant is, however, not yet particularly mature and post-dates most of my own experience. Recent attempts to port some of my earlier and simpler Processing programs into Python form were entirely successful in a formal sense - really a very easy translation, though not quite mechanical. Unfortunately, the speed of execution was substantially slower, which made some of my later somewhat more complex algorithms unviable. Python may still be a good choice for early explorations, but I will not be looking to do any of my more serious development in this language.

  • Have a look at the Processing website if you wish to follow a tutorial.
  • Alternatively, go on to my "Sketchbooks" pages if you wish to follow my progression through successively more complex programs.
  • If you just wish to look at some of the results, see my Galleries.

Breadcrumbs