Transcript
Page 1: Processing: a programming handbook for visual designers and

Processing:a programming handbook for visual designers and artists

Casey ReasBen Fry

The MIT PressCambridge, MassachusettsLondon, England

Reas_00_i-xxvi.indd Sec1:iiiReas_00_i-xxvi.indd Sec1:iii 5/16/07 9:53:05 AM5/16/07 9:53:05 AM

Page 2: Processing: a programming handbook for visual designers and

© 2007 Massachusetts Institute of Technology

All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher.

MIT Press books may be purchased at special quantity discounts for business or sales promotional use. For information, please email [email protected] or write to Special Sales Department, The MIT Press, 55 Hayward Street, Cambridge, MA 02142.

Printed and bound in the United States of America.

Library of Congress Cataloging-in-Publication Data

Reas, Casey. Processing : a programming handbook for visual designers and artists / Casey Reas & Ben Fry ; foreword by John Maeda. p. cm. Includes bibliographical references and index. ISBN 978-0-262-18262-1 (hardcover : alk. paper) 1. Computer programming. 2. Computer graphics—Computer programs. 3. Digital art—Computer programs. 4. Art—Data processing. 5. Art and technology. I. Fry, Ben. II. Title.

QA76.6.R4138 2007

005.1—dc22

2006034768

10 9 8 7 6 5 4 3 2 1

Reas_00_i-xxvi.indd Sec1:ivReas_00_i-xxvi.indd Sec1:iv 5/16/07 9:53:06 AM5/16/07 9:53:06 AM

Page 3: Processing: a programming handbook for visual designers and

29 34 45 57 67 72

91 99 113 121 131 141

192 204 208 221 225 233

247 289 297 307 320 324

336 344 352 354 359 409

447 451 472 493 530 551

84

189

244

331

415

535

Reas_00_i-xxvi.indd Sec1:viReas_00_i-xxvi.indd Sec1:vi 5/16/07 9:53:06 AM5/16/07 9:53:06 AM

Page 4: Processing: a programming handbook for visual designers and

vii

Foreword Preface

Processing . . . Using Processing

Structure 1: Code Elements Shape 1: Coordinates, Primitives Data 1: Variables Math 1: Arithmetic, Functions Control 1: Decisions Control 2: Repetition Shape 2: Vertices Math 2: Curves Color 1: Color by Numbers Image 1: Display, Tint Data 2: Text Data 3: Conversion, Objects Typography 1: Display Math 3: Trigonometry Math 4: Random Transform 1: Translate, Matrices Transform 2: Rotate, Scale Development 1: Sketching, Techniques Synthesis 1: Form and Code Interviews 1: Print

Structure 2: Continuous Structure 3: Functions Shape 3: Parameters, Recursion Input 1: Mouse I Drawing 1: Static Forms Input 2: Keyboard Input 3: Events Input 4: Mouse II Input 5: Time, Date Development 2: Iteration, Debugging Synthesis 2: Input and Response Interviews 2: Software, Web

Motion 1: Lines, Curves Motion 2: Machine, Organism Data 4: Arrays Image 2: Animation Image 3: Pixels Typography 2: Motion Typography 3: Response Color 2: Components Image 4: Filter, Blend, Copy, Mask Image 5: Image Processing Output 1: Images Synthesis 3: Motion and Arrays Interviews 3: Animation, Video

Structure 4: Objects I Drawing 2: Kinetic Forms Output 2: File Export Input 6: File Import Input 7: Interface Structure 5: Objects II Simulate 1: Biology Simulate 2: Physics Synthesis 4: Structure, Interface Interviews 4: Performance, Installation

Extension 1: Continuing . . . Extension 2: 3D Extension 3: Vision Extension 4: Network Extension 5: Sound Extension 6: Print Extension 7: Mobile Extension 8: Electronics

Appendixes Related Media Glossary Code Index Index

Contents

xixxxi

1

9

17

23

37

43

51

61

69

79

85

95

101

105

111

117

127

133

137

145

149

155

173

181

197

205

217

223

229

237

245

251

255

261

279

291

301

315

321

327

333

337

347

355

367

371

377

395

413

421

427

435

453

461

477

495

501

519

525

547

563

579

603

617

633

661

693

699

703

705

Reas_00_i-xxvi.indd Sec1:viiReas_00_i-xxvi.indd Sec1:vii 5/16/07 9:53:09 AM5/16/07 9:53:09 AM

Page 5: Processing: a programming handbook for visual designers and

viii

88 342 55 65 305 220

98 319 323 351 353 359

225 232 240 247 444 44

124 129 288 296 29 32

202 470 488 184 190 407

141 113 329 335 530 535

415

207

83

75

455

551

Reas_00_i-xxvi.indd Sec1:viiiReas_00_i-xxvi.indd Sec1:viii 5/16/07 9:53:10 AM5/16/07 9:53:10 AM

Page 6: Processing: a programming handbook for visual designers and

ix

Foreword Preface

Processing . . . Using Processing

Color 1: Color by Numbers Color 2: Components Control 1: Decisions Control 2: Repetition Data 1: Variables Data 2: Text Data 3: Conversion, Objects Data 4: Arrays Development 1: Sketching, Techniques Development 2: Iteration, Debugging Drawing 1: Static Forms Drawing 2: Kinetic Forms Image 1: Display, Tint Image 2: Animation Image 3: Pixels Image 4: Filter, Blend, Copy, Mask Image 5: Image Processing Input 1: Mouse I Input 2: Keyboard Input 3: Events Input 4: Mouse II Input 5: Time, Date Input 6: File Import Input 7: Interface Math 1: Arithmetic, Functions Math 2: Curves Math 3: Trigonometry Math 4: Random Motion 1: Lines, Curves Motion 2: Machine, Organism Output 1: Images Output 2: File Export

Shape 1: Coordinates, Primitives Shape 2: Vertices Shape 3: Parameters, Recursion Simulate 1: Biology Simulate 2: Physics Structure 1: Code Elements Structure 2: Continuous Structure 3: Functions Structure 4: Objects I Structure 5: Objects II Synthesis 1: Form and Code Synthesis 2: Input and Response Synthesis 3: Motion and Arrays Synthesis 4: Structure, Interface Transform 1: Translate, Matrices Transform 2: Rotate, Scale Typography 1: Display Typography 2: Motion Typography 3: Response

Interviews 1: Print Interviews 2: Software, Web Interviews 3: Animation, Video Interviews 4: Performance, Installation

Extension 1: Continuing . . . Extension 2: 3D Extension 3: Vision Extension 4: Network Extension 5: Sound Extension 6: Print Extension 7: Mobile Extension 8: Electronics

Appendixes Related Media Glossary Code Index Index

Contents by category

xixxxi

1

9

85

337

51

61

37

101

105

301

145

251

217

413

95

315

321

347

355

205

223

229

237

245

427

435

43

79

117

127

279

291

367

421

23

69

197

461

477

17

173

181

395

453

149

255

371

495

133

137

111

327

333

155

261

377

501

519

525

547

563

579

603

617

633

661

693

699

703

705

Reas_00_i-xxvi.indd Sec1:ixReas_00_i-xxvi.indd Sec1:ix 5/18/07 9:44:32 AM5/18/07 9:44:32 AM

Page 7: Processing: a programming handbook for visual designers and

x

29 30 44 55 63 70

88 97 113 124 128 137

186 200 206 219 225 231

246 281 293 306 316 322

334 340 349 353 406

441 458 464 484 530 535

83

174

239

329

414

551

356

Reas_00_i-xxvi.indd Sec1:xReas_00_i-xxvi.indd Sec1:x 5/16/07 9:53:14 AM5/16/07 9:53:14 AM

Page 8: Processing: a programming handbook for visual designers and

xi

Foreword by John Maeda

Preface Contents How to read this book Casey’s introduction Ben’s introduction Acknowledgments

Processing . . . Software Literacy Open Education Network Context

Using Processing Download, Install Environment Export Example walk-through Reference

Structure 1: Code Elements Comments //, /* */

Functions Expressions, Statements “;”, “,”

Case sensitivity Whitespace Console print(), println()

Extended contents

Shape 1: Coordinates, Primitives Coordinates size()

Primitive shapes point(), line(),

triangle(), quad(), rect(),

ellipse(), bezier()

Drawing order Gray values background(),

fill(),stroke(),

noFill(), noStroke()

Drawing attributes smooth(), noSmooth(),

strokeWeight(), strokeCap(),

strokeJoin()

Drawing modes ellipseMode(), rectMode()

Data 1: Variables Data types int, float, boolean,

true, false

Variables =

Processing variables width, height

Math 1: Arithmetic, Functions Arithmetic +, -, *, /, %

Operator precedence, Grouping ()

Shortcuts ++, --, +=, -=, *=, /=, -

Constraining numbers ceil(), floor(), round(),

min(), max()

xix

xxixxi

xxiixxiiixxivxxv

1

1

3

4

4

6

7

9

9

9

10

11

16

17

17

18

18

20

20

20

23

23

25

31

31

33

34

37

37

38

40

43

43

47

48

49

Reas_00_i-xxvi.indd Sec1:xiReas_00_i-xxvi.indd Sec1:xi 5/16/07 9:53:17 AM5/16/07 9:53:17 AM

Page 9: Processing: a programming handbook for visual designers and

xii

Control 1: Decisions Relational expressions >, <, >=, <=, ==, !=

Conditionals if, else, {}

Logical operators ||, &&, !

Control 2: Repetition Iteration for

Nested iteration Formatting code blocks

Shape 2: Vertices Vertex beginShape(), endShape(),

vertex()

Points, Lines Shapes Curves curveVertex(), bezierVertex()

Math 2: Curves Exponents, Roots sq(), sqrt(), pow()

Normalizing, Mapping norm(), lerp(), map()

Simple curves

Color 1: Color by Numbers Setting colors Color data color, color()

RGB, HSB colorMode()

Hexadecimal

Image 1: Display, Tint Display PImage, loadImage(), image()

Image color, Transparency tint(), noTint()

Data 2: Text Characters char

Words, Sentences String

Data 3: Conversion, Objects Data conversion boolean(), byte(), char(),

int(), float(), str()

Objects “.”,

PImage.width, PImage.height,

String.length,

String.startsWith(),

String.endsWith();

String.charAt(),

String.toCharArray(),

String.subString(),

String.toLowerCase(),

String.toUpperCase(),

String.equals()

Typography 1: Display Loading fonts, Drawing text PFont, loadFont(),

textFont(), text()

Text attributes textSize(), textLeading(),

textAlign(), textWidth()

Math 3: Trigonometry Angles, Waves PI, QUARTER_PI, HALF_PI,

TWO_PI, sin(), cos(),

radians(), degrees()

Circles, Arcs, Spirals arc()

Math 4: Random Unexpected numbers random(), randomSeed()

Noise noise(), noiseSeed()

51

51

53

57

61

61

65

67

69

69

71

72

74

79

79

80

83

85

86

89

89

93

95

96

97

101

102

103

105

105

107

111

112

114

117

117

123

127

127

130

Reas_00_i-xxvi.indd Sec1:xiiReas_00_i-xxvi.indd Sec1:xii 5/16/07 9:53:18 AM5/16/07 9:53:18 AM

Page 10: Processing: a programming handbook for visual designers and

xiii

Transform 1: Translate, Matrices Translation translate()

Controlling transformations pushMatrix(), popMatrix()

Transform 2: Rotate, Scale Rotation, Scaling rotate(), scale()

Combining transformations New coordinates

Development 1: Sketching, Techniques Sketching software Programming techniques

Synthesis 1: Form and Code Collage Engine Riley Waves Wilson Grids Mandelbrot Set

Interviews 1: Print Jared Tarbell. Fractal.Invaders, Substrate Martin Wattenberg. Shape of Song James Paterson. The Objectivity Engine LettError. RandomFont Beowolf

Structure 2: Continuous Continuous evaluation draw(), frameRate(),

frameCount

Controlling the fl ow setup(), noLoop(),

Variable scope

Structure 3: Functions Abstraction Creating functions void

Function overloading Calculating and returning values return

Shape 3: Parameters, Recursion Parameterized form Recursion

Input 1: Mouse I Mouse data mouseX, mouseY,

pmouseX, pmouseY

Mouse buttons mousePressed, mouseButton

Cursor icon cursor(), noCursor()

Drawing 1: Static Forms Simple tools Drawing with images

Input 2: Keyboard Keyboard data keyPressed, key

Coded keys keyCode

Input 3: Events Mouse events mousePressed(),

mouseReleased(),

mouseMoved(), mouseDragged()

Key events keyPressed(), keyReleased()

Controlling the fl ow loop(), redraw()

133

133

134

137

137

139

142

145

145

146

149

150

151

152

153

155

157

161

165

169

173

173

177

178

181

182

183

193

194

197

197

201

205

205

212

213

217

218

221

223

224

227

229

229

232

235

Reas_00_i-xxvi.indd Sec1:xiiiReas_00_i-xxvi.indd Sec1:xiii 5/16/07 9:53:18 AM5/16/07 9:53:18 AM

Page 11: Processing: a programming handbook for visual designers and

xiv

Input 4: Mouse II Constrain constrain()

Distance dist()

Easing abs()

Speed Orientation atan2()

Input 5: Time, Date Seconds, Minutes, Hours second(), minute(), hour(),

millis()

Date day(), month(), year()

Development 2: Iteration, Debugging Iteration Debugging

Synthesis 2: Input and Response Tennis Cursor. Peter Cho Typing Banded Clock. Golan Levin

Interviews 2: Software, Web Ed Burton. Sodaconstructor Josh On. They Rule Jürg Lehni. Hektor and Scriptographer Auriea Harvey and Michaël Samyn. The Endless Forest

Motion 1: Lines, Curves Controlling motion Moving along curves Motion through transformation

Motion 2: Machine, Organism Mechanical motion Organic motion

Data 4: Arrays Using arrays Array, [], new, Array.length

Storing mouse data Array functions append(), shorten(),

expand(), arraycopy()

Two-dimensional arrays

Image 2: Animation Sequential images Images in motion

Image 3: Pixels Reading pixels get()

Writing pixels set()

Typography 2: Motion Words in motion Letters in motion

Typography 3: Response Responsive words Responsive letters

Color 2: Components Extracting color red(), blue(), green(),

alpha(), hue(), saturation(),

brightness(),

Dynamic color palettes

Image 4: Filter, Blend, Copy, Mask Filtering, Blending filter(), blend(),

blendColor()

Copying pixels copy()

Masking mask()

237

237

238

239

242

243

245

245

249

251

251

252

255

256

257

258

259

261

263

267

271

275

279

279

284

287

291

291

295

301

303

306

309

312

315

316

319

321

321

324

327

327

331

333

333

335

337

337

341

347

347

353

354

Reas_00_i-xxvi.indd Sec1:xivReas_00_i-xxvi.indd Sec1:xiv 5/16/07 9:53:18 AM5/16/07 9:53:18 AM

Page 12: Processing: a programming handbook for visual designers and

xv

Image 5: Image Processing Pixels pixels[], loadPixels(),

updatePixels(), createImage()

Pixel components Convolution Image as data

Output 1: Images Saving images save()

Saving sequential images saveFrame()

Synthesis 3: Motion and Arrays Centipede. Ariel Malka Chronodraw. Andreas Gysin AmoebaAbstract_03. Marius Watz Mr. Roboto. Leon Hong

Interviews 3: Animation, Video Motion Theory. R.E.M. “Animal” Bob Sabiston. Waking Life Jennifer Steinkamp. Eye Catching Semiconductor. The Mini-Epoch Series

Structure 4: Objects I Object-oriented programming Using classes and objects class, Object

Arrays of objects Multiple fi les

Drawing 2: Kinetic Forms Active tools Active drawings

Output 2: File Export Formatting data nf()

Exporting fi les saveStrings(), PrintWriter,

createWriter(),

PrintWriter.flush(),

PrintWriter.close(), exit()

Input 6: File Import Loading numbers loadStrings(),

split(), splitTokens()

Loading characters WHITESPACE

Input 7: Interface Rollover, Button, Dragging Check boxes, Radio buttons Scrollbar

Structure 5: Objects II Multiple constructors Composite objects Inheritance extends, super

Simulate 1: Biology Cellular automata Autonomous agents

Simulate 2: Physics Motion simulation Particle systems Springs

Synthesis 4: Structure, Interface WithoutTitle. Lia Pond. William Ngan Swingtree. ART+COM, Andreas Schlegel SodaProcessing. Ed Burton

355

356

359

360

364

367

368

369

371

372

373

374

375

377

379

383

387

391

395

395

398

406

409

413

414

416

421

421

422

427

428

431

435

436

442

448

453

453

454

456

461

461

469

477

477

481

487

495

496

497

498

499

Reas_00_i-xxvi.indd Sec1:xvReas_00_i-xxvi.indd Sec1:xv 5/16/07 9:53:19 AM5/16/07 9:53:19 AM

Page 13: Processing: a programming handbook for visual designers and

xvi

Interviews 4: Performance, Installation SUE.C. Mini Movies Chris Csikszentmihályi. DJ I, Robot Sound System Golan Levin, Zachary Lieberman. Messa di Voce Marc Hansen. Listening Post

Extension 1: Continuing . . . Extending Processing Processing and Java Other programming languages

Extension 2: 3D. Simon Greenwold A short history of 3D software 3D form Camera Material and lights Tools for 3D Conclusion Code Resources

Extension 3: Vision. Golan Levin Computer vision in interactive art Elementary computer vision techniques Computer vision in the physical world Tools for computer vision Conclusion Code Resources

Extension 4: Network. Alexander R. Galloway The Internet and the arts Internet protocols and concepts Network tools Conclusion Code Resources

Extension 5: Sound. R. Luke DuBois Music and sound programming in the arts Sound and musical informatics Digital representation of sound and music Music as information Tools for sound programming Conclusion Code Resources

Extension 6: Print. Casey Reas Print and computers High-resolution fi le export Production Conclusion Code Resources

Extension 7: Mobile. Francis Li Mobile software applications The mobile platform Programming for mobile phones Mobile programming platforms Conclusion Code Resources

Extension 8: Electronics. Hernando Barragán and Casey Reas Electronics in the arts Electricity Components Circuits Microcontrollers and I/O boards Sensors and communication Controlling physical media Conclusion Code Resources

501

503

507

511

515

519

519

521

522

525

525

526

531

532

536

538

539

545

547

547

549

552

554

555

556

561

563

563

565

569

571

572

576

579

579

582

584

588

591

592

593

599

603

603

606

608

612

613

615

617

617

619

622

624

625

626

631

633

633

635

637

638

639

642

646

648

649

658

Reas_00_i-xxvi.indd Sec1:xviReas_00_i-xxvi.indd Sec1:xvi 5/16/07 9:53:19 AM5/16/07 9:53:19 AM

Page 14: Processing: a programming handbook for visual designers and

xvii

Appendix A: Order of Operations Appendix B: Reserved Words Appendix C: ASCII, Unicode Appendix D: Bit, Binary, Hex Appendix E: Optimization Appendix F: Programming Languages Appendix G: Code Comparison

Related Media Glossary Code Index Index

661

663

664

669

673

679

686

693

699

703

705

Reas_00_i-xxvi.indd Sec1:xviiReas_00_i-xxvi.indd Sec1:xvii 5/16/07 9:53:19 AM5/16/07 9:53:19 AM

Page 15: Processing: a programming handbook for visual designers and

703

Code Index

This index contains all of the Processing language elements introduced within this book. The page numbers refer to the fi rst use.

! (logical NOT), 57!= (inequality), 52% (modulo), 45&& (logical AND), 57() (parentheses) for functions, 18 for precedence, 47* (multiply), 44*= (multiply assign), 49+ (addition), 43++ (increment), 48+= (add assign), 48, (comma), 18- (minus), 44-- (decrement), 48-= (subtract assign), 48. (dot), 107/ (divide), 44/= (divide assign), 49/* */ (comment), 18// (comment), 17; (semicolon), 19< (less than), 51<= (less than or equal to), 52= (assign), 38== (equality), 52 for String objects, 109> (greater than), 51>= (greater than or equal to), 52[] (array access), 301 2D arrays, 312 arrays of objects, 406{} (braces), 53 and variable scope, 178|| (logical OR), 57# (hex color), 93

abs(), 241alpha(), 338ambient(), 533ambientLight(), 533append(), 309arc(), 124arraycopy, 310Array, 301 length, 304atan2(), 243

background(), 31beginRaw(), 531beginRecord(), 607beginShape(), 69bezier(), 30bezierVertex(), 75blend(), 351blendColor(), 352blue(), 337boolean, 38boolean(), 106brightness(), 338byte, 38byte(), 106

camera(), 531Capture, 556ceil(), 49char, 38, 102char(), 106class, 395Client, 567color, 38, 89color(), 89colorMode(), 91constrain(), 237copy(), 353cos(), 118createGraphics(), 614createImage(), 362createWriter(), 423cursor(), 213curveVertex(), 74

day(), 249degrees(), 117directionalLight(), 536dist(), 238draw(), 173

ellipse(), 30ellipseMode(), 34else, 55else if, 56endRaw(), 531endRecord(), 607endShape(), 69exit(), 422expand(), 309extends, 456

false, 38fill(), 32filter(), 347float, 37float(), 106floor(), 49for, 61frameCount, 173frameRate(), 173

get(), 321green(), 337

HALF_PI, 117height, 40hour(), 245HSB, 89hue(), 338

if, 53image(), 96int, 37int(), 107key, 225keyCode, 227keyPressed, 224keyPressed(), 232keyReleased(), 232

lerp(), 81lightSpecular(), 536line(), 27loadFont(), 112loadImage(), 96loadPixels(), 356loadStrings(), 428loop(), 235

Reas_09_519-710.indd Sec6:703Reas_09_519-710.indd Sec6:703 5/16/07 12:33:53 PM5/16/07 12:33:53 PM

Page 16: Processing: a programming handbook for visual designers and

704 Code Index

map(), 81mask(), 354max(), 50millis(), 248min(), 50minute(), 245month(), 249mouseButton, 212mouseDragged(), 229mouseMoved(), 229mousePressed, 212mousePressed(), 229mouseReleased(), 229mouseX, 205mouseY, 205

new for arrays, 303 for objects, 399nf(), 422noCursor(), 213noFill(), 33noise(), 130noiseSeed(), 131noLoop(), 178norm(), 80noSmooth(), 33noStroke(), 33noTint(), 97

Object, 107, 395

PFont, 112PI, 117PImage, 96pixels[], 356pmouseX, 208pmouseY, 208point(), 25pointLight(), 536popMatrix(), 134pow(), 80print(), 20println(), 20PrintWriter, 423 close(), 423 flush(), 423 println(), 424pushMatrix(), 134

quad(), 29QUARTER_PI, 117

radians(), 117random(), 127randomSeed(), 129rect(), 29rectMode(), 34red(), 337redraw(), 235return, 194RGB, 89rotate(), 137round(), 50

saturation(), 338save(), 368saveFrame(), 369saveStrings(), 422scale(), 138second(), 245Server, 567set(), 324setup(), 177shorten(), 309sin(), 118size(), 24 with P3D, 528 with OPENGL, 528 with PDF, 607smooth(), 33specular(), 536split(), 429splitTokens(), 430spotLight(), 536sq(), 79sqrt(), 79str(), 107String, 103 length(), 108 endsWith(), 108 equals(), 109 startsWith(), 108 substring(), 109 toCharArray(), 108 toLowerCase(), 109 toUpperCase(), 109stroke(), 32strokeCap(), 33strokeJoin(), 33strokeWeight(), 33super, 456

text(), 112textAlign(), 115textFont(), 112textLeading(), 115textSize(), 114texture(), 536textWidth(), 116tint(), 97translate(), 133triangle(), 27true, 38TWO_PI, 117

updatePixels(), 356

vertex(), 69void, 187

width, 40

year(), 249

Reas_09_519-710.indd Sec6:704Reas_09_519-710.indd Sec6:704 5/16/07 12:33:53 PM5/16/07 12:33:53 PM

Page 17: Processing: a programming handbook for visual designers and

705

Index

This index contains mostly people, software, artwork, and programming languages. For topics, see the table of contents (pp. vii–xvii); for code, see the Code Index.

1:1 (Jevbratt), 566 3M Corporation, 5533 Stoppages Étalon (Duchamp), 1277–11 Email list, 563

AARON, 218Aesthetics and Computation Group (ACG), xxiii, 682Achituv, Romy, 549ActionScript, 158, 166, 522–523, 565, 680–681, 686–687, 689, 691Adair, Sandra, 384Adobe, 4, 169, 683Adobe After Effects, 166, 327, 379, 387Adobe Flash, 157–158, 165–166, 267–268, 275, 278, 327, 436, 564–565, 624, 629, 642, 680–681, 683, 686, 701Adobe Flash Lite, 624, 681Adobe Garamond (font), 112Adobe Illustrator, xxiii, 30, 77, 166, 143, 217, 271, 273, 607–608, 683Adobe Photoshop, xxiii, 95, 166, 268, 276, 347, 355, 360, 384, 387–388, 391–392, 607–608, 611, 683Adobe Premiere, 391–392Adobe Streamline, 166AAC (Advanced Audio Coding), 585 AIFF (Audio Interchange File Format), 585–586, 699Aldus PageMaker, 605Alexander, Ryan, 380Alias Maya, 379, 387–388, 537, 680AltSys, 170Andrade, Laura Hernandez, 4Apple IIe, xxiiiApple Audio Units (AU), 591

Apple Computer, 3, 111, 537, 585, 699Apple Logic Audio, 503, 591Apple Mac G3, 383Apple Mac G4, 383Apple Macintosh (Mac), 9–11, 95, 111–112, 169, 205, 227, 367, 383, 521, 568–569, 574, 604, 639, 665, 682, 685Apple Mac Mini, 639Apple Mac OS, 264, 435, 665–666, 681 Apple Mac OS X, 16, 170, 435, 645, 649, 684Apple QuickTime, 367, 383–384, 387–388AppleScript, 681Arduino, 521, 633, 640, 641, 645–646, 648–649, 681, 685Arp, Jean, 127Ars Electronica Festival, 618ART+COM, 498ASCII (American Standard Code for Information Interchange), 102–103, 226–227, 549, 565, 664–668, 670, 691, 699Athena, 387ATI, 537AT&T/Bell , 564Audacity, 591AutoCAD, 217, 529, 537Autodesk 3ds Max, 268, 276, 391–392, 537AutoDesk Revit, 537AutoLISP, 522, 681Autonomedia, 564 Avid/Digidesign Pro Tools, 591AVR (Atmel), 640awk, 517, 684

Babbitt, Milton, 580–581Bach, J. S., 581Bailey, Chris, 581Balkin, Amy, 267Baran, Paul, 564Barr, Alfred, 291Barragán, Hernando, 633 BASIC, xxiii, xxiv, 152, 264, 522, 604–605, 640, 642, 681BASIC Stamp 2 (Parallax), 640BasicX–24 (NetMedia), 642

Bass, Saul, 327Baumgärtel, Tilman, 564Bauhaus, 149BBC Acorn Archimedes, 264Beach Culture, 605Beethoven, Ludwig van, 581BEFLIX, 315, 681Bell Laboratories, 315, 580–581, 604Bentley Systems GenerativeComponents, 537Berliner, Emile, 579Berlow, David, 170Bernard (a k a Flip 1), 508BIAS Peak, 591BigEye, 554Binary Runtime Environment for Wireless (BREW), 625Binary space partition (BSP), 527Binder, Maurice, 327bitforms gallery, 164, 166–167, 525, 547, 603, 633Bittorent, 571Blackwell, Lewis, 605 Blender, 276, 576Blinkenlights (Chaos Computer Club), 618Blonk, Jaap, 511Bluetooth, 619, 621–622, 624, 641, 645, 683Blyth, Steven, 512Boids (Reynolds), 295, 473, 475, 497 Boole, George, 38, 61, 669Boolean algebra, 38Boulez, Pierre, 581 Braitenberg, Valentino, 473–474Brakhage, Stan, 413Brecht, Bertolt, 564Brooklyn Academy of Music (BAM), 515–516Brown, Robert, 295Brownian motion, 295Brunelleschi, Filippo, 525Bunting, Heath, 563–564 Bureau of Inverse Technology, 548, 634Burke, Phil, 592Burton, Ed, 263–264, 413, 499Byrne, David, 581

Reas_09_519-710.indd Sec6:705Reas_09_519-710.indd Sec6:705 5/16/07 12:33:53 PM5/16/07 12:33:53 PM

Page 18: Processing: a programming handbook for visual designers and

706 Index

C, 7, 264, 515–517, 522–523, 592, 640, 642, 682–685, 693, 697C++, 264, 271, 383, 507–508, 511–512, 515–516, 522–523, 555, 592, 599, 640, 679, 681–682CAD (computer–aided drawing software), 217, 526, 537–538Cage, John, 127, 579CalArts School of Art, 564California Institute of Technology (Caltech), 388, 549Cameron, Dan, 387Campbell, Jim, 549Carmack, John ,525Carnegie Mellon University, xxiCarnivore, 566, 568–569Carson, David, 605Cascading Style Sheets (CSS), 93 CCRMA Synthesis ToolKit (STK), 592Chang, Zai, 6Cheese (Möller), 549Cho, Peter, 257, 327CIA World Fact Book, 267Citron, Jack, 315CityPoems, 617, 624ChucK, 592, 682Cloaca (Delvoye), 461Clash of the Titans, 387Close, Chuck, 606CODE (Petzold), 648Cohen, Harold, 218Columbia–Princeton Electronic Music Center, 580Commodore C–64, 272Commodore VC–20, 272Common Lisp, 592Complexification.net, 6, 157Computational Beauty of Nature, The (Flake), 469Computers and Automation, 603Computer Clubhouse, 680Computer Lib / Dream Machines (Nelson), 3Computer Vision Homepage (Huber), 552Coniglio, Mark, 512“Constituents for a Theory of the Media” (Enzensberger), 564Conway, John, 461, 463, 467–468, 475Cook, Perry, 592 Cooper, Muriel , 327Cope, David, 581CorelDRAW, 608

Cosic, Vic 563–564Costabile, Sue (SUE.C), 503–504Craighead, Alison, 618Crawford, David, 316Crystal Castle, 525Csikszentmihályi, Chris, 507–508, 634CSIRAC, 580Csuri, Charles, 217Cuba, Larry, 1, 315Cullen, Mathew, 379–380CV.Jit, 554Cybernetic Serendipity, 101, 603Cycling ’74, 554, 592Cyclops, 554

Dada, 149–150Davies, Char, 526Davis, Joshua, 564–565 Deck, Barry, 112Deleuze and Guattari, 564Delvoye, Wim, 461De Mol, Gerry, 275Design By Numbers (DBN), xxiv, 552–523, 682Designers Republic, The, 605Dextro, 316Dialtones (Levin et al.), 617–618Digidesign, 587, 591Dine, Jim, 606DJ I, Robot Sound System, 506–509Dodgeball, 617, 624Domain Name System (DNS), 566DrawBot, 169, 682, 684Drawing with Computers (Wilson), 152, 217, 604Drawn (Lieberman), 413DuBois, R. Luke, 579Duchamp, Marcel, 127, 633Dunne, Tony, 634Dürer, Albrecht 525, 612DXF, 520, 529–531Dynabook, 3

Eagle, 272écal (école cantonale d’art de Lausanne), 271Eclipse, 571, 625ECMAScript, 681, 683Edelweiss Series (Maywa Denki), 634Edgerton, Harold, 295Edison, Thomas, 579 Eighth Istanbul Biennial, 387Eimart, Herbert, 580

Electronic Arts, 585ELIZA, 101Emacs, 516Emigre, 605End of Print, The (Blackwell), 605Endless Forest, The (Tale of Tales), 274–277Engelbart, Douglas, 205Eno, Brian, 581Enron, 268Enzensberger, Hans Magnus, 564EPS, 606Euler’s method, 7, 494Every Icon (Simon), 565Evolved Virtual Creatures (Sims), 295Experiments in Art and Technology (E.A.T.), 633Extend Script, 683Eye magazine, 605Eye Catching (Steinkamp), 386–389 EyesWeb, 554–555EZIO (NIQ), 642

Feingold, Ken, 633Ferro, Pablo, 327Final Cut Pro (FCP), 383, 503Final Scratch, 507Fischinger, Oskar, 413Fisher, Robert, 552 Flake, Gary William, 469Flight404.com, 6Flight Simulator, 525Foldes, Peter, 315FontLab, 170Fontographer, 170Fortran, 522Fractal.Invaders (Tarbell), 156–159 Franceschini, Amy, 267Franke, Uli, 260, 271Free Radicals, 413Friendster, 617Fourier, Jean-Baptiste-Joseph, 584Fourier transform, 585, 588, 590Futurist, 279, 579

Gabo, Nam, 633Galloway, Alexander R., 563Game of Life, 461, 463, 465–466, 468, 475Gardner, Martin, 461, 463Garton, Brad, 581 Gerhardt, Joseph, 391–392Gestalt psychology, 584

Reas_09_519-710.indd Sec6:706Reas_09_519-710.indd Sec6:706 5/16/07 12:33:54 PM5/16/07 12:33:54 PM

Page 19: Processing: a programming handbook for visual designers and

707 Index

GIF, 95–96, 98–99, 421, 700–701Girroir, Jonathan, 506–509Google, 568, 617GPS (Global positioning system), 619, 621Graffiti, 223GRASS, 681Groeneveld, Dirk, 333GNU Image Manipulation Program (GIMP), 95, 347, 355, 607–608 GNU Public License (GPL), 271Gnutella, 566, 571GPU (graphics processing unit), 536–537Graphomat Z64 (Zuse), 603 Greenwold, Simon, 525Greie, Antye (AGF), 503–504Grzinic, Marina, 563GUI (Graphical user interface), 435–436, 448, 450, 499, 604, 634, 679–680, 683, 685, 700Gutenberg, Johannes, 111Gutenberg archive, 433Guttmann, Newmann, 580Gysin, Andreas, 373

Hall, Grady, 379Handel, George Frideric, 581Hansen, Mark, 515–516, 634Harmon, Leon, 604Harvard University, xxiHarvey, Auriea, 275Hewlett-Packard (HP), 604, 610Hawkinson, Tim, 633Hawtin, Richie, 507Hébert, Jean-Pierre, 217, 606Hektor (Lehni, Franke), 260, 270–273Henry, John, 507Henry, Pierre, 580Hiller, Lejaren , 581Hoefler, Jonathan, 112Hodgin, Robert, 6, 692Hokusai, 612Hongik University, 5Hong, Leon, 5, 375Hooke’s law, 263, 487Howard Wise gallery, 603HTML (HyperText Markup Language), 9–11, 93, 268, 427, 549, 564–565, 568–569, 621, 624, 665–666, 684HTTP (Hypertext Transfer Protocol), 567–569, 623

Huber, Daniel, 552Huff, Kenneth A., 606Hypermedia Image Processing Reference (HIPR), 552HyperTalk, 522

IANA, 569IBM, 315, 537, 580, 585, 604, 620, 702IC (integrated circuit), 639, 647I–Cube X (Infusion Systems), 642IEEE 1394 camera, 556If/Then (Feingold), 633Igarashi, Takeo, 538Igoe, Tom, 635, 648 Ikarus M, 170Incredibles, The, 315Internet Explorer, 565Internet Protocol (IP), 566–567, 569, 589, 645 Impressionist, 279Inaudible Cities: Part One (Semiconductor), 392InDesign, 683Infrared, 553, 621Inge, Leif, 581Inkscape, 77, 607–608Installation (Greenwold), 526Institute of Contemporary Arts (ICA), 101, 522Intel Integrated Performance Primitives (IPP), 512, 555Interaction Design Institute Ivrea (IDII), xxi, 634i|o 360°, 565I/O/D 4 (“The Webstalker”), 566IRCAM, 554, 581, 592Ishii, Hiroshi, 634Ishizaki, Suguru, 327ISO 216 standard, 611Iwai, Toshio, 512, 549

James, Richard (Aphex Twin), 582 Jarman, Ruth, 391–392Java, 7, 9–11, 146, 161–162, 263–264, 271, 499, 521–523, 528, 555, 564– 565, 571, 574, 592, 622, 625– 626, 642, 663, 673, 677, 679–683, 686–690, 699–700Java 2 Micro Edition (J2ME), 625Java applet, 9–11, 264, 521, 656, 657, 675, 699Java Archive (JAR), 10–11, 700Java Core API, 271

JavaScript, 268, 271, 522, 624, 680, 681, 683Java Virtual Machine (JVM), 680Jeremijenko, Natalie, 548Jevbratt, Lisa, 566 jMax, 592Jodi, 563–566 Jones, Crispin, 634Jones, Ronald, 275Jonzun Crew, 508JPEG, 95–96, 162, 421, 606, 611, 620, 701JSyn (Java Synthesis), 592Julesz, Bela, 603

Kay, Alan, 3Kim, Tai-kyung, 5Kimura, Mari, 582King’s Quest, 525Klee, Paul, 217Knowlton, Kenneth C., 315, 604Krueger, Myron, 255, 512, 547Kusaite, Lina, 275Kuwakubo, Ryota, 634

La Barbara, Joan, 511Langton, Chris, 469, 471Putto8 2.2.2.2 (Rees), 524, 526LaserWriter, 111, 604Lee, Soo-jeong, 5Led Zeppelin, 161Legible City, The (Shaw, Groeneveld), 333Lehni, Jürg, 260, 271–273Leibniz, Gottfried Wilhelm, 61Letterscapes (Cho), 327LettError, 111, 168–170, 605Levin, Golan, 259, 333, 511–512, 547, 617–618Lewis, George, 582LeWitt, Sol, 217Li, Francis, 617Lia, 316, 496Lialina, Olia, 563–564Licko, Zuzana, 112, 605Lieberman, Zachary, 413, 512–512, 547Lifestreams, 425–426Limewire, 571Lingo, 522–523, 555, 565, 683, 686–687, 689, 691Linklater, Richard, 383Linotype, 111Linux, 4, 9–11, 508, 521, 568–569, 625, 645, 649

Reas_09_519-710.indd Sec6:707Reas_09_519-710.indd Sec6:707 5/16/07 12:33:54 PM5/16/07 12:33:54 PM

Page 20: Processing: a programming handbook for visual designers and

708 Index

Listening Post (Rubin, Hansen), 514–517LISP, 101LiveScript, 683Local area network (LAN), 568–569Logo, xxiii, 2, 217, 522, 681Lovink, Geert, 564Lozano-Hemmer, Rafael, 546, 548 Lucent Technologies, 515Lucier, Alvin, 590Luening, Otto, 580Lüsebrink, Dirk, 549Lye, Len, 413

Machine Art exhibition, 291, 633Machine Perception Laboratories, 549MacMurtrie, Chico, 549 Macromedia Director, 166, 387–388, 554–555, 642, 683, 686Maeda, John, xix, xxiii, xxiv, 3, 5, 158, 333, 564, 606, 682Malka, Ariel, 372Makela, P. Scott, 605Mandelbrot, Benoit, 153Manovich, Lev, 565Marble Madness, 525Marconi, Guglielmo, 579Marey, Étienne-Jules, 295Mark of the Unicorn Digital Performer, 591Markov chain, 581Marx, Karl, 267–268Massachusetts Institute of Technology (MIT), xix, xxiii, xxiv, 327, 634, 680, 682, 693, 695Masterman, Margaret, 101Mathews, Max, 580, 586, 591, 683MATLAB, 522Max/MSP/Jitter, 2, 503–504, 515–517, 522, 554–555, 571, 580, 592, 642, 683–685Maya Embedded Language (MEL), 680, 683Maywa Denki, 634McCarthy, John, 101McCartney, James, 592McCay, Winsor, 315McLaren, Norman, 413Medusa, 387MEL, 680, 683Mendel, Lucy, 507Messa di Voce (Tmema et al.), 510–513, 547

Metrowerks Codewarrior, 512Microsoft, 4, 111, 169, 436, 508, 525, 537, 585, 702Microsoft Direct3D, 537Microsoft Visual Basic, 436Microsoft Windows, 9, 11, 264, 367, 421, 435–436, 511, 521, 568, 625, 645, 649, 665–666, 685MIDI (Musical Instrument Digital Interface) 162, 554, 588–589, 591–592, 618, 621, 623, 642, 645, 683, 685Mignonneau, Laurent, 549MIME, 623Mims, Forest M., III, 648Mini-Epoch Series, The (Semiconductor), 390–393Mini Movies (AGF+SUE.C), 500, 502–505Minitasking (Schoenerwissen/ OfCD), 562, 566Minsky, Marvin, 547MIT Media Laboratory, xxiii, 327, 634, 680, 682, 702MixViews, 591MP3, 162, 421, 585, 621, 623MPEG–7, 549Mobile Processing, 521, 622–626, 683Mohr, Manfred, 217, 602, 606Möller, Christian, 549Moore, F. Richard, 592 Mophun, 625Morisawa, 605Motion Theory, 378–381MTV, 384[murmur], 618Museum of Modern Art, The (MOMA), 291, 633MUSIC, 580, 591Musique concrète, 580–581Muybridge, Eadweard, 295, 373 Myron, 555MySQL, 267–268Myst, 525

Nakamura, Yugo, 565Nake, Frieder, 217, 603Napier, Mark, 566Napster, 507, 571Nees, Georg, 217, 603Nelson, Ted, 3“net.art”, 563–564net.art (Baumgärtel), 564net.art 2.0 (Baumgärtel), 564

NetBeans, 625Netscape Navigator, 565, 683Newton, Isaac, 477, 488New York University (NYU), 6, 634New York Times, The, 150Ngan, William, 497Nimoy, Josh, 512Noll, A. Michael , 217, 603Nokia, 517, 618–619, 625Nmap, 569NSA (National Security Agency), 268NTNTNT (Cal Arts), 564NTSC, 367NTT DoCoMo’s i–Mode, 624 Nuendo, Steinberg, 591null, 40, 701NURBS (Non-uniform Rational B-splines), 526nVidia, 537Nyquist theorem, 585

OBJ, 529–531Objectivity Engine, The (Paterson), 164–167Oliveros, Pauline, 582Olsson, Krister, 589Once-Upon-A-Forest (Davis), 564On, Josh, 267–268oN-Line System (NLS), 205OpenCV, 512, 555OpenGL, 512, 520, 528, 531, 537, 554, 684Open source, 4, 268, 271, 512, 521, 555, 591, 625–626, 640, 684OpenType, 111, 169Oracle database, 264OSC (Open Sound Control), 516–517, 571, 589oscP5 (Schlegel), 571Osmose (Davies), 526O’Sullivan, Dan, 635, 648 Oswald, John, 581Owens, Matt, 565

Pad, 435Paik, Nam June, 633 PAL, 367Palm Pilot, 223, 625Palm OS, 625Panasonic, 625Papert, Seymour, 2, 217Parallax, 640Parallel Development, 516Pascal, 522

Reas_09_519-710.indd Sec6:708Reas_09_519-710.indd Sec6:708 5/16/07 12:33:54 PM5/16/07 12:33:54 PM

Page 21: Processing: a programming handbook for visual designers and

709 Index

Paterson, James, 165–166, 316, 565, 606Paul, Les, 580PBASIC, 642, 681PC, 10, 227, 388, 625, 665, 682PCB (printed circuit board), 639, 640 PCM (pulse–code modulation), 585–586, 699, 702PDF, 520, 606–608, 682Pelletier, Jean-Marc, 554Penny, Simon, 549Perl, 146, 515–517, 522–523, 565, 571, 681, 684Perlin, Ken, 130Personal area network (PAN), 621–622Petzold, Charles, 648Phidgets, 642Philips, 634 PHP, 267–268, 522–523, 565, 682, 684PHPMyAdmin, 268Physical Computing (O’Sullivan, Igoe), 648Piano Phases (Reich), 293PIC (Microchip), 272, 640PIC Assembler, 271–272PIC BASIC, 681Pickard, Galen, 507Pickering, Will, 516Pixar, 315Pixillation (Schwartz), 315PNG (Portable Network Graphics), 95–96, 98–99, 606, 622, 701Pocket PC, 625PoemPoints, 617Pong, 256, 590, 618PortAudio, 512PostScript, 111, 143, 169–170, 522, 604–605, 681Poynor, Rick, 605Practical Electronics for Inventors (Scherz), 648Practice of Programming,The (Kernighan, Pike), 252Praystation (Davis), 564 Public Enemy, 581Puckette, Miller, 2, 592, 684Pulse–code modulation (PCM), 585–586, 699, 702Pure Data (Pd), 592, 684–685Python, 146, 170, 517, 522–523, 681–682, 684

Q*bert, 525Quartz Composer, 684Qualcomm, 625Quest3D, 275–276

R, 515, 517Raby, Fiona, 634Radial, 503–504RAM, 701RandomFont Beowolf (LettError), 111, 168–170, 605Rauschenberg, Robert, 606Ray Gun, 605 Razorfish, 565RCA Mark II Sound Synthesizer, 580Readme!, 563Real-Time Cmix, 592 Rees, Michael, 526Reeves, Alec 585Reich, Steve, 293Reichardt, Jasia, 522Reiniger, Lotte, 315RenderMan, 315R.E.M. “Animal” (Motion Theory), 378–381ResEdit, 170Resnick, Mitchel, 471, 680Reynolds, Craig, 295, 473, 497Rhino, 271, 537Rich, Kate, 548Riley, Bridget, 151Ringtail Studios, 275Risset, Jean-Claude, 581RoboFog, 170Rokeby, David, 548, 554 Rotoshop, 383–384, 413Royal Academy of Arts, 169Royal College of Art, 634Rozin, Danny, 549RS-232, 639, 554, 640, 645Rubin, Ben, 515, 634Ruby, 681, 684Ruby on Rails, 684Runge-Kutta method 7, 494Russolo, Luigi, 579

Sabiston, Bob, 383–384, 413Saito, Tatsuya, 198, 529, 568Samyn, Michaël, 275Sauter, Joachim, 549 Schaeffer, Pierre, 580 Scheme, 522Scherz, Paul, 648Schiele, Egon, 217

Schlegel, Andreas, 498, 571Schmidt, Karsten (a k a toxi), 4, 518Schoenerwissen/OfCD, 562Schöffer, Nicolas, 633 Schumacher, Michael, 582Schwartz, Lillian, 315Scientific American, 461, 463Scratch, 680Screen Series (Snibbe), 549 Scriptographer (Lehni, Franke), 270–273, 683Seawright, James, 633 sed, 684Semiconductor, 390–393, 646Sessions, Roger 580Sester, Marie, 549Shannon, Claude, 669Shape of Song (Wattenberg), 160–163 Shaw, Jeffrey, 333Shiffman, Daniel, 6Shockwave Flash (SWF), 158, 565Short Messaging Service (SMS), 617, 619, 621SHRDLU, 101sh/tcsh, 515, 684Shulgin, Alexi, 563–564Silicon Graphics, 529, 537Simon, John F. Jr., 413, 565SimpleTEXT, 618Sims, Karl, 295Sinclair Spectrum, 264Singer, Eric, 554Sketchpad, 217SketchUp, 538Slacker, 383Slimbach, Robert, 112Smalltalk, 685Smith, Laura, 275Snake, 618Snibbe, Scott, 413, 549Social Mobiles (SoMo), 634 Sodaconstructor (Burton), 262–265, 413, 499Soda Creative Ltd., 263–264SoftVNS, 554Solidworks, 537Sommerer, Christa, 549Sonami, Laetitia, 582 Sonic Inc., 392Sony, 634Sony Ericsson, 625Sorenson, 388Sorting Daemon (Rokeby), 548, 554Sound Films, 392

Reas_09_519-710.indd Sec6:709Reas_09_519-710.indd Sec6:709 5/16/07 12:33:55 PM5/16/07 12:33:55 PM

Page 22: Processing: a programming handbook for visual designers and

710 Index

Spark Fun Electronics, 640SQL (Structured Query Language), 685Srivastava, Muskan, 5Standards and Double Standards (Lozano-Hemmer), 547–548 Star Wars, 315Strausfeld, Lisa, 327Stedelijk Museum, 218Stehura, John, 315STEIM (Studio for Electro- Instrumental Music), 554Steinkamp, Jennifer, 387–388Stipe, Michael, 379–380Stockhausen, Karlheinz, 580Stone, Carl, 582Stop Motion Studies (Crawford), 316Studies in Perception I, (Knowlton, Harmon), 604Substrate (Tarbell), 6, 154, 156–159Sudol, Jeremi, 507Suicide Box, 548, 554Sun Java Wireless Toolkit, 625Sun Microsystems, 521, 537, 625, 682SuperCollider, 571, 592, 685Sutherland, Ivan, 217SVG (Scalable Vector Graphics), 77, 520, 606, 624Symbian, 625Synergenix, 625

Tale of Tales, 274–277Talmud Project (Small), 327Takeluma (Cho), 327Takis, 633Tarbell, Jared, 6, 155–156, 606Tangible Media Group (TMG), 634TARGA, 368, 606, 702Tate Gallery, 218T|C Electronics Powercore, 587tcpdump, 568–569TCP/IP, 554, 569, 589Technics, 507Teddy (Igarashi), 538Telephony (Thompson, Craighead), 618TeleNav, 619Teleo (Making Things), 642Tesla, Nikola, 579Text-to-speech (TTS), 516–517They Rule (On et al.), 266–269Thomson, Jon, 618TIFF, 368, 507, 606, 608, 611, 702

Toy Story, 315Tmema, 510–513Transmission Control Protocol (TCP), 569Tron, 315Truax, Barry, 581TrueType, 111Tsai, Wen–Ying, 633TurboGears, 684Turkle, Sherry, 5Turux (Lia, Dextro), 316Type, Tap, Write (Maeda), 333Tzara, Tristan, 150

Überorgan (Hawkinson), 633Unicode, 432, 665–668University of California Berkeley, 589 Los Angeles (UCLA), xxi, 4, 5, 574 San Diego (UCSD), 549University of Cincinnati (UC), xxiiiUniversity of Genoa, 554UNIX, 227, 435, 517, 569, 645U.S. Army Ballistic Missile Research Laboratories, 603USB, 556, 640–645, 701 User Datagram Protocol (UDP), 554, 569, 589Ussachevsky, Vladimir, 580UTF-8, 665Utterback, Camille, 549

Valicenti, Rick, 605van Blokland, Erik, 169–170van Blokland, Petr, 170VanDerBeek, Stan, 315Vanderlans, Rudy, 605 van Rossum, Just, 169Vaucanson’s Duck, 461Vehicles: Experiments in Synthetic Psychology (Braitenberg), 473Venice Biennale, 391Verschoren, Jan, 275“Video Games and Computer Holding Power” (Turkle), 5Videoplace (Krueger), 547Visual Language Workshop (VLW), 327, 702Visual programming languages (VPL or VL) , 679–680Vitiello, Stephen, 582VLW font format, 112, 702Vogel, Peter, 632, 633Von Ehr, Jim, 170Vonnegut, Kurt, 507

von Neumann, John, 461Vorbis codec, 585Voxel, 527vvvv, 685

Wacom, 383Waking Life, 382–385, 413Walt Disney, 315, 379Wang, Ge, 592Warner Bros. Records, 379Wattenberg, Martin, 161–162, 606 Watz, Marius, 374WAV, 585–586, 621, 623, 702Wayfinder Systems, 619Wegman, William 606Weizenbaum, Joseph, 101Whitney, James, 315Whitney, John, 315Whitney Museum of American Art, 516Wilhelm Imaging Research, 610Wilson, Mark, 152, 217, 604Winograd, Terry, 101Wiring, 521, 633, 640, 641, 645–646, 648–649, 685Wright, Frank Lloyd, 333Wrongbrowser (Jodi), 566 Wolfram, Steven, 461, 463–464, 467, 475Wolfenstein 3D, 525Wong, Andy, 507Wong, Yin Yin, 327

Xenakis, Iannis, 581Xerox Palo Alto Research Center (PARC), 3, 205Xerox, 507xHTML Mobile, 624XML, 421, 427–428, 520, 549, 621, 624, 702

Yamaha Digital Mixing Engine (DME), 516 Yellow Arrow, 618Youngblood, Gene, 388

Ziggurat (font), 112Zooming user interface (ZUI), 435

Reas_09_519-710.indd Sec6:710Reas_09_519-710.indd Sec6:710 5/16/07 12:33:55 PM5/16/07 12:33:55 PM


Recommended