chapter 5


Yellow Cluster Fall 1990   stories about objects


A whole semester of Playground 3.5 was conducted by teachers Leslie Barclay and Dolores Patton  in Yellow Cluster (3rd/4th Grades), from October 1990 through January 1991.   Playground 3.5 builds extensively on the work done last year on Playground 3.0, with particular emphasis on making script writing easier , this year with the addition of the "sentence constructor", a system of popup menus.   30 MacII fx  computers were provided for the duration of the semester, with  5mb of Memory, System 6.05.   Large "two-page' monochrome monitors were used to accommodate opening multiple Playfields and comparing side-by-side scriptors.  New larger "Macdesks"for the two page monitor were also provided so that the computers do not waste valuable desk tops, but rather are installed below the desks, children peer through a window to see the screen.   The computers are connected to a server via ethernet, where children's individual files reside,Playground application was installed locally on each computer.



           White like snow

 Hopping like a kangaroo when I make dots

Laghing like a clown when I use the eraser

Sees an ocean when someone brings it to the ocean

Hearing paper wiggling

Tastes pizza when someone drops the pencil on the pizza      


                                  Candice Obayashi



Reflecting on the experience of third and fourth graders constructing simulations of city processes, teachers and staff spent the summer searching for new projects to match students' abilities, proclivities, and curriculum.   City Building@ curriculum provides exemplary hands-on experience of building structures in an endless process of design and redesign under pressure of different political constituencies.   City Building successfully introduces children to the design process.   Children also get their first taste of the complexity of something as big as the city.   City Building does not show the moving parts of the city: the traffic, the water & power, the communications systems, the flow of people and goods.   This is what we hoped to add through the use of simulations. But our computer simulations were not large enough and rich enough to support hundreds of cars in simulated L.A. traffic.  The kind of project both children and computer could manage focused on one or two characters doing one or two things. So this year, instead of trying to escalate the curriculum beyond what it, and we can sustain, we picked something in the domain children already understood and were doing well.


A priority became the introduction of fundamentals of computer programming to children typically considered too young.


During the fall semester the children study a single Object.  The Object exercises are part of the City Building curriculum which serves as a warm up to building structures for the city model, a way to get third graders to do scaling, and practice in thinking about characteristics and jobs of things.  Where the city model is a miniature of a big complex thing, the object is a very simple little thing that children will make bigger, big enough to wear as a costume.  As a costume, the object takes on a persona, it can be interviewed, it can become a character in a play.  


ideas for Playground projects reinforcing classroom activities for "Objects" theme:

This year, Playground would take the entire first semester in Yellow Cluster, being introduced in October around the same time as the Object activities began.  A whole set of Playground activities were discussed and designed that would parallel and reinforce concepts.  The children lie down on a big piece of butcher paper and trace the outline of their body.  Then they place the actual object they are studying down on the paper and trace over and over how many of those equal the height, the width, and the depth of their bodies.  In Playground, the children could be working with actual pictures they have drawn or even scanned in photographs of their object, to juxtapose against a scanned in photograph of the child's whole body.  In later activities such as "Object Interviews", poems and stories, children get to know their object.  Each thing an object can do can be dramatized in specific movements which can become animation sequences in Playground.  For example, the water bottle pours, sits, and is filled.   Stories written from the point of view of "being an object" start emerging as the children are turning their object into a costume and wearing it.  These stories could be entered into the computer.    Lastly, we hoped to put different children's objects together in the same playfields where surprising combinations of objects and their behaviors might reveal new stories.  One group of objects might live in a child's backpack and travel around having adventures.  Another group of objects might live in the closets at school and work together to cut paper, glue, draw, and paint.


About half of these project ideas were tried with the children between October and January.  Children drew a picture of their object (in Canvas) which was transferred to Playground and became a player.   A one paragraph story was typed to be visible on the playfield, and the movements of the player programmed to interpret the story.   After each child completed their own playfield, they combined the players in group playfields.


introducing the sentence constructor

The sentence constructor improved spelling problems and agentname selection tremendously at this grade, which it was specifically designed to do.  Observing in this classroom last year, Playground's programmer Scott Wallace saw both children and adults had difficulty remembering and applying agentnames correctly.  For example, they had a terrible time referencing an external player by using an agentname for a characteristic of the other player which was hidden inside the other player.  To address these problems, Scott implemented the "sentence constructor" , delivered in Playground 3.5 for school year '90-'91.  The "sentence constructor" allows children to assemble legal scripting sentences by menu selection.  When a child needs to use an agentname, a menu presents a list of all the names of agents.  The child avoids the temptation to recollect only agent values, such as Players' names.


introducing the constructor with simultaneously executing number agents

Dolores and Leslie made the introduction of the constructor one of the most important curriculum issues for this year, and reworked their projects to provide the least rough transition from one set of constructor menus to the next.   They were intrigued by similarities they saw with "fill in the blank" grammar templates which can be helpful and fun.    From a teaching point of view, Playground 3.5's new sentence constructor proved to be the most awkward thing to teach, and required rethinking many exercises.    This necessitated that the first lessons on the constructor be the simplest and most one to one correspondence to the simplest things you could type in.  The simplest agents to think about dealt with height and width and x and y coordinates.   Using only "Do" (our cat pane), for the number valued agents like Left, Bottom, Width, Height, Heading, students could quickly achieve growing, shrinking and moving.   Teachers had requested "Left" as the word that meant "X" and "Bottom" for "Y".


NUMBER + NUMBER is adding

NUMBER - NUMBER is subtracting

NUMBER * NUMBER is multiplication

NUMBER / NUMBER is division


more exercises about lots of agents at the same time

Two agents doing the same thing, The Left agent and the Bottom agent, got the player moving diagonally.   Children always had difficulty seeing that more than one thing could be happening simultaneously, and this blindness made it difficult to take advantage of this very important design principle in Playground.


To reinforce the idea of two agents working together, teacher Dolores Patton introduced MouseX and MouseY.  She worked with students individually, and this was a great hit.  She later presented a Racers playfield in which the racers using mouse x. Using MouseX required creating a WatchMouse agent for those who cared to observe what was happening.



Simple exercises with single actions soon motivated overwhelming desires for conditionals.  All the children demanded to shrink a player who had gotten too big for the screen, or to return it to the left after it disappeared off screen right.   So this led naturally to using the vocabulary of "notice".  What would the players notice to tell whether they are too tall.  "If I am shorter than 3 then I should be growing, if I am 150 I should reset myself to be small again".


The "Cat" Pane 

Multiple "if" statements in this year's Playground forced abandonment of the pretty Eye, Thumbs-Up, Thumbs-Down icons for Playground's "Notice/Do if true/Do if not true" ("if/then/else").   A cat picture was installed as a joke to encourage teachers to recommend a replacement for the last "Do" at the end of a series of "if/then"'s.   But teachers thought it wouldn't matter what you called it, and decided to leave the cat in because it was humorous and had no connotations for the children.  When conditionals were introduced, some children from last year remembered the thumbs down and wondered where it went, but on the whole we got surprisingly few questions.


the prince who turned into the frog at the swamp.

Continuing to work with the constructor using coordinates and introducing conditionals, teacher Leslie Barclay introduced The Prince who turned into the Frog at the Swamp.   She believed this made more sense out of coordinates, by associating them with a real place, "the Swamp".  The Swamp is one player stretched out tall and thin.  A second Player is the Prince. The Prince moves by adding a number to his Left, over and over.  When he reaches the swamp, he will make the sound of a frog.  The zone of the swamp Mrs. Barclay called "the Red Zone", and it was bounded by 2 important coordinates, one for its left edge and one for its right  edge.  The number for the Left edge is easy to find if we open the swamp scriptor because we can read out the number for the Swamp's left edge.  By calculating, we could add the Swamp's width to its left to get the right edge.  Another approved method was simply to place the Prince where you wanted him, and observe the number for Left in his scriptor, then you move him again and read off the second number.


The Prince and the Swamp playfield introduces the idea of a conditional.   Children had to be walked through how to add an "eyeball" pane to their scriptor.   But the actual script was provided them to simplify the number of things they had to learn. 


Copying and Pasting:

Working script had been placed in the 'Text' agent as a model to be copied and pasted and modified.  So the lesson became one about cutting and pasting, which was one of the fundamentals in the design Playground.  Children were to first create an agent called "sounder", then go back to the Text agent, copy the conditional sentence out of the eyeball pane, move down to Sounder agent, click on the eyeball, and paste the script.  Then they were to use the constructor to complete the thumbs-up instruction.



(is my Left greater than 100) & (is my Left less than 120) 





(is my Left greater than 100) & (is my Left less than 120)

play sound 'frog'


Copying and Pasting the complicated condition proved to be a win, because it was doubtful that children at this point in the year would have understood how to write that or even to construct it.  The constructor required the first choice to be TF & TF, which no one ever could figure out.  However, there were more difficulties with cut and paste than we had anticipated.  Perhaps it is the invariably sticky mice that live in the elementary school classroom, but the number of clicks and moves required to simply get a line of text from one pane to another seemed awkward and difficult.   Unlike working in MacWrite, each of Playground's panes needs two clicks, one to be selected, one to place the cursor.   Selecting a line of text also proved a touchy business requiring more dexterity and patience than third graders can muster.  All in all the business of the mouse as an input device is questionable for young children, and not at all for the reasons it was designed, but rather, because of the wear and tear and misuse in practice.


Coincidentally Unsymmetrical Agents:  'Sounder" and 'Text":

Further assignments required children to apply the same idea of the'Sounder' agent and the 'Text' agent to other agents.  Can you make a player that plays a sound when it is between 150 & 180 pixels wide?  when its Left is between 200 and 230?, changes costume when Bottom is between 150 and 190? However, children got confused by the differences presented by the 'Sounder'  and the 'Text' agents.    They learned that some actions require two "Do's", as they need to change back to whatever you expect them to be, whereas when sound is not there, you don't have to put "silence" back in.  That is hard to understand.  When the playfield was running, it was obvious to see that it was not doing what you naively think it should, but children could not by themselves figure out whether the "two do" or "one do" solution applied.


"very mathy"

Teacher Dolores Patton found it necessary to explain to students that we have made this very "mathy " at the beginning,  but that children will soon become involved with stories.  Students are not to be worried if they do not understand everything, this is a program to experiment with and to try and to test.  Children were admonished to be sure to write things down when it doesn't work as they thought it should, and that these errors would be reported to Dave Mintz and Scott Wallace.


Dave Mintz is concerned that the way Playground is being introduced to children, with heavy reliance on math and coordinates is very difficult for the young children.  Progress is necessarily very slow and it still feels as though children are being rushed.  Coordinates require lots of teaching.  And, coordinates are not in the same domain as stories about characters.  Long and on-going conversations were held with Dolores and Leslie about getting away from so much math and into more stories.  The teachers argued that playfields about characters require using collectors and groups which demand that children have become familiar with the constructor. 


Playground was specifically designed to avoid the necessity of having to refer to things by their coordinate location, with a hefty set of collection functions and even a specific way to point directly at a player on the screen and ever after refer to "that one".   However, we defeated ourselves by making the Players and Groups parts of Playground a little too difficult to use, too many steps.   And, we insisted over and over, that children were required to do their own programming, and to learn "the right way", that is, that would be generally useful rather than a special case solution.  Hence the mechanism for selecting a player directly from the playfield was never ever used.  This would have enormously simplified the Prince/Swamp example.  Specific coordinates were also preferred over the use of a more general function for "WindowWidth " for example.
stories about our objects


Ms. Pickle[1]

A perfectly wonderful little book, quite loved and dog-eared: "What my Pickle Won't Do", inspired an entire semester's worth of creative ideas.   Teachers implemented one Pickle story as a Playfield.  Ms. Pickle is a lot like The Prince and the Swamp in spirit, but uses Playground more fully by defining specific relationships between players rather than just looking for coordinates.  Pickle moves from bottom to top, when it is at the bottom it overlaps Lake Cucumber and grows with sound of drip.  Moving up out of the Lake, it is quiet and stays at the same height.  Overlapping the Sun causes it to shrink.  Children were shown the playfield and asked to tell their version of the story.  They notice that Pickle got smaller in the Sun and larger at the Lake.  When inside of Lake Cucumber it grew and started going up, but when in the Sun it "clicked".  The teacher asked "What is my pickle afraid of?" and this gets the children to think of relationships and reasons:  " He's afraid of sun because he will dehydrate.  When in the lake he gets his water back up and is better. "


Kids all want to know how their teachers made the pickle.  They explain how it was drawn on the Macintosh in Canvas@[2], and that all children will do the same with their own objects.  After drawing at a large scale, teachers and apple staff will shrink it down to one inch tall and put it in Playground for each student.


Students were asked: Who needs to know about who?  The pickle needs to know about sun and lake, in charge of his own shrinking and growing.  How does pickle grow and shrink?  Mrs. Patton changes it to black box and children can see more clearly that it is height and width that are changing.    The Sun makes the clicking sound when Pickle is overlapping it, so the Sun must have to notice Pickle.  Good questions about "pushing" and "pulling" are discussed, regarding who is "in charge", who decides to take action. Looking at Lake Cucumber, extra agents include 'Pucker', 'Puskerpower', 'Water' and 'Sounder'.  'Pucker' asks, "Are there any pickles out there?" by the script that reads: "Every player in others with agent pickle".  'PuckerPower' agent's script is: "The player in the group I call pucker who is nearest to me".  'Water' is the agent that the Pickle looks for.  'Sounder' asks: "Does the player I call puckerpower overlap me?"  Sun has the same agents to look for the Pickle.


Pickle has to look for both Sun and Lake, so 'Sunseekers' and 'Hotspots' agents go together.  'Quenchers' and 'Diviners' go together. 'Sunseekers' is a Group type agent , looking for "every player in Others with agent 'Rays'".  'Hotspots' is a player type agent, looking for "the player in the group I call Sunseeker who is nearest to me".  'Diviners' agent finds 'The player who has 'Water'. 'Quenchers' finds "The one with 'Water' who is nearest.  'Height' agent is the wild one with two conditions.  When does it get smaller?  When near the sun.  The script reads "Does the player I call Hotspots overlap me?" Then do: "my height - 3" the second Notice reads: Does the player I call Quenchers overlap me?" Then Do: "my height + 3".    The speed of the pickle is noticed.  Going slower when over lake or sun, Why?  The children speculate about all of what is going on.  Their observations are good, and they get ideas of their own.


Collections of Groups of Players using the constructor


Many many pages of detailed step by step instruction were created by Yellow Cluster teachers to walk children through using the constructor to create the agents who will allow the players to know about each other.  For each player, there may be an identifying characteristic, a group agent, and a single player agent.  As we have seen, people had trouble with this in Playground version 3.0, which gave rise to the constructor.  Now, getting specific agentnames is easier, and it is a relief not to have to remember any precise wordy wording.   However, it is mind-boggling to review this set of instructions and consider that every one of these individual steps actually needed to be taught. You can appreciate why the teachers insisted upon the first exercises with the constructor to be in a more straightforward domain, like coordinates.


Problems continue in following recommended Playground style for creating the several agents required in different players to set up a relationship between the players.  Again, as described previously, this is, first the user is supposed to write the condition which requires noticing another player, and this will motivate the naming of the internal agent which nicknames the kinds of player(s) we are looking for.  Lastly, were to be written the identifying agents of characteristics.


This year, with the constructor, the user is more than ever forced to work backwards of our recommended style, first creating a characteristic, then the group, then the player, then the condition which uses it.  If the user did not work this way, the constructor could not provide the agentnames of what had not been made.   We should seriously consider turning the constructor inside out so that it could work starting from the condition.  A user should be able to type the name of the nonexistent group "Notice if I overlap food" and the constructor should take this word, open up a scriptor, make a food agent, and ask if it is a group of a player... and so forth, proceeding as a series of nested dialogs to construct all the interconnected agents. .


The 100 dollar bill can't find the cash register




Green like grass,

Black like the dark in my closet.

Sad when it is trapped in the cash register,

Crying like a cloud that has rain.

Flat like a crushed tomato,

Angry when it goes from one person to another,   

Angry like my mom when she’s mad at me and my brother.

Rolling up like a somersault,

Crunching like the first bite of an apple.

Lies down like a lazy girl.

I’m happy as a one hundred dollar bill. 

I say,”YIPPEE!”



               Rebecca Jannol



Rebecca Jannol's story of the 100 dollar bill tries to sympathize with the life of a bill as it passes from "stuffy pocket" to the "prisn" of the cashregister.


Storyteller Rebecca Jannol

One day inside a stuffy pocket a 100 dollar bill was bouncing along tring to hide from the person.The 100 dollar bills name is Dough.he had a sinking feeling in his stomach. the feeling he got was a feeling all 100 dollar bills got when they were going to end up in a du du du DA,THE CASH REGISTER!!!!!!  As they were drawing near the cash register little Dough was getting nervous.  Then the man said,"I will buy that T.V. The person who owned the store said"It is 100 dollars."   "Okay," the man said.  He reached into his pocket and pulled out poor little  Dough. Now Dough thought its all over.Nothing can stop me from staying in prisn  for the rest of my entire lifetime. But little Dough was wrong. The next person who came only for change. By luck he only needed a 100 dollar bill. Slowly Dough was tacken out of the cash register.And Dough was never Put in it again.


Squeezing this fanciful little story down to a minimal staging was necessary before Rebecca Jannol (a third grader) could manage to program it in Playground.  All the emotional content of the story drops away as she simply tries to block out the movement of the dollar bill to the cash register.   Each teacher worked with students in small discussion groups prior to getting on the computer to have them rethink staging issues in terms of the repertoire of movements and effects which Playground provides.    The first requirement was that some kind of Change  should occur to each player when they met or overlapped each other.    Another requirement was that a Player could not originate from no where, but that each significant location a Player moved to or from ought to have another Player both marking it and explaining it.


After the first week, Rebecca was proud to have a good bit of her Playfield working.   Her drawing of her object, a  $100 Bill, had been transferred to Playground by Dave Mintz, who had done so for every student.  She had written her story out in the Storyteller player. For some reason only a fragment of her story appeared visibly on the Playfield, but the part which showed sufficiently explained her scripting intentions, inadvertently assisting in minimizing her intentions.  She had laid out the positions of her Player participants in the scene, and scripted part of them.


“My $100 Bill is going over to the Cash Register. And the Cash Register gets bigger because the money is going into it.  After it gets bigger the $100 Bill goes off the page and then its going to start again.” 


Rebecca didn’t want another player for the Bill to originate from, but to comply with the assignment, had placed a little tiny circle player at the location where it starts again.    The $100 Bill moves across the screen by incrementing the Left agent, and resetting the Left Agent when it is a high number.    Next, Rebecca gave the  $100 Bill the characteristic of "money".  A group agent in Cash Register also called Money looked for players with the characteristic Money, finding the $100 Bill.  The Width agent in the Cash Register incremented itself when “Money overlaps me”.   This was an attempt to mimic the animated image of the Macintosh Trash Can which fills up so splendidly when full.  Although animated graphics are possible in Playground, it proved logistically impossible to provide them to 60 children and the extra scripting required too much of a burden to children.




100 Dollar Bill



Money (Type: true/false)

Money (Type: group)

COMMENT  Finds all of the one hundred dollar bills

ALWAYS:  every player in Others with agent money


Left (Type: number)

IF I NOTICE: (is (my Left) greater than 606)

THEN:   37

OTHERWISE: ((my Left) + 9)

Width (Type: number)

IF I NOTICE:  does the group I call money overlap me

THEN:  ((my Width) + 20)




In the next group discussion, Mrs. Barclay asked Rebecca “What happens to the $100 Bill?” and when Rebecca had no ideas, asked the entire group  “What changes could she make to it, any ideas?”  Greg Levine (third grade) ventures that “it could get black like it was dark inside”.


places of origin

Mrs. Barclay was also not satisfied that the dollar bill had no point of origin over than this little tiny circle, it wasn't right that the bill should appear out of thin air, it must be somewhere before it floats over to the cash register.   After some thought, Rebecca suggested "in a hand".  Mrs. Barclay encouraged her to think deeper about where might the customer carry a bill, certainly not in a hand while walking down a street.   Rebecca seemed unconvinced by this, but after more thought decided perhaps “a pocket”.  It was suggested that grownups carry bills is in a wallet, and that Rebecca must make one to put the bill in.   



difficulties with player and group type agents examined closely


Rebecca now needed to make the  $100 Bill change its Costume to Blackbox, when it has reached the cash register.     Although this task was very clearly defined, symmetrical with Playground’s repertoire, and well understood by both student and teacher, executing it proved to be extraordinarily difficult, and took all the attention of Mrs. Barclay and then two Apple staff assistants over a 45 minute work session. 


This work session is an example of what went wrong with Group- and Player-Valued Agents.  Such an evidently simple programming project, clearly manageable by 3rd and 4th graders, was made more difficult by certain specific features of the user interface, some of which had been anticipated by the designers, which obscure the task.   Very seriously needed unimplemented features include a dependency trace such as is a typical element of debuggers.   Scott Wallace absolutely wanted this, but as a one person programming effort, some things like this just could not be had. Frustrating limitations of our alpha-SmalltalkV development environment made it impossible to create a more effective spreadsheet style layout.   Our natural language parser was also more rigid than we needed, as it had been a learning experience for its implementer.    But looking closely at these users experience, we can see that as they persevere, where they get lost, and where they get back on track.  They do not give up, they continue to get ideas from Playground user interface about what to do next, about alternatives. 


First of all, Mrs. Barclay asked Rebecca to write in the notes pane what you want to have happen.  Children must be able to understand and explain in a coherent english sentence what they plan to do, or they will be hopelessly at sea trying to script.   To accomplish this sentence required explicit questioning from the teacher:  "When do you want the change to happen?"  "When it gets to the cash register."  "What do you want the change to be?"  --"Want him to turn black.  "So you want his costume to change?"  So Rebecca writes:


Costume (Type: letters)

COMMENT When bill hits the CR he will turn black


"Now, click on the eyeball, what do we want to have happen, what do we want him to notice?"  --"When he’s hitting, that he is turning black."  Like most children, Rebecca gets the action first.  Looking at the sentence constructor for the Costume agent, Rebecca and her teacher read the phrase "Value equal to Value".  The Costume agent is a letters type agent.   Rebecca slides the mouse down to the middle of the constructor menu where she expects a selection is to be that she wants, but she doesn't see it, as what she is looking for is not in the sentence constructor menu for the letters type agent.  She hovers over "Value equal to Value".  Mrs. Barclay concurs, and then works with Rebecca to fill in the first value with a player and then the player I call playername.  When they get this far Mrs. Barclay reiterates that they are looking for is to achieve a sentence "DollarBill overlapping the cash register", then remembering how Playground works, she inverts it and says: "..or we could pretend cash register is overlapping me".   Reading the scripting sentence as they have constructed it so far "Is the player I call playeragent", Mrs. Barclay tells Rebecca "Look at cash register and it has money in it".  Rebecca reports that the Bill also has money in it. 


Mrs. Barclay exclaimed that money could not be the characteristic of both players, as it won’t know to look at self or the other.  This need not be a concern, as the Playfield will work just fine even if the word money is used in both players.   Rebecca deleted the Money Agent from her $100 bill player, because she said that one didn't have any script in it.  Of course, this agent was the one that the other Money agent in the cash register was using as the characteristic of bills.  Suddenly seeing no bills, the Cash Register's Width stopped getting larger when the Bill overlapped.  Although this caused Rebecca considerable consternation and unnerved her, she saw no relationship between deleting the Money agent and the failure of her work.  


Unlike deleting a critical dependent variable on a spreadsheet like Excel, where all of the values dependent on the removed one would instantly turn into #VALUE#, the user does not experience an obvious feedback.  This is because Rebecca is working with the playfield frozen, not running.   When moving to the Scriptor the Playfield will be automatically halted in place as you are editing so as not to introduce asynchronous problems.  When you enter the value the Playfield will begin running again, and mistakes will be obvious.   While in Excel the bad values are reported right in your face where you are focused on your work, but in Playground 3.5 they occur in the values pane at the extreme periphery of your attention.   I preferred the closer association of values to script we enjoyed in Playground 3.0.  


Mrs. Barclay did catch on to what had happened, but rather than suggesting to replace the Money agent, she suggested changing the name of the characteristic looked for.  This meant they had to make changes now in two places, just to get back to what had worked at the beginning of this work session.  Leaving this aside for the moment, they turned to the original project of getting the Bill to change its costume when it overlapped the cash register.  


A Bank agent was created to locate Cash Registers.   As the job of this agent is to “Notice Cash Registers”, Rebecca and her teacher assumed that the necessary script needed to go in the Notice pane.   This is a common problem.  No matter how much explaining we do, the idea of Noticing makes no sense to people if cannot be applied to the thing we notice, which is things -- in this case other players, not booleans.  Naturally, they did not find the scripting sentence they wanted in the eyeball pane.   Repeating to themselves over and over “Every Player with Agent Money”, they tried to replicate it as closely as possible, using the menu options available.  First they picked Value equal to Value, and filled in the first Value with Group, and then The Group I call Groupagent.   At this point they realized they had dug themselves into a hole, and called for help.


An Apple staff assisting in the classroom, Gloria Pearson, asked them if “If he finds every player with money is that all he is supposed to do, one thing all the time?   They answer yes, so she deletes the script from the eyeball and moves them down to the cat pane.  Immediately they are delighted to see the menu that they wanted and the agent is quickly completed.   The important question that Gloria has given them to determine whether to use the cat pane or the eyeball pane has been utterly lost on them.    Rebecca and Mrs. Barclay had assumed that if they wanted something to be noticed, then it ought to go in the notice pane, our eye or "if" statement.    It makes no sense why it should go in the "Do" pane, just because we are setting a value to another player in the do pane.    We have talked at length about the possibility of putting a sentence in the notice in such situations: "Notice playerX", then in the "Do": "set value to playerX", or set value "it", to what you notice.


Returning to Rebecca and Mrs. Barclay, this is unfortunately hardly the end of their difficulties, for now they have to script Costume to recognize the overlapping of the Cash Register as the cue to change its costume.   Both Rebecca and Mrs. Barclay cannot find the phrase they were looking for in the menus.  The menu which appears first is the one with Value equal to Value.  Mrs. Barclay wanted to say “When dollar bill overlaps cash register”.  Rebecca was still using the words “hits the cash register”.    Either way, no useful choice with “overlap” in it is in sight, you have to dig down another menu.  “Here’s where we want it to overlap, how can we get it to overlap?”  Finally they were both ready to give up, and Mrs. Barclay suggested an alternative solution to avoid the entire mess by returning to the good old one step fall back of moving to a coordinate location.


Mrs. Barclay knew Rebecca had almost run out of steam, and wanted to restore her student’s sense of accomplishment and control.   She had Rebecca run the playfield, and freeze it when the condition of overlap was accomplished, open the scriptor, and examine the value of Left Agent.  Rebecca reported “460”.  “Your dollar bill needs to know when it has reached the right place, and one of the ways you can tell it is by the number of pixels.  So “If my Left is greater than 460, change costume”.  Value greater than Value is quickly available as the 4th choice on the first menu, and the two Values are filled in by typing my Left, and 460.


Despite the big victory of getting the dollar bill to change costume, now when it reached the 'Left', or X-coordinate of 460, Rebecca was crestfallen that her Cash Register had stopped working.  “The Cash Register is supposed to get bigger like it always does!”.   Opening up Cash Register and reviewing the script for Width: “Does the group I call money overlap me”, it seemed clear to both student and teacher that Width was not noticing Money.  Mrs. Barclay recalled that they had cut the agent money out of the 100 dollar bill.   With a bit of renewed enthusiasm, Rebecca exclaimed that the agent Bank was now available in the dollar bill, and therefore Money could now be replaced with Bank like this:


Width (Type: number)

IF I NOTICE:  does the group I call bank overlap me

THEN:  ((my Width) + 20)



Of course, this does not work, because there is no group called Bank, and the Bank agent that does exist is not a group, it is a characteristic of another player.   Again, this is a repeat of the earlier confusion about the group Money and the characteristic Money. This distinction may seem obvious when distanced from a working session like this, but it is not obvious to Playground's users, it is hidden information.  When the playfield runs, they will get an error message which says there is no group called bank, and this will confuse them further if they should happen to notice the error message pane.   The error message is rather meaningless because in their heads, they have parsed the phrase to mean, “the group with the characteristic bank”.  This infuriates a user who knows perfectly well that they put the characteristic bank in the other players, and therefore a group with that characteristic does in fact exist.   The reason their player isn’t finding it is a mystery.


There are several reasons they are getting derailed.  One is the lack of a dependency trace such that they could find out where the value money actually originates from.  They think it refers to the old money agent they removed from the 100 dollar bill, when in fact it does not and never did.  The group called money is one of their own agents.  Why can't they see that it is one of their own agents?  Because it is a little thing up in the corner, all the script is not open to them.  The layout does not show cascading dependencies as a single unit. There is no comparison to a spreadsheet sum following obviously from a series of cells just above it.


Rebecca is very dejected that her playfield still doesn’t run properly, and pounds the table with frustration.   Her teacher has her open up the $100 Bill one more time to double check that there is in fact an agent “the group I call bank”. Interestingly she uses the entire phrase “the group I call bank”, which I think emphasizes that having all those extra words there for clarity is useless.  Under the pressure of the user’s desire, the phrase is compressed and transformed into what the user wants it to be, rather than what the words strictly mean.  They stare at agent Bank hopelessly, there it is, plain as day, obviously a member of the group with the characteristic bank. 


Staring at the agent Bank had a useful side effect.  Bank just happens to be a scripted agent collecting every player who has an agent called Money.   Rebecca had not made Bank as a special characteristic, she had merely expediently remembered that she could make use of Bank.   As they stared at Bank, a group agent, and read “Every player who has an agent named Money”, they may have been reminded of the matter of Group agents.    At any rate, returning back to the recalcitrant Cash Register, Mrs. Barclay suggested that they give up trying to debug why Width doesn’t work, and make a new agent to look for the group bank.  They name this new agent:   and going to the cat pane, are stumped again by the weird and unexpected menu with all those Value equal to Value things on it.   But this time Mrs Barclay has an idea “We need to change true/false type agent and make it a group type agent”.   Voila, the right menu, with that perfectly matching phrase that they wanted “Every player in GROUP who has an agent AGENTNAME”.  They know how to fill this in, the first Group is always, without a second thought, filled in with the word Others from the menu.  The second calls up a wonderful list of all the available agentnames, and there it is, Bank, right there on the list.  Oh happy day, it executes, and it finds the Cash Register.  There is a moment of jubilee, until they run the playfield, to discover sadly there is no improvement.



Up until now, both Rebecca and Mrs. Barclay have worked steadily and patiently without giving up, and without feeling at a loss for things to try.   Mrs. Barclay has Rebecca open up the Width agent one more time, it lies just below the new Cash Register agent so that you might think it would just scream at them that the two agents who are supposed to be working together are not.  But again, there is nothing on the computer screen that reinforces the tie or more exactly the lack of a tie, between these two.   In the value panes, it is quite evident that the player has a good value for the agent Cash Register, which has found Cash Register.  If the Player has found it already, why can’t Width make use of it?  Or what is wrong with Width, since the script in it’s notice pane uses almost the same language as the working Cash Register agent. “The “ ...  Mrs. Barclay hovered , considering whether to rescript the aberrant notice pane of the Width agent, which is where the problem is, but "No", she sighs, "I think that is all right".


Another curious and sad result of having so many things invisible to users is that there is in fact already script in an agent of $100 Bill, this is the Money agent, the one which used to find “Every player with agent money” before we deleted Money from the Cash Register.  At no time during this session was the old working Money agent opened up.  Of course, it no longer did work, but it is here that a simple replacement of the word “Bank” would have changed the course of history.   If, when Rebecca had first tried to repair her Width agent by replacing “the group I call Money” with “the group I call Bank”, the system had coughed, and said “uh-hum, why do you want to replace a perfectly good group agent Money with a horridly bad nonexistent “group agent Bank”?  The system might have gone on to open up the script panes of the group-agent Money.  This would have revealed the real identity of the Money agent, which the user had mistaken.   It would put in front of the user the actual lines of script they had intended to correct.  Once this agent is open, it might be nice if the system  highlighted the error in “Every player in others who has an agent named Money” -- this is that the word Money in this sentence is indeed meaningless, because there are no other players on the playfield who have the agent money.  The user actually knows this, and in fact is searching for this very thing in order to rectify it, but had been offset only one dependent value away.


Rebecca and Mrs. Barclay had finally reached an impasse, and sought additional help from another Apple staff assistant.   This being a different staff person than had helped them before, and seeing two agents in Cash Register that were collecting players, corrected the playfield as follows:





100 Dollar Bill

Hundreddollars (Type: trueFalse)


Bank (Type: group)

COMMENT  Find every player with Money

ALWAYS: every player in Others with agent Money

Money (Type: group)

COMMENT  Finds all of the one hundred dollar bills

ALWAYS:  every player in Others with agent bank


Left (Type: number)

IF I NOTICE: (is (my Left) greater than 606)

THEN:   37

OTHERWISE: ((my Left) + 9)


[Left is the agent that got changed to notice coordinates rather than overlap with the Register]


Width (Type: number)

IF I NOTICE:  does the group I call money overlap me

THEN:  ((my Width) + 20)



[Width inotices overlap with the Dollar Bill -- exactly the solution that was wanted for Left & Costume in the Dollar Bill player, which got changed to notice  coordinates ]


Costume (Type: letters)

COMMENT When bill hits the CR he will turn black

IF I NOTICE:  (is my Left greater than 461)

THEN: 'blackbox'

OTHERWISE:  'graybox'


[Costume agent also got changed to notice coordinates rather than overlap with the Register]


CASHREGISTER (Type: group)

ALWAYS: every player in Others with agent Bank


[This agent has no function any longer]



    (this player has no script at all)


Aaron Schoonhoven, another third grader, picked a tricky object to realize as a costume, a magnifying glass, but he had a good idea about how he would do it with a circle of cardboard, covered with tin foil, and he would sandwich his body between two pieces of saran wrap.   To avoid tripping over the magnifying glass handle, he arranged that rakishly to the side.  He looked great.  

His poem:



                  Handle as  black as my labrador,

Rim as silver as tin foil,

Glass as clear as  a winter sky.


                  Good at finding things like a detective,

Quiet as a mouse,

Sits on a shelf even better than dust.


                  Feelings of a rock,

Solid and sturdy.


                  Sees everything big,

An ant the size of a person,

A person the size of a two story building.


                  Hears as well as a fly.


                  Afraid of getting dropped.


by Aaron Schoonhoven Date 1-9-91


Aaron was one of the children who were involved in experimental classes to do some additional character development.  Jill Wright, a professional storyteller who has been a specialist at The Open School for some years has devoted her energies and attention to the problem of bring Playground to life.  Last year she had conducted workshops for Playground on "the Magic Circle", which addressed this problem of children not understanding the two actions in an if/then/else.  In that exercise, she had drawn a circle on the floor, and asked the children to change their character when they were in the circle.  This year, she asked children to work alone and then in pairs to develop the attributes of their objects as characters.   We would hope that Jill's ministrations to the taint of the "TV Plot" would encourage more interesting characters, springing directly from the experiences of the simple little objects.  However, for whatever reason, perhaps we Jill too little and too late, her effect on students like Aaron was negligible.


Aaron S. magnifying glass    

6 different kinds of players



scene 1: clue 1


By the time Aaron got to developing Playfield story ideas, he could think only of the symbolic role of the magnifying glass in old detective movies.  When queried about this, he had no strong reasons, but it seemed to match the way Playground had been demonstrated to him, as a player moving from one destination to another.  Looking back at his earlier poem, any of his observations might have been translated into a Playfield, such as making all other objects twice the size.  This would have been more interesting an exercise.  Instead, Aaron's Playfield is disturbing in it's lack of richness which a true detective story ought to have.  It cannot possibly have been particularly captivating a project for Aaron, and he certainly never seemed very involved in it.


Nonetheless, Aaron finished his playfield, and it worked, and he later when on to use the same approach in his next project working with a partner.  His approach is different than Rebecca Jannol's, it is another style of Playfield design modeled by his teachers.  This was a popular approach which third graders seem to manage pretty well, which utilizes a clock.  Each of four instructions to move to a new destination are predicated on a different value of clock.




    Text (Type: letters)


            'My magnifying

            glass loves to

             look for clues.

             He travels from

            clue to clue

            solving mystrys.

            He is good at

            solving them.'


scene 2: clue 2

mr magnifying glass


clock (Type: number)

COMMENT  this player counts the ticks

IF I NOTICE: (is (my clock) greater than 100)

THEN:  1

OTHERWISE: ((my clock) + 1)



clues (Type: group)

COMMENT  This payer finds all of the stops

ALWAYS:  (every player in Others with agent stop)



NEXTSTOP (Type: command)

COMMENT This agent reads the clock so it knows were to go

IF I NOTICE:  (is (my clock) less than 20)

THEN: move 15 toward the player in the group I call clues whose name =


IF I NOTICE:  (is (my clock) less than 40)

THEN:   move 15 toward the player in the group I call clues whose name = liuquer store'

IF I NOTICE: (is (my clock) less than 60)

THEN: move 15 toward the player in the group I call clues whose name = 'supper  market'

IF I NOTICE:  (is (my clock) less than 80)

THEN: move 15 toward the player in the group I call clues whose name = 'mystry house'


scene 3: clue 3 at the liuquer store


scene 4: clue 4

mystry solved at the mystry house

Traveler (Type: trueFalse)





liuquer store


Text (Type: letters)

 IF I NOTICE: ((is ( (the clock of the player in others whose Name = 'mr magnifying glass')) greater than 15)) & ((is (the clock of the player in others whose NAME = 'mr magnifying glass') less than 20))

THEN:  'clue1'



Text (Type: letters)

IF I NOTICE: ((is ( (the clock of the player in others whose Name = 'mr magnifying  glass')) greater than 20)) & ((is (the clock of the player in others  whose NAME = 'mr magnifying glass') less than 25))

THEN: 'clue2'



stop (Type: trueFalse)

COMMENT The type of stop this guy is

ALWAYS: 'fun


stop (Type: trueFalse)

COMMENT The type of stop this guy is

ALWAYS: 'fun


supper market


mystry house


Text (Type: letters)

IF I NOTICE:((is ( (the clock of the player in others whose Name = 'mr magnifying   glass')) greater than 45)) & ((is (the clock of the player in others whose NAME = 'mr magnifying glass') less than 50))




Text (Type: letters)

IF I NOTICE:((is ( (the clock of the player in others whose Name = 'mr magnifying glass')) greater than 70)) & ((is (the clock of the player in others whose NAME = 'mr magnifying glass') less than 80))

THEN: 'mystry solved'



stop (Type: trueFalse)

COMMENT The type of stop this guy is

ALWAYS: 'fun


stop (Type: trueFalse)

COMMENT The type of stop this guy is

ALWAYS: 'fun



Players living in other Playfields

The most exciting efforts in Yellow Cluster happened in January, after individual Object playfields had been completed.  The Objects were combined in the same playfield, against different kinds of story environments, which the teachers called "Settings".  Though we all feared this would be a difficult task, and it was, it was well worth doing because it is exactly what we all hope to do in the future.   We all learned a great deal from watching how this went.


Children worked with a partner, both opened their two individual playfields, and a new "Setting" playfield which had been prepared by their teacher. The wonderful things about this were that the children were forced to be imaginative about making up some things for two unlikely objects to do together.  Having two children working together added new energy and resources to coping with Playground.


The things that didn't work had to do with the children losing the ability to recognize their own scripts within their own Object characters.  They opened the playfields and started reading the teacher's scripts, and they didn't remember having done them.  This confused them no ends, to the extent that they couldn't remember any longer what they had done.  This just underscores unreadableness of Playground, which is sad, as we had hoped that reading it after the fact would be one of the benefits of having gone to the torture of generating those english sentences to begin with.  However, Playground proved as unreadable as any other programming language, to children.


Adventure Story

Aaron Schoonhoven and Greg Levine, both third graders, worked together on an adventure game that expanded on both of their interests.  Aaron had a magnifying glass which he had transformed in his head into a detective (which we saw in the example above).   Greg Levine had a Dick Tracy hat.  While they continued to use the Playfield model of a clock that triggered the actions of movement from one destination to another, they got a lot more elaborate than in their individual playfields to have different kinds of changes happening when their Objects reached destinations or interacted with each other.  They even tried a crude animation effect for a flying gull using two different bitmap costumes.







Text (Type: letters)


            'Aaron and Greg will go

             bird watching and then

             go back home.

            The gull picks up

             Greg and drops him

             in the water.

            Then Greg swims to shore.'






storyteller (Type: player)

COMMENT Aaron and Greg will go bird watching and then go back home. The gull picks up Greg and drops him in the water.  Then Greg swims to shore.


AboutMe (Type: command)

COMMENT  The gull flys around but heads to the tree if the tide is in



clock (Type: number)

IF I NOTICE:  (is (my clock) greater than 60)

THEN:  1

OTHERWISE: my clock + 1


fly (Type: command)

COMMENT All player agents look for players by name as this is the convention  used during the class experiment

IF I NOTICE: (is (the clock of the player in Others whose Name = 'greg') greater than 15)

THEN: move (5 ) toward the player in Others whose Name = 'greg'

OTHERWISE:  advance a random integer between 10 and 15 bouncing off edge


waterfinder (Type: player)

ALWAYS: the player in Others whose Name = 'wave'

land (Type: player)

ALWAYS:   the player in others whose name = 'island'

leaves (Type: player)

 COMMENT  this agent will find tree      

ALWAYS: the player in Others whose Name = 'tree'

Palm (Type: player)

COMMENT All player agents look for players by name as this is the convention  used during the class experiment

ALWAYS: the player in others whose name = 'tree'


overlapper (Type: trueFalse)

IF I NOTICE: does the player in Others whose Name = 'gull' overlap me

THEN:  true



water (Type: player)

ALWAYS: the player in others whose name = 'wave'

Move Agent missing here! -- This player does move

Heading (Type: number)

ALWAYS:  a random integer between 270 and 450

             "funny code but keeps it in the upper half of screen"



Costume (Type: letters)

COMMENT bird1 and bird2 are bit maps - they also live in two players at bottom

            of screen.  Flying motion is achieved by switching costumes

IF I NOTICE:   is (my age) odd



Food (Type: trueFalse)






leaves (Type: group)


storyteller (Type: number)

OVERLAPER (Type: trueFalse)

IF I NOTICE:  does the player in Others whose Name = 'aaron' overlap me

THEN: true



Left (Type: number)

IF I NOTICE:(is (my Left) less than 107)

THEN:  275

OTHERWISE:((my Left) - 15)

Height (Type: number)

IF I NOTICE:(is my OVERLAPER equal to true)

THEN: ((my Height) + 5)

IF I NOTICE: (is (my Height) greater than 300)



bigger (Type: number)






AboutMe (Type: command)

COMMENT I am just an island. I change costume and width  when the tide is in


AboutMe (Type: command)

COMMENT   I move back and forth across the screen. If you change the size of the   screen change my step so I can use more space


water (Type: player)

ALWAYS:  the player in others whose name = 'wave'

land (Type: player)

ALWAYS:  the player in others whose name = 'island'

tide (Type: trueFalse)

IF I NOTICE:does the player I call water overlap me

THEN:  true


shore (Type: command)

IF I NOTICE: does the player I call land overlap me

THEN: play sound 'drip

Width (Type: number)

IF I NOTICE: (is (my tide) equal to true)

THEN:  my width - 1

IF I NOTICE: (is my width less than  200)

THEN: my width + 2


Height (Type: number)

IF I NOTICE:  (is my height  greater than 15)

THEN: my height + a random integer between -10 and 10

Costume (Type: letters)

IF I NOTICE:  is my tide equal to true

THEN: 'grayoval'

OTHERWISE:  'island'

Bottom (Type: number)

COMMENT  I want to stay at same basic location as the bottom of the island

ALWAYS: (the Bottom of the player i call land) - 10


step (Type: number)

IF I NOTICE: (is my left greater than 400)

THEN: -10

IF I NOTICE:  (is my left less than 20)

THEN:  10


other examples of playfields with more than one object

Sakinah Madyun (fourth grade) was a Kodak Camera who teamed up with (student 58) in a stadium setting.  Saggy Cienfuegos (fourth grade) was a Battery who teamed up with who, in the Photo Studio and Art Room.


Reflections, some things learned


insights for a new sentence constructor

Inasmuchas this version was an experimental prototype, the sentence constructor was implemented simply, as a series of nested menus.  There was minimal help for users and it was painful to learn.  Nonetheless, it was learnable and usable, and raised new thoughts for user interfaces.  It reminded teachers of the “fill in the blank” story generators that are so familiar to the classroom.  However, unlike the nonsense words in “fill in the blanks”, teachers protest that Playground’s language is not so obvious for kids or teachers what part of speech it is.  Another disconcerting problem is that the very long Playground phrases destroy any sense of the structure of the "fill in the blanks" template.  The long phrases that become the final script are many words longer than the original template items which are being replaced.  Usually this results in text wrapping around to two lines as well.  Coupled with No"Undo",  the user fails to gain any sense at all of the magic and power of replacing one function for another, or of alternative ways of specifying groups and players.   No Undo is a Macintosh blasphemy which we blame on the inadequacies of Playground's natural language parser[3], which needs to be rewritten to reflect our new uses.  I believe that the sentence constructor demonstrated great promise, despite its several severe problems in implementation.  I hope that we do not abandon the idea, but rather, reimplement it in such a way as to strengthen the user's perception of what a sentence constructor can deliver. 



teachers would like to customize the sentence constructor for each lesson

In addition to these implementation problems, a future "sentence constructor" must be componentized in such a way that the teacher can limit the menu entries to only the ones she intends to use for a particular lesson.  The availability of many confusing alternatives just derailed children.   In practice however it was not possible to customize the constructor menus as much as one might imagine, given the trivial the matter of leaving off menu items   We have experienced similar logistical nightmares with other applications, like Canvas 3.0, which has the delightful feature of 60 preferences which can easily be subtracted or added by including or deleting them from the preferences folder.  In practice this means that for each of these 60 opportunities which a teacher may want to introduce one week at a time, some poor human has to manually copy to each hard drive the new version, reboot the machine and check it.  This is hours and hours of nonsensical labor.  Jack Palevich, another Apple engineer, has provided us with a customized program we call Gofer, which has been a tremendous help, but is easily derailed by children's' hacking the computer defaults, and moreover is not usable by mere mortals.  We continue to try and work around this limitation, but it sure would be nice if some utilities for updating were part of our next experiment.



Yellow Cluster gave us an informative experience about computer programming in the context of third and fourth grade projects.  The teachers were very creative in bringing Playground's often obscure technical skills within the experience and imaginations of their students.  I sincerely hope that we can benefit from the lessons learned here.  We have always felt we were pushing the limits of what third and fourth graders can do, not only in our own experience, but from many years of experience of others who have endeavored to teach computer programming to young children.   What we have seen suggests that it is possible.  All the children stuck with it, and seemed to be on the edge of mastery. 


We got very excited about the final projects combining players created by a group of children with a "setting" created by the teacher.   This is a great idea for how we intended Playground to be used.   It is remarkable that almost everyone in the class was able to complete both individual and group playfields and felt some measure of success and ownership.    And, some were quite clever or humorous.   Undoubtedly the activity benefited from being an extension of the Object Costumes part of the City Building curriculum, which is very maturely developed in this classroom.  Also, it benefits from the teachers' creation of a series of poem and drawing activities around the book "What my Pickle Can't Do", which promotes thinking of quick, joke-like little stories.


To achieve our goals and make this age child self sufficient -- so we can see more creativity and less "mathy" drudgery -- we need to be particularly attentive to our user interface, to take every opportunity to reinforce the clarity of our design principles, and to remove every unnecessary distraction.   We should also take heed to the message from elementary school teachers, that children need to try and try and to make mistakes.  They cannot achieve perfect grammar or perfect spelling and to insist on perfect renditions of any adult model is simply not possible without accepting partial imitations.  We have to be more tolerant of imperfection, as well as working to develop better supports for developing and clarifying half-realized ideas.  These crutches include having a more satisfactory implementation for the typing of the story texts in place on the playfield screen, expanding on the comment panes and putting up comments as player labels.   We should consider introducing interactive dialog sequences to assist users to flesh out a multiple step scripting efforts such as involving group and player valued agents, as well as conditions and actions.




As red violet as the sunset,

Blue violet like  the evening sky

As gray as aluminum,

Green like an olive

Plays music like a  jukebox,

Learns new moves like a pro

And runs like a bear,

Alert as a watch dog

Happy like a prince who’s just been crowned

As fresh as pure orange juice,

Disappointed like a frog

Who hasn’t caught a fly, 

He sees batteries, circuits, microchips and gadgets.

He can hear things we can like barks music and talking,

And stuff we can’t like dog whistles and talking from inside buildings,

Tastes circuits, microchips and electricity.

The circuits taste chewy like Twizlers,

Microchips taste fuzzy like static

And electricity tastes like cinnamon as in Red Hots.



Mark  Lezama


[1] children's book "Everything my pickle can't do" inspired this exercise and others about thinking about my object.

[2]  Deneba software Canvas 2.0 is a drawing program that combines geometric primitives and bitmaps in a convenient way.  It is used throughout all grades at the Open School in lieu of MacDraw and MacPaint. 

[3] which was researched and hurried together by Playground's previous programmer, Jay Fenton, to meet the exigencies of delivering Playground 3.0 to use in the classroom.