Interactive_Scripting/IM244 A/Rouvelle/Fall ’07

Tuesday 4pm-10pm.

Brown Center 206

Office: Brown Center, room 211, phone (in office).

Office hours: by appointment




Course Description


Interactive Scripting.   It is hoped that this course will provide an entry point into the dynamic world of interactive scripting.  We will define interactivity as a relationship of mutual influence – similar to a conversation – between participants, based in input, processing, output, and feedback.  The participants can be any combination of humans and other systems; mechanical, electric, or other.  Scripting will be understood as the will of the creator/artist/designer within this relationship.  We will study various techniques and tools to make the intention of the script writer clear to the participants and effective within the media it is deployed.  Students will be encouraged to use both electric and non-electronic materials.  While various software and hardware will be presented, the focus of our work will be on developing a clear understanding of what interactive scripting is, and to have each student locate media in which they can engage the concepts presented in such a way as to make their understanding of the materials covered clear. We will develop a discourse to differentiate between one-dimensional, responsive interfaces, and interactive relationships.  A final project will be required of each student that will exemplify that students understanding of the course material. 



 Grades in this course will be based on regular class attendance, the quality of your work, class participation, and progress.  Tardiness and excessive absences will adversely affect your grade.  Participation in discussions and critiques is mandatory.


Projects & Grading:


  You will be asked to do assignments throughout the semester.  Most of the assignments will be presented in class and will be designed to stimulate group conversation. 


                                                            ***We will not have a final exam during finals week***


 Students will be graded by letter, A-F, on all evaluated work.  Work must be completed on time and in full satisfaction of each project goal.  Late work (assignments handed in or posted after the start of in-class critique sessions) will be automatically downgraded by one letter grade.  In addition to in class exercises, you will complete four projects.



Well above the expectations of the course.  Outstanding participation, attendance, and exceptional progress.


Above average assignments and participation. No more than one absence.


Average execution of assignments, participation, and no more than two absences.


Well below average: work, attendance (two absences), projects, and participation.


Unsatisfactory: work, attendance (more than two absences), projects, and participation




Two or more unexcused absences from class may result in failure.  Two unexcused late arrivals, or early departures will be marked as the equivalent of one absence.  Absence from a class is not an excuse for skipping a tutorial, reading assignment, or posting an assignment.  You are fully responsible for completing work.



Readings will be linked from the syllabus.  There is no textbook.  You may utilize the printers in class to download hard copies of web-based content if you prefer.  Critiques and discussion will frequently be initiated from various topics covered in the readings – in other words, please use the concepts you read about in discussion of fellow students’ work.



We will be writing a lot of pseudocode (described below) during class.  Please bring a notebook (paper!) to write your code in.  Please bring to each class a storage media of your choice.  I recommend a jump drive from the bookstore, in lieu of this, an ipod, or server space, or 1-2 CD-R(s) – Recordable Compact Discs (700 MB) will suffice. You’ll probably go through many of them, for both this and other digital classes.  You might also want to bring in a sharpie to label your CD’s.

 It is essential that all work done in class be saved to either your jump drive, CD-R, server space, ipod, etc… at the conclusion of class.  There will be many, many other students using these computers and anything saved on them will be permanently removed shortly after the conclusion of class.


Food and Drink in the Computer Labs:




In MICA's efforts to provide the highest possible quality educational experience for every student, MICA maintains compliance with the requirements of the ADA and Section 504. Any student who has, or suspects he or she may have, a disability and wants to request academic accommodations must contact Dr. Kathryn Smith at the Learning Resource Center, 443 695-1384 or email at immediately.



MICA has developed policies and practices to ensure a healthful environment

and safe approaches to the use of equipment, materials, and processes. It is

the mutual responsibility of faculty and students to review health and

safety standards relevant to each class at the beginning of each semester.

Students should be aware of general fire, health, and safety regulations

posted in each area and course specific polices, practices, and cautions.

Students who have concerns related to health and safety should contact

Quentin Moseley, Environment Health and Safety Coordinator at 410 225 0220

or email at


Electronic Art, Artists, and Projects List


Weekly Schedule




Week 1

Introduction, Resource website, review syllabus, registration matters


Web 2.0 n u


“after the A-bomb, Rowanda, and Auschwitz, metaphor is dead.  We need tools and methods to see the world as it is.”

-John Yau




In general I'm more interested in how whatever you do engages the concepts of interactivity (a relationship of mutual influence), integrated media (media as an ensemble of actions, not bound to any specific discipline or practice), and scripting events, and less concerned about the technology you employ.  You will have time to develop your technical know-how during your time at MICA and elsewhere.  Instead, I would like to use our class as a place to explore ideas related to the concepts mentioned above, and to create models using Pseudocode that help you to come to a deeper understanding and facility of, and with the concepts we will discuss.



Some preliminary terms:



Š       a series of tasks that result in a goal



Š       the act of determining the specific tasks and the instructions to accomplish those tasks that need to be performed to reach the goal. If one can specify a sequence of tasks and related instructions which when followed will result in the completion of the goal then the problem is thought to be computable. Computation is about breaking a process into a series of tasks.  Often these tasks must be performed in a specific sequence, where, for example, the performance of task 2 is predicated on the performance of task1, etc… A series of tasks leading to a specific result is called an Algorithm.





Š       A series of tasks leading to a specific result. Do you hear that echo? Scripts, and programs can be considered Algorithms. Successful Algorithms:

Š       Reach their goal

Š       Are Lean (no redundancy or extraneous steps)

Š       Are designed for the specific system that will run (parse) them in mind

Š       May be Unilateral/one dimensional or Interactive/Adaptive.



Some Scripting Basics



Our Scripting Language over the next few weeks will be Pseudo-Code, aka Structured English.




 Fundamentals (functional pseudocode)




An algorithm is a procedure for solving a problem in terms of the actions to be executed and the order in which those actions are to be executed. An algorithm is merely the sequence of steps taken to solve a problem.


Pseudocode is an artificial and informal language that helps programmers develop algorithms. Pseudocode is a "text-based" detail (algorithmic) design tool.

The rules of Pseudocode are reasonably straightforward. All statements showing "dependency" are to be indented. These include while, do, for, if, switch.



//This is a comment, because it follows the double slashes.  These words are not part of the program, they are

//notes, explanations, and descriptions of what you are trying to accomplish.  Please start all your scripts with comments.

//This script will help me cross the street.  The title of this script is: cross the street.

Walk_sign = 0;           //comments may be used anywhere.  Please use them liberally.  We have just created and initialized

//a variable.

 If Walk_sign = 1 Then   //conditional logic based on the value of the variable.

Action "cross the street"  //output of program based on the value of the variable.

Else                                                                 //if the variable does not = 1 then what follows is executed.

Action "don’t cross the street, continue to read the value of the traffic signal"


//this program computes a student’s grade

total = 0;   //Initialize total to zero

grade counter =  1;  //Initialize grade counter to zero

grade = 0;  //Initialize grade to zero

class average = 0;  //Initialize class average to zero

While grade counter <= 10     //while grade counter is greater than or equal to ten

Prompt “input the next grade”;   //Input the next grade;

Total = Total + grade;   //Add the grade into the total

class average = total/10;

Print class average


//this program calculates an average grade for all students in one class.

total = 0;      //Initialize total to zero

counter = 0;   //Initialize counter to zero

grade = 0;  //Initialize grade to zero

sentinel = 7;  //In programming a sentinel value is a value that terminates a loop.

Prompt “Input the grades”

while counter != sentinel;  //run this loop until the sentinel has been reached

total = total + grade;  //add this grade into the running total

counter = counter + 1;  //add one to the grade counter

input the next grade (possibly the sentinel)

if counter != 0;    //if the counter is not equal to zero

average = total/counter;   //set the average to the total divided by the counter

print average;     //print the average


print 'no grades were entered' ;


//this program calculates how many students passed and failed.

passes = 0;    //initialize passes to zero

failures = 0;  //initialize failures to zero

student = 1;  //initialize student to one

While student <= 10;      //while student counter is less than or equal to ten

input the next exam result

if the student passed

passes = passes + 1;   //add one to passes


failures = failures + 1;  //add one to failures

student = student + 1;   //add one to student counter

print the number of passes;

print the number of failures;

if passes <= 8        //if eight or more students passed

print "your instructor must be an exemplary citizen";




print “let’s just keep this our little secret”




Let’s try some of this out and write a short script together.


The goal of the script is to flip a coin and respond to heads and tails differently.


The steps are:


1.     Define what you want the script to do and place this description in comments at the top of the page.

2.     Create and Initialize your variables.  Feel free to apply comments liberally to remind you of what you are doing.



“Script Like Drawing”





>>>Andre Gregory: “When we stop reacting, interacting with each other what do we have left?”




            Kurt Vonnegut, “Your Guess is as Good as Mine

            Introduction to Programming (short and sweet)

            Write three scripts in your notebook.  Use Input, Actions, Variables (at least one per script), Conditionals and Loops (just one per script, use either (conditionals (while…) and/or iterated (for…), but please use both in different scripts). 




Week 2


Any questions?


Discuss Kurt Vonnegut, “Your Guess is as Good as Mine


Hans Rosling





Some (more) Scripting Basics





  PRINT "Go down another block, it is on the left side of the street. “


  PRINT "Make a right on Maple go down to Cedar and make a right."



                                   PRINT “Cross the Street and go down one more block.”





Let’s create a Program with Functions.


Let’s create a Program with Functions and a variable.


****Can we use conditional logic somewhere?


Let’s create a Program with Functions and an array.



Go outside, observe the environment, and write two scripts with functions and at least TWO variables that will effect where the program will ‘go’.





Now let’s explore a few other ideas:



Except for the miracle of reduction, there is no special reason to build computers with silicon technology.  Building a computer out of any technology requires a large supply of only two kinds of elements: switches and connectors. The switch is a steering element (a hydraulic valve, or the transistor), which can combine multiple signals into a single signal.  Ideally, the switch should be asymmetrical, so that the input signal affects the output signal but not vice versa, and it should have a restoring quality, so that a weak or degraded input signal will not result in a degraded output.  The second element, the connector, is the wire or pipe that carries a signal between switches.  This connecting element must have the ability to branch, so that a single output can feed many inputs.  These are the only two elements necessary to build a computer. Later we will introduce one more element - a register, for storing information – but this can be constructed of the same steering and connecting components. “ 

-Dan Hillis, from “The Pattern on the Stone


scripting for ensembles of actions:


social fiction’s .walk language


Marc Horowitz

National Dinner Tour – Marc Horowitz


Sliv and Dulet


Terunobu Fujimori

Tokyo Plan 2101





1.     Create one Program with Functions.

2.     Create one Program with Functions and a variable.

3.     Create one Program with Functions and an array.




Week 3




Procedural programming


It’s what we’ve been doing.  Procedural programming involves viewing a computer program as a sequential list of computational steps (or procedures: an algorithm) to be carried out. In procedural programming, the list of procedures can be further broken down into subroutines and functions.


Variable Clarification


In programmer-speak, a “literal” is any value declared literally. Good examples would be string literals, array literals and boolean literals - the literal is the part after the “=” assignment operator:


From now on, please observe the following naming convention when using variables in your pseudocode.


// String literal
var my_string = "2468 This is a string";
// Array literal
var my_array = ['element1', 'element2', 'elephant'];
// Boolean literal
var my_boolean = true;




Any questions?


Discuss Kurt Vonnegut, “Your Guess is as Good as Mine


Hans Rosling


60 minutes: Get me the Geeks!


Chris Oakley The Catalogue



Media as an ensemble of actions

Alternative/Augmented Reality Games, from the beginning:

Are these not games? 



o       DoEat


in class exercise/homework assignment:

how to have a psycho-kinetic party – jack houck

Please read this article, and create a script, complete with variables, conditional logic, loops and functions, that a person could interpret to run a successful PK party.



Week 4


I will introduce a new programming concept,  and give you an in class assignment. While you are working on that assignment sam and I will visit with you to answer questions and look at your homework.



But first, a brief presentation and discussion:


Aram Bartholl

Multimedia lab

Usman Haque

Fiona Templeton, You-The City

How do gestures become interactive?



The artist does his thinking in the very qualitative media he works in, and the terms lie so close to the object that they merge directly into it.  - John Dewey




Surface computing beyond Microsoft surface and Jeff Han’s multitouch screen




Does the phrase Technological Overlay mean anything to you?


Jacob Bekenstein and the Bekenstein Bound.




The Web is a surface.

The Retina is a surface.

The library is a surface.

Microsoft surface is a surface.

Micorsoft is a surface.

The beach is a surface.


Experience may be the Area of the surfaces with which we are currently interacting.


The network is the computer.


Networking an array of surfaces allows the computer to produce more accurate, and useful models.


ARGs and Street Games integrate many surfaces.



To Review:




Object Oriented Programming, Pt. 1



Š       The term Object, that gives OOP its name, refers to a conceptual object that represents an item in our program or system. This could be anything from an online form or a computer file, to a real world object such as a car.

Š       This representation consists of attributes - the characteristics of our object; and methods - a set of functions and calculations that are either performed to modify the object itself, or are involved in some external effect.

Š       The term Class represents the definition (or classification - class) of our object.

Š       For example, if we were to write a class called car, we could create any number of instances of that class - say Porsche, Ferrari and Jaguar. Each of these instances is an Object. This illustrates that a class is effectively a set of objects that all share common attributes.


Extend the class via (sub)class, using comments, list the full attributes of each (sub)class




There are a number of relationships that can be used when interaction is needed between objects. Today we will learn about and use:


Š       Inheritance


apple "is a" fruit
orange "is a" fruit
banana "is a" fruit
So, Fruit is the class, and the instances of the class are: apple, orange, banana.  Objects are instances of a class.
Here it is in pseudocode:
class Fruit
{     //note the use of brackets, each class and subclass should be encapsulated within curly brackets
    Ripened ovary or ovaries of a seed-bearing plant, together with accessory parts.
(sub)class apple extends Fruit
    A deciduous Eurasian tree (Malus pumila) having alternate simple leaves and white or pink flowers.
    The firm, edible, usually rounded fruit of this tree.
(sub)class Orange extends Fruit
    Any of several southeast Asian evergreen trees of the genus Citrus, widely cultivated in warm regions and having fragrant white flowers and round fruit with a yellowish or reddish rind and a sectioned, pulpy interior, especially C. sinensis, the sweet orange, and C. aurantium, the Seville or sour orange.
    The fruit of any of these trees, having a sweetish, acidic juice.
(sub)class Banana extends Fruit
    Any of several treelike Asian herbs of the genus Musa, especially M. acuminata, having a terminal crown of large, entire leaves and a hanging cluster of fruits.
    The elongated, edible fruit of these plants, having a thick yellowish to reddish skin and white, aromatic, seedless pulp.            



o      In this example the three (sub)classes: apple, orange, and banana have inherited attributes from the Fruit class.


This means they inherit Fruits attributes like so:

(sub)class Apple is a Fruit
    Ripened ovary or ovaries of a seed-bearing plant, together with accessory parts
    A deciduous Eurasian tree (Malus pumila) having alternate simple leaves and white or pink flowers.
    The firm, edible, usually rounded fruit of this tree.    
(sub)class Orange is a Fruit
    Ripened ovary or ovaries of a seed-bearing plant, together with accessory parts
    Any of several southeast Asian evergreen trees of the genus Citrus, widely cultivated in warm regions and having fragrant white flowers and round fruit with a yellowish or reddish rind and a sectioned, pulpy interior, especially C. sinensis, the sweet orange, and C. aurantium, the Seville or sour orange.
    The fruit of any of these trees, having a sweetish, acidic juice.
(sub)class Banana is a Fruit
    Ripened ovary or ovaries of a seed-bearing plant, together with accessory parts
    Any of several treelike Asian herbs of the genus Musa, especially M. acuminata, having a terminal crown of large, entire leaves and a hanging cluster of fruits.
    The elongated, edible fruit of these plants, having a thick yellowish to reddish skin and white, aromatic, seedless pulp.

o      However, as the parent (super) class, Fruit stays exactly the same:

    Ripened ovary or ovaries of a seed-bearing plant, together with accessory parts


***the (sub)classes do not inherit attributes from each other



Another Example:


Class Cat



    eyes = 2

    legs = 4

    diet = ‘carnivore’



(sub)class Lion //extends Cat



     mane = true

     origin =Africa



Now we will instantiate/construct an object from the above class.  Remember that an object is an instance of a class:


var simba = new Lion()  //This is an object

var simba_diet =

var simba_origin = simba.origin

var simba_mane = simba.mane

var simba_eyes = simba.eyes

var simba_legs = simba.legs


Now you try.  Please create two classes, and two objects for each class.  Sam and I will work with you to do this.



Using objects, write a script about zombies.  In order to do this you will use all of the concepts we have worked with thus far:  variables, loops, conditions, functions, and, in addition classes/objects.


Let’s create a Person class, with Zombie as a subclass, so:


Class Person






subClass Zombie








Within your script, when certain conditions are met, simply construct a new person or zombie like so:


Var_johanna = new Person()

Var_wotan = new Zombie()










Script a ‘street game’.


  1. Write the narrative/logic of the game in standard English.
    1. Its OK to take a common game and script it for the street, a la ‘PacManhattan’.
  2. Convert the ‘standard’ English of the game to Pseudocode - using the standard English as comments.
  3. Use variables, loops, conditions, functions, classes and objects.
  4. Consider incorporating the online and offline worlds, ie., cell phones, twitter, semacode, hidden messages, etc.
  5. The game is due next week.  Please make the game playable.  We will select a few games and play them next week and the week after.



Week 5


Your Games, and questions.


Object Oriented Programming pt. 2 (states, behaviors, methods, constructors, composition)

o      Identifying the state and behavior for real-world objects is a great way to begin thinking in terms of object-oriented programming.

o      "What possible states can this object be in?" and

o      "What possible behavior can this object perform?"

o      Make sure to write down your observations. As you do, you'll notice that real-world objects vary in complexity;

1.     Your desktop lamp may have only two possible states (on and off) and two possible behaviors (turn on, turn off),

2.     Your desktop radio might have additional states (on, off, current volume, current station) and behavior (turn on, turn off, increase volume, decrease volume, seek, scan, and tune).

3.     You may also notice that some objects, in turn, will also contain other objects.

4.     These real-world observations all translate into the world of object-oriented programming.

o      An object stores its state in fields (variables) and exposes its behavior through methods (functions in some programming languages).

1.     Methods operate on an object's internal state and serve as the primary mechanism for object-to-object communication.

2.     Hiding internal state and requiring all interaction to be performed through an object's methods is known as data encapsulation — a fundamental principle of object-oriented programming.

Bundling code into individual software objects provides a number of benefits, including:

  1. Modularity: The source code for an object can be written and maintained independently of the source code for other objects. Once created, an object can be easily passed around inside the system.
  2. Information-hiding: By interacting only with an object's methods, the details of its internal implementation remain hidden from the outside world.
  3. Code re-use: If an object already exists (perhaps written by another software developer), you can use that object in your program. This allows specialists to implement/test/debug complex, task-specific objects, which you can then trust to run in your own code.
  4. Pluggability and debugging ease: If a particular object turns out to be problematic, you can simply remove it from your application and plug in a different object as its replacement. This is analogous to fixing mechanical problems in the real world. If a bolt breaks, you replace it, not the entire machine.


The following Bicycle class is one possible implementation of a bicycle:

class Bicycle {
       int cadence = 0;      //State
       int speed = 0;         //State               
       int gear = 1;            //State
       void changeCadence(int newValue) {             //Method
            cadence = newValue;
       void changeGear(int newValue) {                   //Method               
            gear = newValue;
       void speedUp(int increment) {                        //Method
            speed = speed + increment;   
       void applyBrakes(int decrement) {                  //Method
            speed = speed - decrement;
       void printStates() {                                          //Method
            System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear);

Here's a BicycleDemo class that creates two separate Bicycle objects and invokes their methods:

class BicycleDemo {
     public static void main(String[] args) {
          // Create two different Bicycle objects
          Bicycle bike1 = new Bicycle();
          Bicycle bike2 = new Bicycle();
          // Invoke methods on those objects

The output of this test prints the ending pedal cadence, speed, and gear for the two bicycles:

cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3

Class exercise:

1.  Extend the Bicycle class above with a subclass that includes new states and methods.

2.  Create a new class that uses the states and methods from the subclass you created.

3.  Use the above examples as a guide.



Return of the Zombie:


Create three new classes that include states and methods.


Create new classes.


Your classes will become part of a script that will be run on campus and will involve the interpreter behaving like whatever classes you create, so please bear that in mind.


Erwin Wurm ‘one minute sculptures’ (ex: ‘take everything you like and pose for one minute, enjoy the silence: , 22seconds of wurm: script that produces a one minute sculpture under certain conditions.


We will visit with you as you do this.



Assignment due next week is to create a script that includes objects that you created today (see below for more information).  Feel free to build special things for your scripts.


These scripts will be interpreted on our campus, so spend some time outside observing where you’d like your script to be run. 


Include getting to that spot as part of your script, so, you would have a function that would include an action that would get someone to, say, café Doris, once there, the interpreter would respond to specific variables and specific objects with specific methods would be spawned. 


Last thing to include: some variable that is triggered by interaction with the public.


***Next week I will break you into clusters, and you will adapt your scripts so that information can be shared between the scripts as they run simultaneously.  Information may be shared by any action – speaking, texting, calling, leaving a specific mark in a specific place that would be relevant to your script (making a small pile of plastic utensils, for example).


Spend a few hours on this, return after dinner and work on the script here, and sam, dan, and I will help you.


“People are better at doing than understanding.”


Interactive scripting is an intersection of doing and understanding.  Interactive scripts may modify themselves as they are interpreted so that the interpreters are doing while understanding.


Black Swans, Cosmic Dust could form Inorganic Life, Ant: Light Pollution, Focused Inattention/STU


Example Sketch


//this program causes interpreters to go to specific locations and interact with the environment.



Main Function

Go somewhere

Go somewhere else

End main


Function Go Somewhere

If this then

               Go to café Doris

               Go there

If that then

               Go Lobby Bunting

               Go There


End function


Function There

Check variables

If certain conditions are met then

Interact with someone to get more information

Create new object that uses the information you got from the interaction

Do whatever it is your object does

Go set variable



Function go somewhere else

Depending on information received while waiting go to another location

If end, then

Go end


Go Somewhere


End function



Function set variable

Leave a mark based on your interaction/object experience

Send a message that mark has been left

Wait for confirmation/information

Go somewhere else


End function


Function end

Return to class


End function


Class YourClassHere









Week 6


Sam, Dan and I will review your scripts and answer your questions.


We will then break you into clusters of 3-4 scripters, and you will work collectively for the rest of class and the rest of the week to develop an ensemble of scripts that will run simultaneously and share variables.


The method(s) for sharing variables is up to you, but some sort of communication among interpreters (those ‘running’ the scripts) is necessary. 


The communication may be:

1.     rapid (phone/sms),

2.     moderate (leaving messages somewhere on campus to be found), or

3.     slow (snail mail, ???). 


Next week we will run some of the scripts and document them, so please be sure to exchange contact information with your fellow scripters before you leave today.



Complete your group scripts.  Please organize the scripts into one folder and email them to both sam:, and james: and turn that folder in next week.


Be prepared to run your scripts, so please do any necessary prep work prior to next class – and please rehearse your script prior to next week. 


Week 8


Running of your scripts



Week 9





Intro to Javascript and Aptana.


Over the remaining weeks we will work with Javascript.  It is important that your final projects incorporate online (javascript and ustream, stickam, semacode) with offline events (your recent pseudocode projects).  We’ll talk more about this as we go.




JavaScript Tutorials


How to use these movies:


Listen carefully.

Write out each script in aptana, remembering that html and javascript files have different extensions.

If, after listening and writing, you have a question raise your hand and one of us will come over and help you.

If, after listening and writing, you feel you understand the lesson, create two variations on the exercise.  Save your variations as you will be asked to turn them in.


Our goal is to get through chapters 3-4 today, and I will ask you to begin working on chapter 5 for homework.  We will work on chapters 6-8 next time, and complete the exercises in two weeks.


We will begin working on AJAX after Thanksgiving.


You will be asked to create a final project that incorporates online and offline actions.


Deep, Searchable, Javascript Reference


Assignment: Begin working on Chapter 5



Week 10

Environmental Tuesday/interactive scripting style….


Usman Haque Environmental XML


Derren Brown Gift


Derren Brown Zombie Arcade Game


Keith Olbermann Special Comment, Nov. 5, 2007, re:  Daneil Levin/Waterboarding

1.     Ultimately, Mr. Bush, the real question isn't who approved the waterboarding of this fiend Khalid Sheikh Mohammed and two others. It is: Why were they waterboarded? Study after study, for generation after generation, sir, has confirmed that torture gets people to talk, torture gets people to plead, torture gets people to break, but torture does not get them to tell the truth. Of course, Mr. Bush, this isn't a problem, is it, if you don't care if the terrorist plots they tell you about are the truth or just something to stop the tormentors from drowning them. If, say, a President simply needed a constant supply of terrorist threats to keep the country scared, if, say, he needed phony plots to play hero during and to boast about interrupting and he used to distract people from the threat he did not interrupt, if, say, he realized that even terrorized people still need good ghost stories before they will let a President pillage the Constitution. Well, heck, Mr. Bush, who better to dream them up for you than an actual terrorist? He'll tell you everything he ever fantasized doing in his most horrific of day dreams. His equivalent of the day you flew onto the deck of the Lincoln to explain you'd won in Iraq. Now, if that's what this is all about, you tortured not because you're stupid and you think that torture produces confession, but that you tortured because you're smart enough to know it produces really authentic-sounding fiction. Well, then, you're going to need all the lawyers you can find because that crime wouldn't just mean impeachment, would it, sir? That crime would mean George W. Bush is going to prison. 

2.     Thus, the master tumblers turn and the lock yields and the hidden explanations can all be perceived in their exact proportions and in their exact progressions. Daniel Levin's eminently practical, eminently logical, eminently patriotic way of testing the legality of waterboarding had to vanish, and him with it. Thus Alberto Gonzales has to use that brain that sounds like an old car trying to start on a freezing morning to undo eight centuries of the forward march of law and government. Thus Dick Cheney has to ridiculously assert that confirming we do or do not use any particular interrogation technique would somehow help the terrorists. Thus Michael Mukasey on the eve of the vote that will make him the high priest of the law of this land cannot and must not answer a question, nor even hint that he's thought about a question which merely concerns the theoretical definition of waterboarding as torture. Because, Mr. Bush, in the seven years of your nightmare presidency, this whole string of events has been transformed. From its beginning as the most neglectful protection ever of the lives and the safety of the American people into the most efficient and cynical exploitation of tragedy for political gain in this country's history. And then to the giddying prospect that maybe you could do what the military fanatics did in Japan in the 1930s and remake a nation into a fascist state so efficient and so self-sustaining that the fascism itself would be nearly invisible. But at last, this frightful plan is ending with an unexpected crash. The shocking reality that no matter how thoroughly you might try to extinguish them, Mr. Bush, how thoroughly you might try to brand disagreement as disloyalty, Mr. Bush, there are still people like Daniel Levin who believe in the United States of America as true freedom where we are better not because of schemes and wars, but because of dreams and morals. And ultimately, sir, these men, these patriots will defeat you, and they will return this country to its righteous standards and to its rightful owners, the people. Good night and good luck.


Please continue with the Javascript Tutorials – paying close attention to chapter 7, and chapter 12 exercise 4.  I have uploaded image files when necessary.

Our goal is to have you create your javascript projects that use the skills contained in the exercises.  When you get an idea for a modification of an exercise please do it – and save it so that we can see what you are working on.

Assignment:  complete all of the uploaded chapters and create your own version of the form exercise (chapter 7), and the slide show with captions (chapter 12, ex. 4).  Remember that we want to revisit our cross-media scripts and devise a way to incorporate the web (via javascript) with the offline actions you developed during the first part of the semester.

Work at a comfortable pace.


Week 11


Today we will focus on javascript.  Our goal is to have all of you comfortable with basic javascripting by the end of next week’s session.  If you have completed lesson 5 of the video tutorials (which you should have), then >>


Please read and do this, then do


Exercise 1

Exercise 2

Javascript Project


Please complete these exercises on your own, think of them as a quiz.  You may use online resources to complete them, but I would like you to complete them individually.


When you have completed Exercises 1 and 2 call Sam or I over so that we can check your work.  Please be sure to save your work and include your name in the title of the .html files.


The Javascript Project (which is interesting) should take a few hours to complete – you can start it during class AFTER you have shown Sam and/or I your completed exercises.  The Javascript Project is due by the end of next week’s class, please complete this project, as the exercises, on your own.


Week 12

Please complete the in class assignments given last week (see above), and turn them in before you leave.


A taste of what’s to come>>


Languages of the World

6,000 languages: an embattled heritage





Š       Multilingualism is the most accurate reflection of multiculturalism. The destruction of the first will inevitably lead to the loss of the second. Imposing a language without any links to a people’s culture and way of life stifles the expression of their collective genius. A language is not only the main instrument of human communication. It also expresses the world vision of those who speak it, their imagination and their ways of using knowledge.


What about the birth of languages???