[Squeakland] EToys Experience Report

Kevin Lawrence kevin at diamond-sky.com
Tue Mar 22 16:45:40 PST 2005


Hi Squeakland,

Some background first on why I am so excited about Squeak/eToys :

I downloaded Squeak a couple of weeks ago with a view to getting my 9 
year old excited about computers/programming/math/science and most of 
all encouraging him to use his creative side more. Dylan has been doing 
Logo at school since first grade and is very good at it but, sadly, he 
doesn't enjoy it any more.

Once a week he comes home with a completed Logo assignment. They started 
out as the usual draw a house/draw a star/draw an XXX and after four 
years the XXX is ever more sophisticated but the solution is still just 
an ever more complex sequence of repeat 10 [rt 50 blah blah blah]. He 
gets 100% for pretty much every assigment, but it has long ceased to be 
fun for him. I tried encouraging him to try some different ideas in Logo 
at home, but that was a non-starter because he associates Logo with 
boring stuff he does at school. Fun with Logo is an oxymoron for him.

Enter Squeak.


I downloaded squeak and tried the driving tutorial and was amazed - it 
was exactly what I was looking for. Dylan was also amazed that you could 
do "that kind of thing" with a computer. I left him to his own devices 
and he did the driving thing (follow a line) on his own with no guidance 
from me. He also did a "drop a 1000lb weight on a little man's head and 
make him howl" thing - exactly the kind of creative play that I was 
hoping for. I think he was more creative in those 3 hours than he had 
been in the previous year.

That's the good news.


I searched extensively for examples for him to try to direct his play a 
little and avoid having him get bored and that's where things got 
frustrating for both him and me.

I tried to stay one step ahead of him on each example and I got stuck an 
   awful lot. After thinking about it for a while, I have come up with a 
small number of categories of stuckness and I'd like to ask for some 
help : for me in the present - and for other's like me in the future.


Category One Stuckness - Computer Science Concepts

This is a hard one and probably out of scope for Squeak/eToys. To solve 
some problems, you need to understand certain concepts. For example, in 
one example I was working through I knew that I needed a collection of 
somethings. I knew that because I have been around computers for a long 
time but my son has no concept of collections. Some concepts (like 
variables and scripts) he figured out for himself but at some 
appropriate point he will need to be taught some of the more difficult 
concepts. No complaints at all about Category One Stuckness.


Category Two Stuckness - Find the eToys implementation of a concept

This is where /I/ got stuck a lot. Continuing on the 'collections' 
theme, I wanted a collection of somethings and looked for an array-like 
property/player/something.

After searching in vain (both within the eToys UI and on the Internet) 
for how I might create an array, I realized that I would do better with 
a linked list. This time my painful search (of the eToys UI and the 
internet) was fruitful.

It took me two "Ah Ha !" moments - one to realize that I needed a linked 
list, another to figure out how to implement one in the eToys UI. Once I 
understood, the rest was easy. (I haven't tried to pass that knowledge 
on to my nine year old yet but ....)

A sub-category (2b ?) of this would be not even knowing whether an 
implementation of a concept even exists. I figured out how to do a 
linked list, but I still have no idea whether it is even possible to 
make an array. Not having arrays in eToys is fine. Not knowing whether 
arrays exist in eToys is painful.



Category Three Stuckness - It's different

As a professional programmer who works extensively with procedural 
languages I am used to this feeling of knowing how /I/ would do it 
procedurally and knowing that I need to do it differently in /this/ 
environment. Once I realize that things are done a different way in 
eToys (or XSLT or OO or Logo or SQL or whatever) it's just a matter of 
practice until I am used to the new way.

My embarrassing example of category three stuckness was when I couldn't 
figure out how to find the average of two numbers :-(

I guessed that the usual arithmetic precedence did not apply and I had a 
faint memory from the tiny bit of smalltalk that I know that expressions 
are evaluated left to right... but it took me an embarrassingly long 
time (and a peek at the generated smalltalk) to figure out that 
expressions are evaluated right to left. [Aside - what's the reason for 
that ?].

Even once I understood the rules I found the mental gymnastics to do 
even simple arithmetic frustrating because it is so different from what 
I am used to.




The worst thing about having to navigate by "Ah Ha !" moments is that 
finding out the answer just makes you (me anyway) feel even more stupid 
because you didn't think of the answer before.


Having trawled the history of this mailing list, I know I am not the 
first to get stuck on these things. I hope it's helpful and not annoying 
to the Squeak community to hear some of these things yet again. I mean 
well :-)



Very often the response to issues similar to mine is either "Sorry. 
EToys is experimental - don't expect product quality" or "We need more 
documentation" and I wonder if the idea of perfect documentation gets in 
the way of having useful but minimal documentation.  I wonder if there 
is a pragmatic, middle-way solution to issues like these ?


The Drive a Car tutorial is outstanding as a way to get started and 
introduce the basic eToys concepts, but once I get through that I want 
less step-by-step guidance and more hints to help me get unstuck.


I like (and my son seems to like) the challenge of having just enough 
understanding of the end goal to be able to figure it out by myself - 
or, more likely, change the goal to something more interesting to me - 
and I like just enough hints to help me when I get stuck. Both Dylan and 
I, have the patience to make it through about one tutorial before we 
want to just go explore. A list of ideas can help make the exploration a 
little more fruitful and directed.


For example, I would have found it very helpful to have a list of (5 ? 
10 ? 50?) projects (perhaps ordered by difficulty) that are do-able in 
eToys.

There would probably be hints aimed at different audiences. For example 
(for a computer savvy teacher) "Hint : try using a linked list" or (for 
a child) "Hint: Check out the 'color under' property".



Something like this

1. Drive a Car around a track
   HINT : follow the excellent tutorial

2. Salmon navigation
   HINT : draw the river as a gradient
   HINT : Watch the saturationUnder as you move your salmon around the river
   HINT : store the previous saturation in a variable

3. Bouncing Basketballs
   HINT : add the acceleration to the forwardBy every tick

.....

14. Star-eating Snake
   HINT : Use the 'copy' message to gorw an extra body segment

...

27. Prisoner's Dilemma
   HINT : Store the history in a linked list

.....

38. Kepler's Law
   HINT : Think of a player as a vector



As I type this, I realize I have made an assumption about who the 
audience would be for a list like this and - of course ! - it's someone 
a lot like me. A third-grade teacher with a minimal computer background 
would need much more hand-holding. So before I go any further I should 
probably ask : Is my situation [a computer-savvy parent/teacher trying 
to work through projects with a child] typical ?


A last question before I finally shut up - any suggestions for how to 
proceed ?

I have the Powerful Ideas book on order, and I downloaded the 4 tutorial 
PDFs at squeakland.org. What would YOU do next in my situation ?


If you made it this far through my ramblings - thanks ever so much for 
your patience ! And thanks even more for Squeak !

Kevin


More information about the Squeakland mailing list