BEN FRY AND CASEY REAS REPRESENT A NEW BREED OF DESIGNER/ARTIST/PROGRAMMER. While graduate students in John Maeda’s Aesthetics and Computation Group at the MIT Media Lab, Fry and Reas began working on a project that we now know as Processing. In 2001 they released this open-source language and environment, thereby luring creatives into computation and technologists into aesthetic experimentation.1 Inspired by Muriel Cooper’s Visual Language Workshop and Maeda’s Design by Numbers project, Fry and Reas actualized dreams of bridging art and technology passionately pursued by so many over the last century, including members of the Bauhaus in the 1920s and the New Tendencies and Op Art movements in the 1960s. Thousands upon thousands of artists, designers, and programmers responded and continue to respond to Processing’s free and open-source structure by downloading, using, expanding, and improving it. And the influence of this evolving language and environment does not stop there. Processing’s legacy includes equally powerful artistic tools, such as Arduino, a platform enabling the integration of electronics into creative practice.2 Processing and its children break down the wall between art and technology with the lasting blows of a sledgehammer.
BEN FRY AND CASEY REAS | 2007
Processing relates software concepts to principles of visual form, motion, and interaction. It integrates a programming language, development environment, and teaching methodology into a unified system. Processing was created to teach fundamentals of computer programming within a visual context, to serve as a software sketchbook, and to be used as a production tool. Students, artists, design professionals, and researchers use it for learning, prototyping, and production.
The Processing language is a text programming language specifically designed to generate and modify images. Processing strives to achieve a balance between clarity and advanced features. Beginners can write their own programs after only a few minutes of instruction, but more advanced users can employ and write libraries with additional functions. The system facilitates teaching many computer graphics and interaction techniques, including vector/raster drawing, image processing, color models, mouse and keyboard events, network communication, and object-oriented programming. Libraries easily extend Processing’s ability to generate sound, send/receive data in diverse formats, and to import/export 2-D and 3-D file formats.
A group of beliefs about the software medium set the conceptual foundation for Processing and inform decisions related to designing the software and environment.
Software is a unique medium with unique qualities.
Concepts and emotions that are not possible to express in other media may be expressed in this medium. Software requires its own terminology and discourse and should not be evaluated in relation to prior media such as film, photography, and painting. History shows that technologies such as oil paint, cameras, and film have changed artistic practice and discourse, and while we do not claim that new technologies improve art, we do feel they enable different forms of communication and expression. Software holds a unique position among artistic media because of its ability to produce dynamic forms, process gestures, define behavior, simulate natural systems, and integrate other media, including sound, image, and text.
Every programming language is a distinct material.
As with any medium, different materials are appropriate for different tasks. When designing a chair, a designer decides to use steel, wood, or other materials based on the intended use and on personal ideas and tastes. This scenario transfers to writing software. The abstract animator and programmer Larry Cuba describes his experience this way: “Each of my films has been made on a different system using a different programming language. A programming language gives you the power to express some ideas, while limiting your abilities to express others.”3 There are many programming languages available from which to choose, and some are more appropriate than others depending on the project goals. The Processing language utilizes a common computer programming syntax that makes it easy for people to extend the knowledge gained through its use to many diverse programming languages.
Sketching is necessary for the development of ideas.
It is necessary to sketch in a medium related to the final medium so the sketch can approximate the finished product. Painters may construct elaborate drawings and sketches before executing the final work. Architects traditionally work first in cardboard and wood to better understand their forms in space. Musicians often work with a piano before scoring a more complex composition. To sketch electronic media, it’s important to work with electronic materials. Just as each programming language is a distinct material, some are better for sketching than others, and artists working in software need environments for working through their ideas before writing final code. Processing is built to act as a software sketchbook, making it easy to explore and refine many different ideas within a short period of time.
CASEY REAS
Interview with Daniel Shiffman in Rhizome 2009
Programming is not just for engineers.
Many people think programming is only for people who are good at math and other technical disciplines. One reason programming remains within the domain of this type of personality is that the technically minded people usually create programming languages. It is possible to create different kinds of programming languages and environments that engage people with visual and spatial minds. Alternative languages such as Processing extend the programming space to people who think differently. An early alternative language was Logo, designed in the late 1960s by Seymour Papert as a language concept for children. Logo made it possible for children to program many different media, including a robotic turtle and graphic images on-screen. A more contemporary example is the Max programming environment developed by Miller Puckette in the 1980s. Max is different from typical languages; its programs are created by connecting boxes that represent the program code, rather than lines of text. It has generated enthusiasm from thousands of musicians and visual artists who use it as a base for creating audio and visual software. The same way graphical user interfaces opened up computing for millions of people, alternative programming environments will continue to enable new generations of artists and designers to work directly with software. We hope Processing will encourage many artists and designers to tackle software and that it will stimulate interest in other programming environments built for the arts.
Processing does not present a radical departure from the current culture of programming. It repositions programming in a way that is accessible to people who are interested in programming but who may be intimidated by or uninterested in the type taught in computer science departments. The computer originated as a tool for fast calculations and has evolved into a medium for expression.
The idea of general software literacy has been discussed since the early 1970s. In 1974 Ted Nelson wrote about the minicomputers of the time in Computer Lib/Dream Machines. He explained, “The more you know about computers…the better your imagination can flow between the technicalities, can slide the parts together, can discern the shapes of what you would have these things do.”4 In his book, Nelson discusses potential futures for the computer as a media tool and clearly outlines ideas for hypertexts (linked text, which set the foundation for the Web) and hypergrams (interactive drawings). Developments at Xerox PARC led to the Dynabook, a prototype for today’s personal computers. The Dynabook vision included more than hardware. A programming language was written to enable, for example, children to write storytelling and drawing programs and musicians to write composition programs. In this vision there was no distinction between a computer user and a programmer.
Thirty years after these optimistic ideas, we find ourselves in a different place. A technical and cultural revolution did occur through the introduction of the personal computer and the Internet to a wider audience, but people are overwhelmingly using the software tools created by professional programmers rather than making their own. This situation is described clearly by John Maeda in his book Creative Code: “To use a tool on a computer, you need do little more than point and click; to create a tool, you must understand the arcane art of computer programming.”5 The negative aspects of this situation are the constraints imposed by software tools. As a result of being easy to use, these tools obscure some of the computer’s potential. To fully explore the computer as an artistic material, it’s important to understand this “arcane art of computer programming.”
Processing strives to make it possible and advantageous for people within the visual arts to learn how to build their own tools—to become software literate. Alan Kay, a pioneer at Xerox PARC and Apple, explains what literacy means in relation to software: “The ability to ‘read’ a medium means you can access materials and tools created by others. The ability to ‘write’ in a medium means you can generate materials and tools for others. You must have both to be literate. In print writing, the tools you generate are rhetorical; they demonstrate and convince. In computer writing, the tools you generate are processes; they simulate and decide.”6 Making processes that simulate and decide requires programming.
The open source software movement is having a major impact on our culture and economy through initiatives such as Linux, but it is having a smaller influence on the culture surrounding software for the arts. There are scattered small projects, but companies such as Adobe and Microsoft dominate software production and therefore control the future of software tools used within the arts. As a group, artists and designers traditionally lack the technical skills to support independent software initiatives. Processing strives to apply the spirit of open source software innovation to the domain of the arts. We want to provide an alternative to available proprietary software and to improve the skills of the arts community, thereby stimulating interest in related initiatives. We want to make Processing easy to extend and adapt and to make it available to as many people as possible.
Processing probably would not exist without its ties to open source software. Using existing open source projects as guidance, and for important software components, has allowed the project to develop in a smaller amount of time and without a large team of programmers. Individuals are more likely to donate their time to an open source project, and therefore the software evolves without a budget. These factors allow the software to be distributed without cost, which enables access to people who cannot afford the high prices of commercial software. The Processing source code allows people to learn from its construction and by extending it with their own code.
People are encouraged to publish the code for programs they’ve written in Processing. The same way the “view source” function in Web browsers encouraged the rapid proliferation of website-creation skills, access to others’ Processing code enables members of the community to learn from each other so that the skills of the community increase as a whole. A good example involves writing software for tracking objects in a video image, thus allowing people to interact directly with the software through their bodies, rather than through a mouse or keyboard. The original submitted code worked well but was limited to tracking only the brightest object in the frame. Karsten Schmidt (aka toxi), a more experienced programmer, used this code as a foundation for writing more general code that could track multiple colored objects at the same time. Using this improved tracking code as infrastructure enabled Laura Hernandez Andrade, a graduate student at UCLA, to build Talking Colors, an interactive installation that superimposes emotive text about the colors people are wearing on top of their projected image. Sharing and improving code allows people to learn from one another and to build projects that would be too complex to accomplish without assistance.
Processing makes it possible to introduce software concepts in the context of the arts and also to open arts concepts to a more technical audience. Because the Processing syntax is derived from widely used programming languages, it’s a good base for future learning. Skills learned with Processing enable people to learn other programming languages suitable for different contexts, including Web authoring, networking, electronics, and computer graphics.
There are many established curricula for computer science, but by comparison there have been very few classes that strive to integrate media arts knowledge with core concepts of computation. Using classes initiated by John Maeda as a model, hybrid courses based on Processing are being created. Processing has proved useful for short workshops ranging from one day to a few weeks. Because the environment is so minimal, students are able to begin programming after only a few minutes of instruction. The Processing syntax, similar to other common languages, is already familiar to many people, and so students with more experience can begin writing advanced syntax almost immediately.…
Processing takes advantage of the strengths of Web-based communities, and this has allowed the project to grow in unexpected ways. Thousands of students, educators, and practitioners across five continents are involved in using the software. The project website serves as the communication hub, but contributors are found remotely in cities around the world. Typical Web applications such as bulletin boards host discussions between people in remote locations about features, bugs, and related events.
Processing programs are easily exported to the Web, which supports networked collaboration and individuals sharing their work. Many talented people have been learning rapidly and publishing their work, thus inspiring others. Websites such as Jared Tarbell’s Complexification.net and Robert Hodgin’s Flight404.com present explorations into form, motion, and interaction created in Processing. Tarbell creates images from known algorithms such as Henon Phase diagrams and invents his own algorithms for image creation, such as those from Substrate, which are reminiscent of urban patterns.…On sharing his code from his website, Tarbell writes, “Opening one’s code is a beneficial practice for both the programmer and the community. I appreciate modifications and extensions of these algorithms.”7 Hodgin is a self-trained programmer who uses Processing to explore the software medium. It has allowed him to move deeper into the topic of simulating natural forms and motion than he could in other programming environments, while still providing the ability to upload his software to the Internet. His highly trafficked website documents these explorations by displaying the running software as well as providing supplemental text, images, and movies. Websites such as those developed by Tarbell and Hodgin are popular destinations for younger artists and designers and other interested individuals. By publishing their work on the Web in this manner, they gain recognition within the community.
Many classes taught using Processing publish the complete curriculum on the Web, and students publish their software assignments and source code, from which others can learn. The websites for Daniel Shiffman’s classes at New York University, for example, include online tutorials and links to the students’ work. The tutorials for his Procedural Painting course cover topics including modular programming, image processing, and 3-D graphics by combining text with running software examples. Each student maintains a webpage containing all of their software and source code created for the class. These pages provide a straightforward way to review performance and make it easy for members of the class to access each other’s work.
The Processing website, www.processing.org, is a place for people to discuss their projects and share advice. The Processing Discourse section of the website, an online bulletin board, has thousands of members, with a subset actively commenting on each other’s work and helping with technical questions. For example, a recent post focused on a problem with code to simulate springs. Over the course of a few days, messages were posted discussing the details of Euler integration in comparison to the Runge-Kutta method. While this may sound like an arcane discussion, the differences between the two methods can be the reason a project works well or fails. This thread and many others like it are becoming concise Internet resources for students interested in detailed topics.
The Processing approach to programming blends with established methods. The core language and additional libraries make use of Java, which also has elements identical to the C programming language. This heritage allows Processing to make use of decades of programming language refinements and makes it understandable to many people who are already familiar with writing software.
CASEY REAS
Interview with Daniel Shiffman in Rhizome 2009
Processing is unique in its emphasis and in the tactical decisions it embodies with respect to its context within design and the arts. Processing makes it easy to write software for drawing, animation, and reacting to the environment, and programs are easily extended to integrate with additional media types, including audio, video, and electronics. Modified versions of the Processing environment have been built by community members to enable programs to run on mobile phones…and to program microcontrollers.…
The network of people and schools using the software continues to grow. In the five years since the origin of the idea for the software, it has evolved organically through presentations, workshops, classes, and discussions around the globe. We plan to continually improve the software and foster its growth with the hope that the practice of programming will reveal its potential as the foundation for a more dynamic media.
1 “Overview,” Processing, April 30, 2015, https://processing.org/overview/.
2 For more about Arduino and its predecessor, Wiring, see Daniel Shiffman, “Interview with Casey Reas and Ben Fry,” Rhizome, September 23, 2009, http://rhizome.org/editorial/2009/sep/23/interview-with-casey-reas-and-ben-fry/.
3 Larry Cuba, “Calculated Movements,” in Prix Ars Electronica Edition ’87: Meisterwerke der Computerkunst (H. S. Sauer, 1987), 111.
4 Theodore Nelson, “Computer Lib/Dream Machines,” in The New Media Reader, edited by Noah Wardrip-Fruin and Nick Montfort (MIT Press, 2003), 306.
5 John Maeda, Creative Code (Thames & Hudson, 2004), 113.
6 Alan Kay, “User Interface: A Personal View,” in The Art of Human-Computer Interface Design, edited by Brenda Laurel (Addison-Wesley, 1989), 193.
7 Jared Tarbell, Complexification.net (2004), http://www.complexification.net/medium.html.