Chapter III: Magic Crayons
Figure 31: A Crayon, Possibly Magic.
3.1 Building Worlds
Having demonstrated the power of thinking of games as worlds, we turn to the problem of making worlds. How does one represent and author a world? How can we leverage the interpretive processes of players, and representational techniques of authors?
Abstraction is the foundation of representation. Abstraction, Papert observes, creates worlds which are intelligible and plastic. Consistency of abstraction builds complete worlds in the minds of players, as Will Wright’s work and design reflections suggest. Scott McCloud argues that abstraction invites audience participation both cognitively and emotionally. Abstract cartoons of faces and people invite our identification, and the gutters between panels encourage the conceptualization of denser worlds [48]. This same principle is at work in the operation of hide-and-reveal, evident in both landscapes and Shigeru Miyamoto’s game worlds. Abstraction, also, cuts out the boring bits: films, novels, and video games don’t, as a rule of thumb, contain all the details of life (even The Sims), but are dramatically compressed worlds, carefully foreshortened to maximize interest.
Besides making worlds intelligible, plastic, complete, and engaging for players, abstraction also helps make world construction tractable for authors. A corollary consideration to a world’s intelligibility and plasticity to players, is the world’s intelligibility and plasticity to its author. How easy is it to build this world? Artists don’t need to render each leaf on a tree; one or two leaves are enough to suggest the complete tree. The problem of representing a world can be reframed in terms of load balancing: what is the weight of realizing a world, who carries it, and what are the implications?
Computers are machines that can represent all of our existing representational modes as well as behavior. Conventions from many genres and media are leveraged in digital media creation, which raises some hard design questions: how do we get the load bearing elements of representation (players, authors, conventions, bits, computers) to support and reinforce one another, rather than antagonize and establish false expectations?
One can pose the design question of abstraction and scale like this: if you have some fixed quantity of representational resources, how will you allocate them to build the richest model? What will the boundaries of the model be, how detailed will you make it, and what are the moving parts? You can’t draw every leaf on the tree, so which ones will you draw, and which ones will simply be suggested? Different media forms and genres use different conventions for breaking up the task of world representation. How a representation is load balanced affects a world’s believability, representational flexibility, ease of authorship, participatory plasticity, and architectural feasibility.
Representational resources must be properly balanced to create both intelligibility and plasticity. Improper balances create snarled or inert worlds. Worlds become snarled when their computationally complexity resists human intelligibility and manipulation; inert worlds result from representations which rely on dead bits that establish false player expectations and are opaque to computational dynamics.
How a world is constructed also affects the ease of importing, appropriating, subverting, and inventing new representational modes. Maxis was happily surprised by player’s appropriation of The Sims and the family album area of The Sims Exchange as story telling tools [30].
The quality of a world representation scheme exists relative to authorial intent. My orientation is to minimize the amount of authorial time spent building things and remove computational complexity that is irrelevant to the user’s experience. I’m interested in making things that are highly plastic in the user’s hands, to the point where users can participate in the process of authorship themselves. Sometimes computational complexity, or the lack thereof, is the point, as is the case with both Eliza and Terminal Time [23]. Eliza’s computational model is very simple, and yet it produces believable conversation. Appreciation of Terminal Time is predicated on audience awareness of how it dynamically assembles documentaries tailored to audience preference.
3.2 Exploiting the Player
The interpretive and participatory processes of players can be leveraged for world building in a number of ways. When an artist constructs a representation of dimensional space on a picture plane, she relies on the audience’s complicity in reconstructing the scene. One or two leaves are drawn on a tree, and fuller leaf growth is suggested. People can be teased into imagining more complete worlds, as Wright, Miyamoto, and McCloud demonstrate. Wright describes how characters are represented in The Sims:
Especially right now with current technology, there are a lot of limitations in terms of what we can do with character simulation. So, to me that seemed like a really good use of the abstraction because there are certain things we just cannot simulate on a computer, but on the other hand that people are very good at simulating in their heads. So we just take that part of the simulation and offload it from the computer into the player’s head. ... So you know, it’s parallel processing of a sort [63].
Player world reconstruction can also be used to achieve other effects. Miyamoto masterfully manipulates expectation and teases players into exploring his worlds by modulating the gap between the world imagined by players, and the one simulated in the game. Analogously, SimCity lures players into imagining possible cities and testing their potential existence by constructing them. Players, in this sense, are being called upon to play the role of authors and help build actual digital worlds. McCloud observes that abstraction engages reader identification. Player complicity in world construction is invited through mental completion, exploration, construction, and identification.
3.3 Exploiting the Author
Leveraging authorial knowledge from other media is one way to exploit authors in the representation of worlds. Visual artists, for instance, have a huge range of tools and techniques for manipulating the picture plane to create illusions of dimensional space. A bitmap lets painters bring to bear known illusionistic techniques to the problem of world building, while a computational ontology of three dimensional space shifts representational work to the machine, and demands a different set of compositional tools from authors.
Author versus computer representation is not a binary distinction. Emotisketch is a paint program I wrote for making dynamic faces [25]. Authors draw free form lines, and wire those lines to deformation primitives:
Figure 32: Emotisketch.
Artists can leverage conventions for creating dimensional space within Emotisketch. All the standard tricks for creating dimensional space are valid, and they can even be extended with deformation parallax. Emotisketch’s computational representation lends itself to how artists traditionally manipulate the picture plane, and adds the magic of life through animation. The system also holds out the possibility of discovering new representational possibilities with the line and deform primitives.
The difference between an Emotisketch face and a bitmap of a face is the difference between live bits and dead ones. The bits that represent an Emotisketch composition are structured as lines and muscles that my procedural descriptions of animation and behavior can manipulate. A photograph of a face is dead bits, and is very difficult to procedurally manipulate, and thus cannot be particularly dynamic or interactive. Computation can be used to operationalize representations, and add the magic of procedurality and interactivity; dead bits offer authorial plasticity to authors trained in non-computational disciplines. Emotisketch strikes a balance between live and dead bits. Ken Perlin’s Facial Nuance, which inspired Emotisketch, is a thicker computational representation of an expressive face [65]. The entire construction is live bits; even the three dimensional model is constructed procedurally. Building faces in Perlin’s program would take more work than in Emotisketch. In fact, no such author interface exists, unless you want to write the code yourself. As an artist, I can create an expressive, animated face in Emotisketch in under five minutes, and even animate things that aren’t faces at all, like cartoon frogs and letters. The medium of Emotisketch is very malleable, and can easily be used to author things which were never considered when I wrote the program. By shifting the representational load from the machine (not to mention the programmer) to the author, artists can combine their tricks with Emotisketch’s computational primitives. Perlin’s Facial Nuance, on the other hand, operationalizes three dimensional space, so the face can be drawn from any angle. The three dimensional space an author might create in Emotisketch, on the other hand, is purely an authorial illusion, totally opaque to the computer.
An extreme example of shifting work from the author to the programmer and machine is Minstrel, Scott Turner’s story generation system [81]. Minstrel is an artificial intelligence program which tells stories using a deep computational model of authorial practice. What an author does is simulated by computationally modeling problem solving, authorial goals, character goals, and meaning. Despite the incredible computational depth of Minstrel, the stories it tells are interesting only to theorists and practitioners of artificial intelligence. How is an author going to leverage artistic practice into such a system? Is it necessary or even productive to take something that humans are good at, e.g. storytelling, and simulate the process in a machine? Writing within a computationally thick framework is hard work, even for experienced programmers. Façade, an artificial intelligence based interactive drama, has taken two expert programmers two years to author story content for fifteen minutes of real time interactive drama. This does not include the incredible time invested in building Façade’s architecture.
Minstrel and Emotisketch embody quite different design strategies. Minstrel attempts to get the effects of what authors do by automating what authors do. Emotisketch provides computational primitives for authors to build new types of things. Minstrel is a robot that tells stories. Emotisketch is a magic crayon.
Just as The Sims simulates human emotion in the player’s head rather than the computer, simulation can be offloaded from computer to author. Authors, with the proper languages, can leverage their skills in creating artifacts with depth and meaning by tapping into both computational primitives and artistic practice. Artists and authors are masters at exploiting the physical limitations and material properties of a medium for representational gain: pages, panels, and gutters are used in comics to engage reader imagination in world reification; gaps between theatrical scenes are telescoped to represent the passage of variable time; playwrights use off-stage dialogue and sound effects to efficiently convey action. The online storytelling practice that grew out of The Sims and The Sims Exchange is a case in point, and was encouraged by the offloading of human emotion and intent modeling onto players. Overloading the computer with all the details of a represented world abbreviates a critical role of artists and authors: reinterpreting existing materials for new representational purposes.
3.4 Snarled Worlds
Figure 33: A World, Snarled.
Generally, the thicker and more complex the ontology in the machine, the more viscous, implastic, and unintelligible the material becomes in the hands of both authors and players. If computational complexity is required, and most digital games are computationally complex, dynamics and syntonicity are used to quicken and illuminate.
SimEarth, a landmark interactive simulation with numerous visualization, interface, and computational innovations that designers will no doubt return to, is in many ways a snarled world. In Will Wright’s words: “... I have still never seen anyone do an integrated model with an integrated lithosphere, hydrosphere, and atmosphere together like that. And we were getting some effects in the model that were real effects, that really show up, that even some of the more elaborate models that NCAR [National Center for Atmospheric Research] makes weren’t capturing” [68, p444]. SimEarth’s behavior, however, is hard to make sense of. “When SimEarth came out I realized at the end that, God, this is like sitting in the cockpit of a 747 in a nose dive. That’s what it feels like to most players” [68, p447]. The computational complexity and representation is out of balance with what most people can understand, manipulate, and form goals and hypothesis about. The metaphor of a 747 in a nose dive evokes the additional problem of feedback loop length, the distance between player action and perceivable effects: “The biological systems tend to be very soft, squishy things that you can do something to, and then it kind of reacts and adapts. It’s not really clear what you did to it, because it’ll then evolve around you. ... people would be playing and all of sudden their planet would freeze up and they’d have no clue why it happened. And I, as the simulation engineer, couldn’t tell them either!” [sic] [68, p444]. While SimEarth used plenty of dynamics to make the world’s complex state plastic, the dynamics lacked intelligibility and syntonicity, a hallmark of Wright’s more popular simulation games: “I think people can reason through their failures and assign credit to the failures more easily with the economic models. Plus the idea that you have money and you make money this way and you spend money on that all seems very natural to people, whereas when you get into the complex things like diversity, food webs, and things like that, people just don’t have an instinct for it.”
Monetary resource management is culturally syntonic. Syntonicity, as Papert argues, lets people relate to and make sense of new systems. Syntonicity helps make systems intelligible, a precondition for player constructed goals, hypothesis, plans, and action evaluation; properties necessary for a system to be used as a game or toy.
Dynamics also help make complex systems intelligible and plastic. How is a player to navigate a system with a huge state space? Dynamics carve our reachable states, transitions, and autonomously change state. Legos, for instance, have connection and stacking dynamics that make construction easy. The dynamics of Lego bricks constrain the kinds of things that can be made (reachable states), and suggest a limited set of interconnections (state transitions) for a player to choose from. It is certainly easier to build a miniature castle out of legos than cardboard. SimCity began life as a kind of paint program, and SimCity the simulation, we can easily imagine, makes building a city a lot easier than painting one. Without dynamics, a player would have to trudge through each state, carefully placing each image tile. Dynamics, also, give life to a world and are fun to play with. SimCity’s dynamics create a world with an inner life and vibrancy that a paint program lacks. Syntonic dynamics, such as a city that grows, offer players cognitive hooks for getting their heads and hearts into a miniature world.
A design rule of thumb for adding computational complexity to a system is whether the added work and complexity, on the part of both the programmer and computer, has a corresponding experiential payoff for the player.
3.5 Inert Worlds
Figure 34: A World, Inert.
Increasing the resolution of a world carries with it the risk of building worlds which are inert, devoid of computational life. Following’s Wright’s principle of consistent abstraction, increasing the visual detail of a world requires a corresponding increase in behavioral detail. As Perlin pointed out in his 2002 Game Developers Conference talk, we have digital characters that look more realistic, but don’t move or act with comparable realism [66]. False expectations are visually created which a system’s behavior does not live up to. Final Fantasy 8, for instance, uses very detailed bitmaps as backgrounds, but the world’s dynamic behavior doesn’t match its visual realism. High resolution representations that involve detailed bitmap images, complex geometries, or large collections of linear animations not only establish false expectations for the player, but pose serious challenges to world authors. Giving a highly detailed but static world procedural life is hard from the point of view of both computation and design, as large, inert representations are hard to breathe procedural life into. Too many dead bits produce highly detailed but frozen worlds, worlds inert to both player and author manipulation.
Super Mario Sunshine breaks with previous Mario games in this regard. In previous Mario games, if something was visually represented, such as a dinosaur, cave, or water, it generally behaved in a manner consistent with the visually established expectations. Players could expect to dig into the behavior of a dinosaur through the procedural power of the computer. Even elements in the background, such as clouds and mountains, were operationalized when players romped on clouds, or travelled across mountainous terrain. Super Mario Sunshine, on the other hand, builds representations which establish behavioral expectations, but fail to deliver. What appears to be a submarine is in fact only a platform for Mario to stand on. Expectations are aroused and then thwarted, creating a partially frozen world.
3.6 What is a Magic Crayon?
The danger of moving too much representational work to the programmer/machine is a snarled world; a medium whose complexity is unintelligible and, as a result, implastic. Keeping representation locked up entirely in an artist’s static two dimensional images, video, and models, on the other hand, is also untenable, as inert worlds result. Too many dead bits require Frankensteinien acts of computation to gain procedural life.
New representational materials which build upon the authorial practices of both computation and art will enable artists to leverage artistic techniques with computation. Inventing magic crayons, or new languages that combine existing authorial practices with the computer, is coterminous with both the practice of art and computational language design. Designing new languages of representation is at the heart of both computer science and the arts. Magic crayons are a class of representational languages that combine art and computation.
As a society’s computational literacy level changes, the standards for what is and isn’t a magic crayon will shift. TeX is a computational language that integrates the practice of page layout, typesetting, and printing. TeX, however, is not a generally accessible language. If everyone could think more like a computer, it might be a magic crayon.
Director and HyperCard are examples of magic crayons. These authoring tools combine computation and representation into systems which are accessible to ten year olds. The magic crayon-ness of Director and HyperCard, however, bottom out when we leave the domain of the stage, score, cast, cards, and buttons. Leaving that domain takes us back to the land of imperative programming.
The challenge of inventing magic crayons is combining the power of computation with expressive possibility in a novel form.
What are the properties of a magic crayon?
Accessible. Magic crayons, like normal crayons, must be readily available, cheap, and robust. Accessibility also means that children can obtain satisfying results from picking up and playing with a magic crayon.
Sketchable. Magic crayons enable authors to obtain satisfactory results with a small amount of effort. Things can be sketched, or partially specified, and they work. Sketching also means that creation is cheap: what one makes is playable in an incomplete form, and doesn’t require a large time commitment. Although fully functioning, sketched things remain malleable, both mentally and physically, because a sketch isn’t fully reified. Sketching means that the state space authors navigate is dense with interesting results, and that these interesting results are easily accessible.
The notion of sketching and low creation overhead is applicable to tools which aren’t related to drawing at all. Apple’s Stickies program is more of a magic crayon than Microsoft Word, since Stickies doesn’t require users to think very hard about creating, saving, and destroying notes. Sticky notes are low cost and friction-free.
Computational. Magic crayons are magic because they are imbued with the power of computation. Magic crayons allow non-programmers to engage the procedural qualities of the digital medium and build dynamic things.
Expressive. Magic crayons are artistically expressive, and rely upon authors to create meaningful worlds. One can draw many things with a crayon. Magic crayons allow authors to leverage and improvise a wide variety of artistic techniques.
3.7 Authorial Modes
Figure 35: Participatory Hats: Player, Author, and Programmer.
Authorship is a participatory mode that deserves special consideration: how does a representational system afford authorship? What are the primitives an author builds with, and how do these primitives affect what can be built, and the process of building itself? What is the relationship between authorial and non-authorial modes of participation?
Making systems (i.e. Legos) for constructing new things (space ships, castles, abstract structures) is a fundamental practice of digital design: language design, a topic close to the heart of computer science, is making new systems (grammars, compilers, interpreters) of representation for building new types of things; authoring tools like Director are systems of representation for making other systems; Photoshop is a system that lets one build and manipulate images, but unlike Director and most computer languages, what one makes in Photoshop is not dynamic. Systems that can be used to make systems gives rise to nested authorial levels. Espen Aarseth identifies as levels of usership the phenomena of nested participatory modes which result from systems for making systems [3, p172].
The participatory and authorial modes afforded by a medium impact who gets to do the making and playing. If we put aside the vertigo of recursive systems, and orient ourselves at a particular usership level, we find that participatory modes break down into some configuration of programmer, author, and player roles. In the hands of the public, Super Mario Bros. can only be played, but at Nintendo, someone programmed the architecture of Super Mario Bros., and someone authored the world’s content. Programmer and authorial modes in Super Mario Bros. are private.
Chris Crawford’s Erasmatron distinguishes all three of these participatory modes: Chris Crawford is Erasmatron’s programmer, other people build storyworlds with Erasmatron, and someone else can play the storyworlds. Façade consists of numerous architectures that bring its storyworld to life, and Mateas and Stern have also authored the content of Façade’s world, keeping the system’s programming and authorial roles to themselves.
In reality, who gets to play what roles is controlled by availability and accessibility: Nintendo doesn’t share Super Mario Bros.’s world authoring tools with the public, and authoring content for Façade is a non-trivial task.
3.8 Encouraging Authorship
The problem of making a public authorial mode accessible can be framed as facilitating mobility from player to author roles. Authorial accessibility is governed by the intelligibility and plasticity of a system’s primitives to an author. Bill Atkinson’s HyperCard provides graded user levels: browsing, typing, painting, authoring, and scripting. The elegance of HyperCard’s graded design is that the machinery which one makes use of transparently at one level becomes exposed at the next level down. When browsing, for instance, one sees lots of images and text, and the next two authorial levels, typing and painting, allow users to fabricate text and images. HyperCard’s authoring mode allows users to link cards, and this interface automatically generates HyperTalk code at the scripting level, which facilitates mobility between authorship and scripting levels. Multiple paths for solving the same problem allow users to compare knowledge across paths, deepening understanding of HyperCard’s workings. Interrelated and graded participatory levels encourage users to wade deeper and deeper into authorial waters, and leverage familiarity in understanding the unknown.
HTML’s widespread use resulted from features intrinsic to the language’s design. HTML is robust, open, fluid, easy, incremental, and modular. HTML is a reliable system, and tools for writing and viewing HTML are publicly available. Authorial descriptions of web pages, the HTML source, are available for other users to learn and steal from. Switching between the role of HTML user and author is fluid, because the relationship between a page’s code and appearance is clear. HTML is also an easy language. The relationship between code and web page is intelligible, and the language substrate (ASCII) and syntax is a plastic and forgiving material. Authorship in HTML can be incremental; one doesn’t have to build an entire web site or even a complete web page to successfully make something. HTML’s incremental authorship affords sketching. The structure of HTML is modular: it is easy to steal or reuse the code that describes an entire site, single page, chunk of layout, table, or hyperlink.
Modularity also means encapsulation, which makes reuse and authorship easier. Encapsulation produces modular entities with clearly defined boundaries and overviews. Getting your head around a cleanly encapsulated unit is straightforward. Rather than have a snarled spaghetti world where the authorial description of every object is interconnected to a hundred other objects, each entity is neat and self-contained. Non-interdependence means that reusing and exchanging entities is straightforward.
3.9 Primitives
Figure 36: Interlocking Primitives.
One way of conceptualizing a system for constructing things is as a set of primitives, or self-contained building blocks. The primitives of Legos are individual blocks. Rather than consider the representational system all at once, we break it down into pieces which may operate differently, but nonetheless operate in the same kinds of ways. There are different kinds of lego pieces, but we can compare and think about how each piece connects to others, has a color, weight, size, or may be particularized into flags, people, or wheels.
Primitives stand for the fundamental set an author builds out of, but the primitives given by a system are not necessarily the same as those conceptualized and used by an author. Papert points out that microworlds are both material and conceptual: the sock pairing microworld exists in a child’s head [62, p162]. One can build with Legos and add the constraint that we are only building with blue pieces. This constructs a mental microworld with a different set of primitives than those articulated by the Legos themselves. The primitives one uses to build something are both material and conceptual entities.
Chapter 7 of Michael Mateas’s dissertation, Interactive Drama, Art and Artificial Intelligence, treats this topic in depth [41]. His discussion takes place in the domain of semiotics, which he proves useful for grounding out fundamental issues of computer language design. The semiotic language, however, isn’t light weight enough for talking efficiently about authoring tool and language design. I propose using a higher level language oriented around the concept of primitives which can be grounded out in Mateas’s semiotic work, but is more malleable for designers.
Primitives exist at the nexus of programmer, author, and player roles. Primitives are built by programmers for authors who, in turn, build things for players. Designing or modifying primitives is the practice of changing the fundamental set, the primitive elements in play. To consider the design of primitives, we must have a language that grasps their existence in three worlds simultaneously. It is useful to think of primitives as having valences that bind them into the domain of the programmer (physical valence), author (logical valence as building block), and player (experiential valence).
A card in HyperCard exists as a computational construct made of data structures and code, as a unit of segmentation authors can use to make stacks, and as a place that users can be at when browsing stacks. The two dimensional space of a card has a representational valence in the worlds of the programmer (the data structures and code that manages its bitmap and ordered list of objects, for instance), the author (a place to put things), and player (a place to be). A card’s two dimensional space has code, authorial, and player valences.
Some primitives give physical and logical order to other primitives. HyperCard cards are two dimensional spaces which lend form and intelligibility to buttons, fields, and bitmaps. Director makes use of two dominant organizing primitives: the score and stage. Other primitives, such as cast members, operate within the physical and logical contexts carved out by the score and stage.
3.10 Domain
The material properties of a medium impact what can be represented within it. Primitives are intimately related to what one can build, and different media forms have non-uniform representational powers. In the language of comics, for instance, time is very elastic. Simulations of cartesian space and time lend themselves to games whose primitive actions are jumping, moving, and shooting. Myst uses an entirely different model of space than Super Mario Bros.. Building a game whose primitive actions are jumping and shooting within Myst’s spatial ontology is absurd, and Super Mario Bros. lacks the spatial elasticity which makes Myst’s worlds navigable. Films often contain car chases, but stage plays do not.
Certain primitives lend themselves to particular domains of representation: it’s quite easy to build cities with SimCity, animations in Director, and spaces in HyperCard. Building an animation in HyperCard requires scripting or sequencing and rapidly playing back cards to create the illusion of motion. The most common way to build space in Director is manipulating the flow of time to loop or stop, creating a solidity which suggests space.
There is no single representational material which we can use to build every type of world. A plurality of magic crayons are needed to make a plurality of worlds.
3.11 Origami Possibility Spaces
A system’s primitive elements combine, interact, and fold into a multiplicity of worlds and possible worlds:
Figure 37: Primitives folding into an origami possibility space.
Primitives fold into possibility spaces with particular sizes, domains, and densities. The primitives that authors work with influence the kinds of worlds built, and whether construction is easy or hard. The primitives that players interact with govern the shape of a game’s possibility space.
Figure 38: Primitives fold into possibility spaces with particular sizes (how many states are in here?), domains (what kinds of things can I do?), and densities (how many states are interesting?).
A programmer working in a language like C navigates a huge space of possible programs that is only sparsely populated with interesting results. Programmers make primitives for authors, and the space which authors work within is smaller, denser with interesting results, and more tuned towards a particular domain. It’s easier to make things of a certain type in HyperCard than C. The possibility spaces that players navigate are fabulously dense with interesting results, but are far smaller than the spaces authors and programmers navigate:
Figure 39: Programmer, author, and player possibility spaces.
Programmers work in a huge possibility space with few interesting programs. Authors work in a smaller, but denser space. Players engage smaller possibility spaces that are densely populated with interesting results.
Authors define the primitives engaged by players, and try to optimize the ratio between game primitives and game possibilities. Variations on a theme, which players use to “sniff’’ and obtain an overview of a game’s possibility space, is viable because of how game primitives fold and recombine into a possible worlds landscape.
Programmers, by defining authorial primitives, influence the shape of the possibility space authors navigate. Programmers try to optimize the ratio between authorial effort and player experience. Comic Book Dollhouse offers authorial primitives that are accessible to many people, which means that the total output of author produced work is potentially high. Façade provides authorial primitives which require great skill to use, but can be used to fabricate player experiences that would otherwise be unreachable. A Pattern Language is an authorial microworld, a set of primitive elements and rules that establish a possibility space dense with interesting results.
Magic crayons fold into particular types of origami worlds. The possibility spaces authors navigate with magic crayons are dense with interesting results (accessible and sketchable), big (expressive), and occupy flexible and procedural domains (computational and expressive). As one might imagine, making authorial primitives requires tradeoffs along the dimensions of possibility space size, domain, and density. A language like TeX affords exploration of a huge space in the domain of typesetting (navigation is aided by the procedural power of the computer), but this space is not dense with interesting results.
Prev Table of Contents Next
Miniature Gardens & Magic Crayons Chaim Gingold © 2003