25. REGULARITY
10 PRINT
(figure 30.1). A variant of the 10 PRINT
program shipped with the first Commodore 64s in 1982 (figure 30.2).
And in 1987, Cyril Stanley Smith more or less recreated
10 PRINT
’s output from a reduced, random arrangement of Truchet tiles (figure
30.3). How did the same essential mazelike pattern come to appear
in all of these different contexts in the twentieth
century?10 PRINT
parallels experiments in painting, sculpture, sound composition, video art,
performance, experimental animation, and dance. In both cases,
these artistic practices owe their success to factors that also
make 10 PRINT
compelling: the continual repetition of a simple rhythmic procedure
or rule across a regular space or time signature creating a complex
and stimulating gestalt. In its minimalist and constructivist
strains the world of art confronts the constraints and regularity
of the technē of programming, which makes room for a formal definition of a
repeating process that a computer can carry out. In all of its
newfangled (for the 1980s) sophistication, 10 PRINT
ties the computer to the homespun tradition of handicraft:
stitching, sewing, and weaving.This intersection of design craft, art, and computation is not
accidental, for 10 PRINT
is a demonstration of the generative qualities of repeated
procedure. 10 PRINT
was written and published at a time when the art world was turning
to explore the constraints and possibilities of the systematization
of creativity in an age of Taylorism and Fordism, of which the
computational machine is itself an expression. Situating
10 PRINT
not only within twentieth-century art, but also in the larger
traditions of formal experimentation and craft culture can help to
explain how the personal computer is a site of procedural
craft.
This chapter explores the first of two formal aspects of the
10 PRINT
program that give it its compelling visual power. This chapter
focuses on regularity, while the next one deals with randomness.
Although the pattern of 10 PRINT
cannot be established at a glance, the program is nothing if not
regular. It works regularly in space, time, and
process—and each of these aspects of regularity
is examined in the discussion that follows. Spatial regularity is
considered, beginning with tilings, continuing through the history
of the grid, and ending with a discussion of the computer screen.
Artistic repetition in time, particularly in music and performance,
is considered next. Then, repeating processes and the programming
constructs that support them are discussed.
REPETITION IN SPACE
In a classic, provocative text, The Sense of Order, E. H. Gombrich (1994) wrestles with the tensions between pleasing repetition and uninteresting redundancy. As he reflects on pavement designs he notes the pleasure in encountering one whose pattern cannot be fully grasped. Gombrich explains this desire for variation or complexity in terms of the information theory emerging at the time, which posits that information increases in step with unpredictability (9). He goes on to speculate that the viewer examines patterns by trying to anticipate what comes next. “Delight,” he writes, “lies somewhere between boredom and confusion” (9). Consider, again, the Labyrinth at Chartres as one such balance of the two.
10 PRINT
no doubt offers similar delights, thanks to its creation of a
complex pattern from a simple random alternation. As Gombrich later
argues, the greatest novelties computers bring to visual design and
variation are not only their ability “to follow
any complex rule of organization but also to introduce an exactly
calculated dose of randomness” (1994, 94). In this
view, computers prove to be entrancing weavers, and the design
of 10 PRINT
, as a work of pattern rather than paths, may be less like the work
of Daedalus than that of Arachne.
Patterns are inextricably tied to a process of repetition. This notion is clearly demonstrated in Gombrich’s commentary on “the hierarchical principle” by which units are “grouped to form larger units, which in turn can easily fit together into larger wholes” (1994, 8), or a gestalt. The sum of the pattern then is the result of a process. This interrelationship of pattern, perceived whole, and process becomes clear in his discussion of paving and of various methods for selecting stones. By extension, visual design relies on the process of repeating patterns across space, even if these patterns are not drawn as individual units. The regulated backdrop or foundation of these orderly patterns in Euclidean space is the grid.
The grid provides a framework within which human intuition and invention can operate and that it can subvert. Within the chaos of nature, regular patterns provide a contrast and promise of order. From early patterns on pottery to geometric mosaics in Roman baths, people have long used grids to enhance their lives with decoration. In Islamic culture, the focus on mathematics and prohibition on representational images led to the most advanced grid systems of the time, used to decorate buildings and religious texts. Grids have also long been used as the basis for architecture and urban planning. For example, it is impossible to imagine New York, the one-time city of the future, without the regular grid of upper Manhattan. (Broadway breaks this grid in ways that form many of the city’s most notable public spaces.) The grid is also the basis for our most intellectual play, from chess to go, whether the design submits to or reacts against it.
The grid has proved essential to the design of computers from the grid of vacuum tubes on the ENIAC (1946) to the latest server farms that feed data to the Internet. A new era of more reliable computing was spawned in the 1950s by a grid of ferrite rings called core memory (figure 30.4). This technology works by addressing each ring on the grid to set its charge to clockwise or counterclockwise to store one bit of information. Because the information is stored as a magnetic force, it maintains its state with or without power. The grid is an essential geometry of computation.
The two-dimensional regularity of the grid is essential to the
impact of 10 PRINT
,
as removing a single character from the program reveals. Taking out
the semicolon that indicates that each character should be drawn
immediately to the right of the previous one, the symbol that wraps
the program’s output continually rightward
across the screen, makes the importance of the grid clear (see
figure 30.5):
10 PRINT CHR$(205.5+RND(1)) : GOTO 10
As a column of diagonal lines, the output does not form a maze and
the vibrant pattern that encourages our eyes to dance across the
screen is not established (figure 30.5). The essential process
of 10 PRINT
in time is a single, zero-dimensional coin flip to pick one of two
characters; when this recurs in time, it becomes a one-dimensional
stream of diagonal lines that either flows quickly down the left
side (if the semicolon is omitted) or moves right to wrap around to
the next position below the current line and to the left. The
visual interest of this program results from wrapping this
one-dimensional stream of tiles into the two-dimensional
grid.
Truchet Tiles
Imagine the diagonal character graphics in 10 PRINT
are painted on a set of square ceramic tiles, of the sort used for
flooring. Each tile is painted with a black diagonal line dividing two white triangles. A tile can
be rotated in two orientations, so that the diagonal line appears
to be a backslash or a forward slash. Now imagine painting one of
the two triangles black. Each tile can now be rotated in four
different orientations, like a black arrow pointing at each of four
corners. Repeatedly placing tiles down in the same orientation will
create a pattern (figure 30.6). Two tiles can be placed next to
each other to create one of sixteen unique formations, and laying
down any such pair repeatedly will again produce patterns. Indeed,
any unique grouping of tiles (whether 2 × 1, 4
× 4, etc.) can serve as a building block for larger
regularity.
Now, imagine a whole floor or tapestry covered with a regular pattern of these repeating tiles. This thought exercise suggests the power of the Truchet tile, so named because the Dominican priest Sebastien Truchet first described what he called the “fecundity of these combinations” in 1704, after experimenting with some ceramic tiles he came across at a building site for a château near Orléans (Smith and Boucher 1987, 374).
Matching a single Truchet tile with another, and another, and another, and so on, a designer is able to create an incredible array of patterns. The interplay between the direction of each tile and the varying repetition of black and white—of positive and negative—produces symmetrical designs that can range from grid-like patterns to mesmerizing, almost three-dimensional illusions. Unlike earlier, Islamic patterns or Celtic designs, which both relied on multiple-sized shapes, the Truchet tile uses only a single size and a single shape (Smith and Boucher 1987, 378). In his original 1704 essay, Truchet provides examples of thirty different patterns, barely evoking the aesthetic possibilities of his tiles, though he notes that he “found too great a number to report them all” (374). Truchet’s work would be the inspiration for a later book, Doüat’s modestly named Methode pour faire une infinite de desseins differents . . . [Method for Making an Infinity of Different Designs . . .] which in turn had a considerable impact on eighteenth-century European art (373).
Yet all of Truchet’s and Doüat’s examples are regular patterns, symmetrical and repetitive. The historian of science Cyril Stanley Smith observed in 1987 that even more compelling designs can be generated from Truchet tiles if dissymmetries are introduced. What happens when the regularity of a Truchet pattern is interrupted by randomness? Smith provides one example, a block of Truchet tiles arranged at random (figure 30.3). The lattice of the basic grid is still visible, but randomness has made its mark, leaving imperfections that disrupt any nascent pattern. Unlike the symmetrical examples Truchet and Doüat give, there is no resolution to the structure. The center cannot hold, and neither can the margins. Smith next pushes the limits of the Truchet tiles’ regularity by omitting solid coloring from the tiles, leaving only the black diagonal line. The four possible orientations of any given tile are then reduced to two.
These modified Truchet tiles generate a design that looks
unmistakably like the output of 10 PRINT
,
a program published a half decade before Smith and
Boucher’s article. The grid still
remains—indicating the edges of each
tile—but the diagonals no longer seem to bound
positive or negative space. Instead, they appear to be the walls of
a maze, twisty little passages, all different. In this Truchet
tile-produced artifact the dynamic between regularity and its
opposite come into play, suggesting that regularity is not an
aspect of design that exists in isolation, but rather can only be
defined by exceptions to it, by those moments when the regular
becomes irregular. Rather than celebrating that 10 PRINT
“scooped” Smith,
it seems appropriate to note that there are several ways up the mountain— or into the maze—of this particular random and regular pattern; one was discovered at Commodore, another by taking a mathematical perspective on tiling patterns and their aesthetics.
Textiles and Craft
The experiments of Truchet and Doüat did not
introduce the idea of creating patterns out of simple variations on
shapes. Such practice is commonplace across many forms of design,
particularly in the realm of ornament, where both regular and
irregular patterns have long been created. Franz Boas documented
compelling examples of theme and variation of Peruvian weavers, for
example (cited in Gombrich 1994, 72). The Kuba of Zaire create
patterns of a complexity that has puzzled electrical engineers,
patterns with the mazelike passageways of 10 PRINT
and yet of a far greater intricacy (Huang et al. 2005). Or consider
the murals of the Sotho women of South Africa, decorative geometric
murals known as litema
(figure 30.7). This technique, documented as early as 1861,
involves assembling networks of squares made of painted mud and
etched with fingers and sticks (Gerdes 1998, 87–90). In fact, the decorative
arts have long held this secret to 10 PRINT
.
Such techniques are detailed in the examples of fancy work in the
1885 The Young Ladies’ Journal Complete Guide to the Work-table
(figure 30.8). The examples therein demonstrate the orthogonal
basis for stitchwork that is evocative of the grid of the computer
screen.
The hundreds of techniques define patterns ranging from simple grids to complex emergent patterns. As Mark Marino argues elsewhere (2010), these pattern books and instructive texts, primarily aimed at young women, provided models of fundamental processes similar to the role of the computer manuals and magazines such as RUN. Many of the techniques result from a repeated process with instructions, similar to that indicated by a computer program. For example, the Square Pattern technique (figure 30.8) in the Fancy Netting chapter is defined as a pair of operations that are repeated:
No. 6.— SQUARE PATTERN
For this pattern:—
1st Row: Work one plain row.
2nd Row: One ordinary stitch, and twist the thread twice round for
the large square. Repeat to the end of the row.
The first and second rows are repeated alternately. Arrange the stitches
so that a long stitch always comes under a short stitch.
Such examples demonstrate that while the systematic theorization of
patterns such as the one produced by 10 PRINT
may
emerge periodically, the production of those patterns is deeply
woven into the traditions of decorative craft. The fundamental role
of shared techniques for process and pattern place computer
programming squarely in the realm of technē,
artistic craft. As in the Commodore 64 User’s Manual,
this text promotes the execution of a set of instructions collected
as a technique. On the surface, the parallels between teaching
needlecraft and programming are striking. The programmers, however,
are not taught to repeat the procedure but instead, initially, to
repeat a formal description of the procedure by typing it into the
machine—which then does the repeating for them.
It is the very automation of the process that makes 10 PRINT
possible; the program
operates less like handy stitching and more like the machinery of the Jacquard Loom.
Prior to that loom, during or near the second century BCE, China gave birth to a loom “that made it possible to create a pattern in fabric . . . called a drawloom because [it] allowed the warp threads to be drawn up individually to create the design to be woven” (10). That loom, however, was irregular: “the arrangement of the individual warp threads was different for every single row of weaving” (10). By contrast, the loom designed by Joseph-Marie Jacquard was regular and programmable (12). Such a machine relied on an exacting degree of regularity. Of course, much has been made of the Jacquard Loom as the prototypical computer, for example James Essinger’s book Jacquard’s Web: How a Hand-Loom Led to the Birthof the Information Age (2004). The core similarity in these early accounts were the punch cards, which were automatically applied to the control system and which served as patterns for the loom to follow. Earlier punch card looms have been discovered and attributed to J. B. Falcon, B. Bouchon and Vaucanson, whose invention of a mechanical duck is a bit more widely known (Zemanek 1976, 16). According to Essinger, Falcon’s punch cards were “clumsily made and unreliable” (36).
Commercial-grade textiles require up to four thousand cards strung
together—a far cry from the two statements on the one line of 10 PRINT
(figure 30.9). The cards are applied to a bar, an
“elongated cube,” full of “hundreds of identical holes . . . to
accommodate the tips of needles,” which are raised
according to the selections on the punch card. As the bar turns
with each pick of the shuttle, it moves down the material as if
moving down a computer screen. Regularity made it possible for the
Jacquard Loom to draw its intricate patterns. But the use of the
cards as a pure pattern and the inability to regulate the flow of
control meant that patterns have to be defined exhaustively rather
than through concise programs. In other words, the number of cards
is proportional to the size of the pattern being woven. While
needlework instructions demonstrate the role of repeated process
and pattern over somewhat regulated space, the loom regulates time
and space without, in effect, repeating the process.
10 PRINT
can be imagined as the complete method of craft programmed into the
computer—as it was not fully programmed into the
loom. The loop offers a way for the weavers of the computer screen
to shift their emphasis from a fixed template, traversed once, to a
more intricate model of process. 10 PRINT
demonstrates
the power of the computational machine to rapidly prototype a
repeated pattern, and since it executes the pattern itself, the
incipient programmer is freed to experiment with variations and
extensions of that process.
THE GRID IN MODERN ART
In the 1960s and 1970s, artists moved away from abstract expressionism, the dominant current of the 1950s, and its preference for raw emotion. Newer movements such as op-art and minimalism along with the continued line of constructivism in Europe engendered a body of rational, calculated visual art that utilized grids and even spacing to define order. A tour through any major American modern art museum will reveal Frank Stella’s canvases of regular lines, Ad Reinhardt’s hard-edge grids of barely distinguishable tones, Carl Andre’s grids of metal arranged on the floor, Donald Judd’s regularly spaced steel fabrications, Dan Flavin’s florescent matrices, and Agnes Martin’s exquisite, subtle grids on canvas. This list could continue for pages as it moves forward in history; the point has no doubt been made. This American tendency to move toward minimal forms was expressed well by Ad Reinhardt in “Art-as-Art” in 1962: “The one object of fifty years of abstract art is to present art-as-art and as nothing else, to make it into the one thing it is only, separating and defining it more and more, making it purer” (Rose 1991, 53).
In Europe at the same time, a massive number of artists were working with grid systems, and they were often doing so with more explicit focus and rigor. This energy was frequently channeled into groups that formed in different cities. For example, there was GRAV (François Morellet, Julio Le Parc, et al.) in Paris, ZERO (Heinz Mack, Otto Piene, et al.) based in Düsseldorf and extending a wide net across Europe, The Systems Group (Jeffrey Steele, Peter Lowe, et al.) in London, and the Allianz in Zurich (Max Bill, Richard Paul Lohse, et al.). The most iconic artist to work with grids might be the optical artist Victor Vasarely, whose grids were mesmerizingly distorted. His work was so systemized that he invented a notation system to enable a team of assistants to assemble his works using instructions and modular, prefabricated colored pieces. Although it is difficult to discern by just looking at the work, there was tension between the artists who worked toward the primacy of mathematical form and those who maintained a desire to imbue subjectivity and emotion in their geometric compositions.
In critiquing of the former category of art, Ferreira Gullar, a
Brazilian poet and essayist, wrote the 1959
“Neo-Concrete Manifesto” declaring
that it was dangerous for art to be concerned only with
“objective problems of composition, of chromatic
reactions, of the development of serial rhythms, of lines or
surfaces” (Zelevanksy 2004, 57).
Gullar’s manifesto harkens back and reimagines
works of the early twentieth century by artists such as Wassily
Kandinsky, Kasimir Malevich, and Alexander Rodchenko. Within the
specific context of the grid, pioneers Piet Mondrian, Theo Van
Doesburg, and other artists affiliated with De Stijl abandoned
representation entirely. Van Doesburg et al. coined the term
“concrete art” to categorize works
that are conceived without reference to nature and symbolism. The
manifesto “The Basis of Concrete
Painting” published in April 1930 stated,
“The work of art should be fully conceived and
spiritually formed before it is produced. It should not contain any
natural form, sensuality, or sentimentality. We wish to exclude
lyricism, dramaticism, symbolism and so forth” (Fabre
and Wintgens Hotte 2009, 187). Van Doesburg continued in
“Elementarism (The Elements of the New
Painting)” from 1932: “One must not
hesitate to surrender our personality. The universal transcends it.
. . . The approach to universal form is based on calculation of
measure and number” (187). Representative works such as
Mondrian’s Composition with Red, Blue, Black, Yellow, and Gray (1921) and Van Doesburg’s Counter-Composition VI
(1925) were composed exclusively with orthogonal lines to form a
grid. Works from this time also experiment with rotating the grid
45 degrees to create a more dynamic composition. This formal
technique manifests itself, of course, in 10 PRINT
.
While the 10 PRINT
program came out of the computer culture and not the art world, it
has an uncanny visual resemblance to prior works of
twentieth-century art. Paul Klee, a Bauhaus professor and highly
influential artist (1879–1940), produced works
in the 1920s that seemed to resume Truchet’s and
Doüat’s experiments. In his concise Pedagogical Sketchbook,
published in 1925, Klee presents his thoughts on quantitative
structure, rhythm, repetition, and variation. His
Variations (Progressive Motif),
painted in 1927, demonstrated his theories as a visual composition.
He divided the 40cm-square canvas into a grid of nine units, where
each unit contains a pattern of parallel lines, with some
exceptions, which run vertical, horizon-tal,
or diagonal. More insight into this painting is found in his
notebooks, as published in The Thinking Eye
in 1964. Klee discusses the difference between natural and
artificial measurement as the difference between idiosyncratic and
rational order. More important, he discusses tension and dynamic
density through the linear and progressive spacing of parallel
lines. Through these visual contrasts in Variations,
Klee explores the same aesthetics questions that can arise
from 10 PRINT
.
First he created an artificial grid to work within; then he
populated each square with ordered but variable patterns. Klee
didn’t have the advantage of motion that is
afforded to 10 PRINT
,
but he simulated it through the expansion and contraction of
parallel lines within his grid.
In France, a group of like-minded artists within and around GRAV
(Groupe de Recherche d’Art Visuel) were
exploring variations within grids. François Molnar and
Vera Molnar worked on a series of images in 1959 that presented a
visual system strikingly similar to 10 PRINT.
In the essay “Towards Science in
Art,” published in the anthology DATA: Directions in Art, Theory and Aesthetics
in 1968, François Molnar published the images
Simulation d’une série de divisionsde Mondrian à partir de trois au hasard and Quatre éléments auhasard.
Both are 24 × 24 unit grids with one of a few
possible forms painted into each grid unit with black gouache. As
the titles suggest, a random process defines the elements in each
square. Their Composition Stochastique
of the same year systematizes the random component by producing a
modular set of two elements—left and right
diagonals that are placed within a 10 × 10 unit grid.
In the illustrations for the essay, they feature a 1 percent, 5
percent, 30 percent, and 50 percent ratio of left to right diagonal
lines to show the result of chaos intruding upon order. Given that
this is a 100 unit grid, these percentages correspond to precisely
1, 5, 30, and 50 units in each figure. In the 50 percent figure,
the only substantive difference with our 10 PRINT
program is the variation on the core elements. So, just as a
mathematician independently described the output of
10 PRINT
in 1987, a team of artists working in Paris produced the fundamental
algorithm for 10 PRINT
in 1959—twenty-three years prior to the printing of
the Commodore 64 User’s Guide.
In her 1990 essay entitled “Inconceivable Images,” Vera Molnar wrote that she was thinking about Composition Stochastique as a computer program, because she had access to a machine:
To genuinely systematize my research series I initially used a technique which I called machine imaginaire. I imagined I had a computer. I designed a programme and then, step by step, I realized simple, limited series which were completed within, meaning they did not exclude a single possible combination of form. As soon as possible I replaced the imaginary computer, the make-believe machine by a real one.
Across the Atlantic in the 1960s the American artist Sol LeWitt
embarked on decades of work exploring grids and regular structures.
In 1968, LeWitt started making drawings directly on walls, rather
than on paper or canvas that would be placed on the wall. In this
return to the scale of frescos, his drawings within grids
integrated into architecture to transform the space (Singer 1984).
His Wall Drawing 291
from 1976 is a striking work, with a strong similarity to
10 PRINT
. Instead of the binary decision within 10 PRINT
,
LeWitt’s drawing allows for horizontal and
vertical lines, to create four choices for each grid element.
LeWitt’s work is encoded as an
algorithm—another similarity with
10 PRINT
. A difference is that the instructions are in English, rather than
BASIC:
291. A 12” (30cm) grid covering a black wall. Within each 12” (30cm) square, a vertical, horizontal, diagonal right or diagonal left line bisecting the square. All squares are filled. (The direction of the line in each square is determined by the draftsman.)
This grid-based wall drawing wasn’t an isolated work within LeWitt’s output. He created dozens of similar drawings, each with slightly different rules and allowing for varied lines including arcs and dotted lines.
While many artists and critics in the twentieth century were clearly obsessed with the grid, not all have celebrated it. The critic Rosalind Krauss put the grid into a different context in her 1979 essay “Grids” (Krauss 1979). She acknowledges the proliferation of the grid but criticizes it as a dead end: “It is not just the sheer number of careers that have been devoted to the exploration of the grid that is impressive, but the fact that never could exploration have chosen less fertile ground.” She continues, “The grid declares the space of art to be at once autonomous and autotelic.” Through pursuing pure visual exploration like variations on grids, Krauss argued that the visual arts abandoned narrative and discourse and moved into cultural isolation.
During the era of our 10 PRINT
program, in wake of the Vietnam war and social movements of the
late 1960s and early 1970s, the larger emphases within visual arts
communities had moved away from minimal-ism and constructivism (and
their variants) to focus back on expressive and realistic painting
and the emerging acceptance of photography. The visual work created
for early home computers and games systems like the Atari VCS and
Commodore 64, however, were highly constrained by the technical
limitations of the hardware and therefore had more in common with
the visual art of prior decades.
A chief explanation for these uncanny similarities is the grid itself. In “Designing Programmes,” the Swiss designer Karl Gerstner (1964) asks, “Is the grid a programme? Let me put it more specifically: if the grid is considered as a proportional regulator, a system, it is a programme par excellence.” Gerstner’s encounters with the computer led him to theorize the regulated space as a program itself. The grid systematizes artistic creation even as it presents a challenging and yet generative platform for experimentation, whether on canvas, the dance floor, or a computer screen.
THE COMPUTER SCREEN
While the traditions of twentieth-century art and earlier craft
traditions are significant for 10 PRINT
,
the program functions the way it does because of the circumstances
of technology, the history of the Commodore 64’s display, and the
types of regularity it supports. Again, the grid acts as a program
to determine the final output.
The Commodore 64’s video image is a grid 320 pixels wide and 200 pixels tall. This accommodates an array of characters or, in the terminology of Commodore 64 hi-res graphics, attribute cells. Specifically, the grid is 40 attribute cells wide and 25 high. (There are other graphics modes that offer advantages, but for understanding 10 PRINT, this array of characters or attribute cells is most important.) The 40 × 25 grid contains exactly 1,000 characters, each represented by a byte. This fits nicely into one kilobyte (which equals 1024 bytes)—in fact, it is the largest grid that is forty characters wide and occupies 1024 bytes or less.
Economically and conveniently, the Commodore 64 could be taken out of its box and hooked to an ordinary television. It was an idea that could be seen in Steve Wozniak’s Apple I, introduced in April 1976. Later, the more widespread Apple II could also be connected to a television if one used an inexpensive RF modulator, purchased separately. (This component was left off the Apple II as a workaround; the FCC would not otherwise approve the computer, which would have produced too much interference.) The Apple II was the main precedent in home computing— other early home computers such as the TRS-80 Model II and Commodore PET had built-in monitors—but the idea was not original to Apple. At Atari, television engineer and employee #1 Al Alcorn had designed a Pong cabinet that, rather than using an expensive commercial CRT (cathode ray tube), incorporated an ordinary black-and-white television that was initially bought from a retail store. Wozniak, who did the original design for the Atari arcade game Breakout, knew about this trick of using a TV as a monitor. Videogame consoles (including Atari’s 1977 VCS, later called the Atari 2600, and the Magnavox Odyssey by Ralph Baer, introduced in 1972) would typically hook to televisions, too.
The rectangular form of the television image had its origins in the movie screen, which was rectangular due to the material nature of film and apparently obtained its 4:3 aspect ratio thanks to a gesture by Thomas Edison, one which resulted in a frame that was four perforations high. While the aspect ratio of film changed and diversified over the years, television in the United States (standardized in the NTSC format in 1953) and many computer monitors, through the 1980s and 1990s, used the 4:3 ratio.
Although composite monitors were available for the Commodore 64, the relationship between that system and the television was clear and was the default for those setting up their computer and hooking it up to a display. For a Commodore 64 purchased in the
United States, the system’s video output usually terminated in a NTSC television. But the computer display did not begin there: it has a heritage that included at least two output methods, ones that seem unusual today.
As one of this book’s ten coauthors has noted, “Early interaction with computers happened largely on paper: on paper tape, on punch cards, and on print terminals and teletypewriters, with their scroll-like supplies of continuous paper for printing output and input both” (Montfort 2004). The standard output devices for computers through much of the 1970s were print terminals and teletypes. Output was not typically produced on pages of the sort that come from today’s laser printers, but on scrolls of standard or thermal paper. The form factor for such output was not a standard 81/2 × 11-inch page, but an essentially endless scroll that was typically 80 columns wide.
Teletypes were used to present the results of the first BASIC programs written at Dartmouth in the 1960s, and they were the typical means of interacting with important early programs such as Eliza and Adventure. With such a system for output, there was no need for an automated means of saving and viewing the “scrollback”—a user could actually pick up the scroll of output and look at it. Of course, this sort of output device meant that animation and other effects specific to video were impossible.
An argument has been advanced that the modern computer screen also has an important heritage in the round CRT display of the radar screen (Gere 2006). The SAGE early warning system, the PDP-1, and the system on which Douglas Engelbart did the “mother of all demos” all sported round CRTs, as did early televisions. It is notable that the first two systems that may have been videogames in the modern sense, Tennis for Two by William Higginbotham and Spacewar by Steve “Slug” Russell, Martin “Shag” Graetz, Alan Kotok, and others were both created for circular CRT displays. While radar and some other images were actually round, as the early cathode ray tube was, the television signal and the page were not. What was, for radar, a radial display eventually gave way in computing to the rectangular, grid format that was adhered to by both page and television image.
REPETITION IN TIME
While 10 PRINT
would be impossible without the regularity of space, it would also
be wholly other without regularity of time and process. The program
is as much the product of ordered isometric shapes across a grid as
it is the repeated placement of those shapes. Gombrich notes that
“Everything . . . points to the fact that
temporal and spatial orders converge in our experience. No wonder
language speaks of patterns in time and of rhythms in
space” (1994, 10). He continues to examine simple
mechanical temporal rhythms from the pendulum’s
swing to the turn of the cog. As a bridging example between
spatiality and temporality, he notes the way a regular
configuration of stairs’ height and depth in a
staircase lead to a regular climb up the steps.
As Gombrich develops the notion of temporal repetition and regularity, he quickly transitions into a discussion of process. Whether a clock ticking or a person climbing the stairs, the temporal regularity is the result of a repeated process. Gombrich then moves to a discussion of work, by referencing K. Bucher’s Work and Rhythm, which insists “on the need for timed movement in the execution of joint tasks,” for example workers loading bricks onto wheelbarrows (Gombrich 1994, 10). The ticking clock does more than set the hours of labor on the factory floor: it epitomizes the regular movement of the workers. Gombrich continues, “And here again it is not only the simultaneous movement that is ensured by rigid timing. Even more important is the possibility inherent in any order of constructing a hierarchy of movements or routines to ensure the performance of more complex tasks” (10). This formulation suggests the relationship between regulated time and instruction, hierarchies of movements and routines, which recalls Taylorist models of production as well as programming. While a full investigation of those connections lies outside the aim of this book, it is important to note the fundamental role of processed instructions in producing rhythms in time and space.
Process and the appearance of motion are essential to
10 PRINT
. The still images that show a moment in the
program’s run, the sort that are reproduced in
this book, document the program to some extent but are an
incomplete representation. A full understanding of the program
comes only through experiencing the pattern building one unit at a
time and the surprise of the unexpected sequences and connections
that form into a maze as the left or right line is randomly
drawn.
The visual arts at their most traditional, represented by frescoes, stone and bronze sculptures, and canvases, are static. A viewer creates motion by moving around a work, eyes exploring the surface, but the object is still. The thrust of machines into life at the beginning of the twentieth century was an inspiration to painters (the Futurists), photographers (Étienne-Jules Marey, Eadweard Muybridge), and sculptors who used motors to create motion. The origin of integrating physical movement into artworks in the twentieth century is often credited to Naum Gabo for his Kinetic Construction (Standing Wave) from 1919–1920. This sculpture created a virtual volume in space by mechanically hitting a metal rod near the base to send a wave through the object. Gabo was thrilled to bring motion into his art and his enthusiasm led to “The Realistic Manifesto,” cowritten with his brother, Antoine Pevsner, in 1920. After rejecting the traditional foundations of art they declared:
We renounce the thousand-year-old delusion in art that held the static rhythms as the only elements of the plastic and pictorial arts. We affirm in these arts a new element, the kinetic rhythms as the basic forms of our perceptions of real time. (quoted in Brett and Nash 2000, 228)
With kinetic rhythm as the base of all new art,
Gabo’s Kinetic Construction
is an ideal demonstration. It is a machine without visual interest
or relation to the sculpture of the time. It performs the same
motion precisely over and over. The work of art is reduced to a
rhythmic repetition. While other pioneers of motion in art such as
Marcel Duchamp and Alexander Calder worked with motors to create regular machines, by the middle of the
century the dominant form of motion had shifted to the type of
chance motion experience through the wind moving a Calder or Rickey
mobile or the anarchic mechanical chaos of Jean Tingely. The
essence of 10 PRINT
lies in the relationship between both forms.
The next phase of the pairing motion and repetition in visual art
brings us closer to 10 PRINT
.
Artists began to create works for screens, first with film and
later for CRT screen with video. Akin to the minimalist sculptures
referenced above, there was a proliferation of minimal gestures
within experimental film and animation. Starting in the 1960s,
artists including Lillian Schwartz, John Whitney, Norman McLaren,
Bruce Nauman, Richard Serra, and Paul Sharits explored repetitive
physical movements and abstract motion with rigor.
The Flicker
(1965), a film by Tony Conrad, stands out for its clarity. As shown
earlier, without the semicolon in 10 PRINT
,
each diagonal line could be seen as a panel of a film strip.
It’s only a small leap to imagine the left line
of the program as an unexposed film frame (clear) and the right
line as the maximum exposure (black) to bring the fundamental
mechanism of 10 PRINT
close to The Flicker.
The fundamental difference is the larger arc within
Conrad’s work. The pace at which the projection
flips from pure light to black is slower at the beginning and end
of the film to give it a beginning and end, while
10 PRINT
maintains the same pace, does not vary in any way as it begins, and
continues running until interrupted.
Simultaneously with the exploration of repetition in film, a host
of composers based musical works on repetition. Like film and
video, musical performance is temporal, but unlike these linear
media, performances and 10 PRINT
unfold in real time, each step happening in the moment and
potentially informed by the present state. Piano Phase
(1967) by Steve Reich is an iconic sound work built on repetition.
In this approximately twenty-minute-long composition, two pianists
start by playing the same twelve-note melody continuously. One
pianist plays the sequence faster so it moves out of phase until
they are back in phase, but the faster pianist is playing the
second note, while the slower is on the first note. This continues
until the faster pianist has complete a full loop and both are
again playing the same sequence at the same time. The piece
iterates further from that point, but the same phasing technique is
used until the end. The concept is the same as in
Reich’s later and simpler piece Clapping Music (1972), which is clapped by two performers and varies only in
rhythm. In 10 PRINT
, new forms emerge from the program’s decision to
display the left or right line, but in Piano Phase
and Clapping Music,
new sonic forms emerge by playing the same sequence over and over,
with performers playing at a different speeds.
REPETITION IN PROCESS
The artworks in this chapter engage with regularity as a style and technique; computers employ regularity as a necessary paradigm of their existence. The execution of a computer program, even one that is riddled with bugs or does numerous complex and interesting things, is nothing if not regular. In fact, it is the regularity of computer processes that many of the artworks discussed in the chapter are reacting to and against. Even more than in the Ford factory, regularity becomes a paradigm of the computational age, to be explored and resisted because it is the central logic for even the most basic computational literacy. While the assembly line might put many goods in the hands of twentieth-century consumers, families did not need to contemplate assembly lines to consume these goods. Even for workers actually in a factory, the flow of the factory would be defined elsewhere. However, to write even the most rudimentary program, a person must understand and engage the regularity of the machine. Consequently, it is worthwhile to articulate the process of flow and control that allows this regularity to become such a generative space.
Part of what gives programs their power is that they can be made
even more regular by repeating a sequence of instructions. This
repetition can be accomplished in two main ways: in a loop that
continues for a certain number of iterations or in an unbounded
loop. These two loops correspond to two types of branching, the
conditional and unconditional branch. To understand the unbounded
loop of 10 PRINT
and the specific legacy of GOTO
is to understand the essentials of the flow of control in computer
programs.
To explain the loop, it is necessary to first juxtapose it with the
alternative: not having a loop and letting a program progress in
the usual sequence. In any imperative programming language,
commands are processed in a particular order that relates to the
left-to-right then top-to-bottom path that Western
readers’ eyes take along a page. If one types
two PRINT
commands directly into the Commodore 64’s BASIC
interpreter, with a colon between them, like so:
PRINT "FIRST": PRINT "SECOND"
the result is
FIRST SECOND
The command on the left is executed first, then, the command on the right. In executing the following program, the top-most, left-most command is run first, then the one to the right, and then the one on the next line, so that
10 PRINT "FIRST": PRINT "SECOND" 20 PRINT "THIRD"
prints FIRST, SECOND, and THIRD, in that order. Since BASIC uses line numbers to determine the sequence, the order in which these two lines are typed is completely irrelevant to how the program runs.
There are some important ways to complicate this straightforward program flow. All of these ways involve branching, which causes program flow to shift to some other command rather than continuing along to the subsequent one. The same could be said of the low level of machine code and its execution by the processor. A machine language program is a sequence of numbers typically processed in order of appearance. An executing machine language program, however, like a high-level program in BASIC or another imperative language, can either continue to process the next instruction or can move out of sequence to process a different instruction. The standard case is when a processor continues to the next machine language instruction, just as the reader of a text moves to the next word or line. This involves incrementing the program counter so that it points to the place where the next instruction is located in memory. If the current instruction is one that can change the flow of control, however, the program may jump to a new memory location and a new piece of code. The branch or jump is the key operation that is used to build a loop.
Conditional and Unconditional Branching
There are two essential ways that the flow of control can change
and a program can branch, continuing from a new point. An
unconditional branch always directs the program to jump to a new
location, like the instruction “Go directly to
Jail. Do not pass Go” in Monopoly. The assembly
mnemonic for an unconditional branch is jmp
;
the corresponding BASIC keyword is GOTO
;
packaging together a branch away from a line of code and then a
subsequent branch that returns to the original line constitutes a
subroutine, implemented in BASIC using GOSUB
and RETURN
. When an unconditional branch is used to point back to an earlier
instruction, it can cause repetition in process as in the case
of 10 PRINT
.
The other type of branch is a conditional branch, a type of
instruction that is critical to general-purpose computing. There
are many different types of conditional branches in assembly, since
there are many different types of conditions. beq
is
“branch if equal,” for instance: when used after a comparison (cmp
),
the branch will be taken only if the compared values are
equal. bmi
, “branch if minus,” checks to see if
the last computation resulted in a negative value. In BASIC, using
the IF…THEN
statement is the most straightforward way to accomplish a
conditional branch, as this program demonstrates:
10 INPUT A$ 20 IF A$ = "1" THEN PRINT "YOU TYPED ONE!" : END 30 PRINT "SOMETHING ELSE..."
If, after running this program, the user types just the digit
“1” and then presses RETURN, all of the statements on line 20 will be executed. “YOU
TYPED ONE!” will be printed and then the program will
terminate as END
instructs. This is another way to change the flow of the program,
of course: use END
or STOP
to terminate the program. If STOP
is
used, the CONTINUE
command can be issued to pick up where the program left
off.
If the user types nothing or anything other than a single
“1” before pressing RETURN, the flow of control moves to line 30; both the first PRINT
statement and the END
are skipped. “SOMETHING ELSE . . .”
is printed instead. This program, although written differently, does exactly the same
thing:
10 INPUT A$ 20 IF A$ = "1" THEN GOTO 40 30 PRINT "SOMETHING ELSE..." : END 40 PRINT "YOU TYPED ONE!"
Instead of using the IF . . . THEN
to directly determine whether two statements (the
PRINT
and END
statements) should be executed, this one changes the flow of
control with GOTO
. The GOTO
statement is used to skip ahead past PRINT “SOMETHING ELSE…”
and
END
to line 40. Although this isn’t a very exciting
program, it shows that unconditional branching can be used to jump ahead
in the sequence of lines; there is nothing about GOTO
that means it must
be used to repeat or loop.
Although there is no IF . . . THEN
statement in 10 PRINT
, and the program does not by any interpretation contain a
conditional branch, this short program does accomplish a very
small-scale sort of variation. By computing 205.5+RND(1)
and passing that value to the function CHR$
,
the program prints either PETSCII character 205 or PETSCII
character 206. This variation between two characters is a one-bit
variation, a selection from the smallest possible set of options.
Yet, in combination with the regularity of a repeating processes
and the regularity of the Commodore 64’s screen
grid, these selections take shape as something evocative and
visually interesting.
The harmfulness of GOTO
Those aware of the discourse in computer science might turn
to 10 PRINT
with some trepidation, thanks to a 1968 letter to the editor from
famous computer scientist Edsger W. Dijkstra, one that was
headlined “Go To Statement Considered
Harmful” (EWD 215). Although the title was actually
written by the editor—Dijkstra called this
article “A Case against the GO TO
Statement”—the letter and the
sentiment behind it have gained lasting fame. One author called it
“probably the most often cited document about
any type of programming” (Tribble 2005). As this author
explains, Dijkstra’s exhortation was written at
a time when the accepted way of programming was to code iterative
loops, if-thens, and other control structures by hand using goto
statements. Most programming languages of the time did not support
the basic control flow statements that we take for granted
today, or only provided very limited forms of them. Dijkstra did not mean
that all uses of goto were bad, but rather that superior
control structures should exist and should replace most uses of
goto popular at the time.
Indeed, there is an obvious control structure, unfortunately absent
from BASIC, which would accomplish the purpose of
10 PRINT
’s GOTO
without requiring the use of GOTO
.
This is the while
or do . . . while
loop, which in this case could simply be used with a condition that
is always true so that the loop would always repeat. For instance,
if Commodore 64 BASIC had a DO…WHILE
statement and a keyword TRUE
,
one could write:
10 DO : PRINT CHR$(205.5+RND(1)); : WHILE TRUE
This would certainly be a clearer way to write the
program, and it would be widely recognized today as clearer because
Dijkstra’s view of programming has prevailed.
When the creators of BASIC introduced True BASIC in 1983 they
included the DO
loop; its syntax was a bit different from the preceding, but the
essential construct was the same.
Although this important construct is missing from early versions of
BASIC, it’s not obvious that the tiny program 10 PRINT
would have particularly offended Dijkstra. In his letter, he
objects to the “unbridled use of the go to statement,”
but he does not state that every use of it is unambiguously bad. He describes the
GOTO
-related problems that arise when programmers are not able to track and
understand the values of variables. But 10 PRINT
has no variables, so this particular problem with
GOTO
is not an issue in this particular case.
As mentioned, GOTO
has a assembly language equivalent, jmp
.
Dijkstra essentially exempted assembly language from his critique
of GOTO
. He recognized that computer programs written in a high-level
language are more complicated and nuanced ways of expressing thought, not tied directly to
machine function. By creating a new sort of language that does not
directly mimic the operation of the processor, it is possible for
programmers to think more flexibly and powerfully. Although
Dijkstra objected to the way BASIC was designed, he, like the
original designers of BASIC, worked strenuously to describe how
high-level languages, useful for thinking about computation, could
work in machine-independent ways.
Bounded and Unbounded Loops
10 PRINT
works as it does because of its repetition of the
PRINT
statement, repetition that is unconditional: it will continue until
something outside the program interrupts it, such as the user
pressing the key labeled RUN STOP or unplugging the computer. This
ability to repeat endlessly differentiates the program from its
artistic parallels in other media.
At a high level, programs can contain two types of loops: bounded
(also called “finite”) and unbounded (or “infinite”). 10 PRINT
has
the latter kind. If one is writing a program that is intended to
produce some result and exit, it would be a mistake to include an
unbounded loop, creating a bug that would make the program hang on
a particular set of operations. Even among comparisons to
repetitions in fine art and craft work, the computer stands alone
as a system capable of infinite looping. Nonetheless, the unbounded
loop does have legitimate uses. It can be used to keep an
application, usually an interactive one, running and possibly
accepting input until the system is shut off, rebooted, or
interrupted. This can be done, and is done, even on a Commodore
64.
Bounded loops are those that end under certain conditions. The exact conditions vary; some will continue until the program reaches a predefined exit state, while others execute a specific number of times. If there are exit conditions for a loop at all, that suggests the programmer expected some kind of change to be introduced as the program executes.
A common use of finite loops is to create an iterative process. Iteration is a special type of looping where the result of one pass through the loop influences the result of succeeding passes. The simplest example of an iterative process is nothing more than counting: beginning with an initial value of 1, adding 1 to this (that is, incrementing it) to produce 2, performing the same incrementing operation again to yield 3, and so on. If the program goes to some limit, say 10, the loop is bounded:
10 A=1 20 PRINT A 30 A=A+1 40 IF A<=10 GOTO 20
If line 40 is replaced with 40 GOTO 20
,
the loop becomes unbounded. A conditional branch is what makes loop bounded—it
ends when the condition is met. Therefore, an unconditional branch
to earlier in the program corresponds to an unbounded
loop.
The bounded loop, and counting up or down to a particular value, is
so important in programming that BASIC has its own special syntax
for specifying that sort of loop, using the FOR…TO
and NEXT
statements. The bounded program above could also be
written:
10 FOR A=1 TO 10 20 PRINT A 30 NEXT
The same program could be written in yet another way:
10 A=1 20 PRINT A 30 A=A+1 40 PRINT A 50 A=A+1 ... 200 PRINT A
Doing so is an inefficient and error-prone way to write a process. The programmer is forced to do a repetitive task that the computer is extremely well suited to accomplish on its own. Modifying the program to count to 50 takes four times as long as writing the original program, if this way is chosen. In the previous program, one simply changes “10” to “50” in line 10.
Looping and Iterating
10 PRINT
’s unbounded loop produces iterative effects, even if it is not
enacting a purely iterative process. The unconditional branch at
the end is what accomplishes this: 10 PRINT
clearly repeats. There is nothing in the code, however, to indicate
that 10 PRINT
is an example of iteration in the more mathematical or
computational sense. There are no variables that change value from
one pass to the next—there are no variables at
all, in fact—and the code inside the loop, and
the way that code works, never changes. In the most straightforward
computing sense, the BASIC program 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
does not iterate.
Nonetheless, watching the program execute on screen shows hints that there is something changing as it runs: the position where a new character is displayed changes every time the loop executes, moving one location to the right until it reaches the fortieth column; then, the display of characters continues on the next line in column 1. The entire contents of the screen also moves up by two lines, with the top two lines disappearing, once the display of characters reaches the bottom left position.
None of this is a direct result of any BASIC statements included
in 10 PRINT
. Displaying strings on the screen generally has this effect, since
BASIC’s PRINT command calls the Commodore 64 KERNAL’s CHROUT routine to produce output. So,
while 10 PRINT
is not an iterative program, it invokes the iterative behavior
of PRINT
. 10 PRINT
exposes the power of using simple, iterative steps to create a
complex construction.
Computing is full of iterations and simple loops. The highest level of an application program is typically the “main loop” that checks for user input and for other events. Turn-based games, such as a chess program that plays against a human player, will typically have a conditional loop for each turn, conditioned upon whether or not the game is over. And frames of a graphics window or the screen overall, whether drawn in OpenGL, Processing, or by some other means, are drawn within a loop that repeats more or less rapidly depending upon the framework.
PERFORMINg ThE LOOP
Step Piece by Vito Acconci is a performance work based on repetition that is
interesting to compare and contrast with 10 PRINT
;
it is a defined, repetitive procedure that is carried out by a
person rather than a computer. Acconci defined this work in a brief
text: “An 18-inch stool is set up in my
apartment and used as a step. Each morning, during the designated
months, I step up and down the stool at the rate of 30 steps a
minute; each morning, the activity lasts as long as I can perform
it without stopping.”
Since there are months designated for the performance, Acconci
defined a bounded loop. Step Piece was certainly meant to be the same every morning in particular ways
during these months. But it was not the same at every point for a
viewer or for Acconci, and will not be the same at every point for
someone considering the piece years later. How is repeating the
same thing over and over not repetitive? A
person’s repetitive performance cannot be
exactly the same each time. Acconci no doubt stepped more rapidly
at some times and then needed to slow down; his foot struck the
stool in a slightly different way, producing a different sound.
There is no close analogue to this in 10 PRINT
,
since a Commodore 64 runs the program the same way each time and
the symbols are presented in the same way on the same
well-functioning television. The photographic documentation
of Step Piece shows Acconci in action with one foot on the stool and the other on
the way up or down. Just as different screen captures from
10 PRINT
are different, each photo is different—they differ
even more in some large-scale ways since they are images of the
same person in different postures, not a 40 × 25 grid
with different elements in it.
Additionally, as the days pass, Acconci gets better at his
repetitions (like a weightlifter doing “reps” to improve strength)
while 10 PRINT
writes characters to the screen at the same rhythm and in the same
manner as long as the program runs. Some computer programs do
actually improve over time—for example, because
they cache frequent operations or use machine learning to classify
inputs better. A one-line program like 10 PRINT
,
however, is an exemplar of the legacy of computers as basic
calculating machines that do the same thing with symbols each time
they are run. Finally, the repetition does not have the same effect
on the viewer because the context of life changes from day to day.
Thus, repetitive motion may elicit different thoughts at different
times.
So, these are at least four ways that Step Piece
changes through its repetition: (1) human performance changes in
subtle ways from repetition to repetition; (2) documentation shows
different, nonrepetitive moments; (3) human performance improves over time; and (4) the work is perceived
in different contexts, even by the same viewer. Step Piece
is exemplary here because it seems to be the more or less pure
repetition of pure repetition, but actors putting on the same play
on different nights encounter a similar type of nonrepeating
repetition and all of these four points also apply to the case of
plays that run for several performances. Even though
10 PRINT
is a performance by a digital machine, (2) and (4) still apply, so
that its repetition also varies in these ways.
The performance piece Dance,
a collaboration between choreographer Lucinda Childs, composer
Phillip Glass, and artist Sol LeWitt, interweaves these performance
strands together. Like all of the works already discussed,
narrative is absent and the subject is literally movement, hearing,
and seeing through variation and repetition (figure 30.10). For
three of the five sections of the performance, LeWitt created films
of the dancers performing the same sequence of motions that they
perform live on stage. He filmed them on top of a grid to reinforce
the structure within the choreography. The film is projected onto a
scrim at the front of the stage during the performance, and it is
synchronized to a recorded version of Glass’s
score. At times the projected image is enlarged and at times it is
slowed down as the film echoes the movements of the live
performance. Glass’s music for Dance
features his signature style of repeating and transforming brief
passages. The foundation of Dance
is Lucinda Childs’s choreography, which she has
referred to as stripped-down ballet. In the first and strongest
movement, the dancers move along straight lines from left to right
and right to left across the stage. As they quickly follow the line
in a mix of running, skipping, and turning, they move through a
series of tilts. The perception is they are moving through every
permutation within the grammar of movements created for the dance.
As with 10 PRINT
, the sound and motion are hypnotic and emphasize the details of the
variation rather than larger global structural changes.
Dance, however, is unlike 10 PRINT
in that it works across multiple media to synthesize a powerful and
at times overwhelming aesthetic experience.
Regularity is an important technique of the mid-to-late twentieth
century in part because artists explored systematic production and
repeated processes as epitomized by computer programs. The impact of those
art forms is in the stripping away of their representational and
expressive possibilities, the minimalism in their constructivist
techniques. By contrast, 10 PRINT
, as an initial and initiating example for novices at the Commodore
64, does not strip away but offers an introductory glimpse of the
effects of the flow and control of computer systems processing an
unbounded loop within the constraints of regulated time and space.
If the art world was moving away from representation and expression
to this minimalism, the novice programmer was encountering
10 PRINT
as the beginning of a movement toward representation and
expression, in this case within the world of computer
graphics.
In the cases discussed, regularity in time, space, and process
becomes programmatic, a proportional regulator that proves to be a
generative constraint, producing larger patterns that can be quite
unexpected. Through the unrelenting predictability of regularity,
the repeated random presentation of two diagonal lines across a
grid becomes a quite unanticipated scroll of mazes. As a
pedagogical example in the technē of programming, 10 PRINT
is both a product of and a demonstration of the force of
computational regularity.