The Pit of the Pendulum
I chose Squeak for a digital software environment as Mark Guzdial’s presentation
at CSCL made it look easy and it also seemed to have a good GUI (graphical user
interface) for creating programs using a drag and drop. I was particularly impressed
with the apparent versatility of the program as it is the heart of
Swikis (Squeak Wiki Wiki Webs),
which run on almost any platform. With power and a good user interface, how hard
could it be? I just intended to do something simple—paint a
pendulum and program the equation for simple harmonic motion using the small
angle approximation so it would swing.
How easily we are deceived.
ordered Squeak: Object-Oriented Design with Multimedia Applications
[Guzdial, 2001] as it was the recommended book for the course. While waiting for
it to arrive, I figured I would explore Squeak a bit. So, full of high hopes, I
launched Squeak 3.0 on my Windows XP computer and was met by this screen (right).
Well, it looked friendly enough, although the mouse’s eyes had the annoying habit
of following the cursor.
clicking around a bit, and still realizing not much was making sense, I pulled up
the World menu (left), which is the top level menu within Squeak, accessed by left
clicking anywhere on the world. "World" is Squeak's term for any part of the desktop
that isn't covered by an object. The help items made little sense, so off to
Squeakland I went to find out more about
the program. The first thing I discovered is that I needed a plugin, so I went to
the plug-in page. My two main browsers are Internet Explorer 6 and Netscape 6.2,
neither of which was supported, so I couldn’t look at the projects on line. I succeeded
in downloading one of the projects then figured out how to open it.
pink window popped (right) up that looked like it might be an error message, but
the error messages weren't very helpful as the first line was "SmartRefStream>>scanFrom:"
Since that was going nowhere fast, I fired up an ancient version of Netscape
(4.79), loaded the plugin, and tried to follow their “make your own car” tutorial.
The first problem was that the version in the browser was different than my version,
with some of the menu items being different as well. After much effort, several
crashes, features that sometimes seem to work and sometimes didn’t, I finally was
able to get a basic car to run that mimicked the car Guzdial had illustrated at
CSCL. The car, track, and joystick are all objects and their properties can be viewed
with the object inspector. The object inspector shows information about the object,
such as it's position, location, or orientation, but it also allows the tiles (boxes
that show a piece of information) to be dragged out of the object inspector, which
it then converts to a script.
image (right) shows the car on the track with the heading of the car controlled
by the angle of the joystick. The script in the center contains the tiles that are
the program, which was created by dragging and dropping tiles representing various
properties or methods from the object inspector. It’s also possible to view the
actual code rather than the tiles
Guzdial’s book arrived about that time so I eagerly ripped open the package and
started reading…. It rapidly became apparent that the book did not address creating
items through the graphical user interface; rather, its focus was to teach object-oriented programming (OOP) through Squeak. It also was written about Squeak 2.8,
which did not have the morphic projects that are a focus of Squeak 3.0. However,
he was very clear on one helpful point—everything in Squeak is an object.
Although the book wasn’t much help, it did show most of the mathematical operations.
I had discovered that help menu isn't much help. I felt I was ready to try my pendulum.
I easily painted a pendulum but its center of rotation wouldn’t budge. After digging
around in menus, I finally found a way to change the center of rotation when I couldn’t
just grab it and drag it.
At this point I ran into a limitation of the graphical interface in Squeak. Although
it’s possible to drag numerous tiles into a script so that the script is built only
of tiles, the numeric operations are limited to arithmetic. A random number tile
can be created if a random number is needed, but any higher operations, such as
exponents, logs, or trigonometric functions, require going into the code and programming
in Squeak. I went into the code to make changes, I finally realized the changes
always disappear when switching back to tile view. It’s possible to do some nice
programming, and then have it disappear in a flash. It was time to stop the squeak
development as my goal with Squeak was to explore scripting using the graphical
user interface, not to learn to program in Squeak.
I created another car and used the tests that were available as tiles to program
it to stay on the track. That design led to interesting instabilities as the car
wandered back and forth. That type of instability would be worth students exploring.
I made use of the everything-is-an-object design of Squeak and started
driving the help menu (left) around the track using a joystick while the car
tried to find it's own way around the track.
With all of the other screen shots, why I didn't incorporate one with the
pendulum? The screen shot was much less interesting than anything else as it
looked only like the joystick shown at left.
As desperation knows no budget I also ordered Squeak: A Quick Trip to
ObjectLand [Korienek et. al., 2002] during my investigations. This book also
did not deal with scripting using tiles. However, it does a good job of teaching
the fundamentals of object-oriented programming using an entertaining dialogue
between a hapless software engineer who is transported to ObjectLand and the
Affordances and Constraints
Based on all of the time I spent with Squeak, the following strengths
- Runs on many different platforms.
- Very powerful Object-Oriented Programming Language.
- Tile scripting is simple once the paradigm is understood.
- Tile scripts can be designed using numerous tests (conditionals), which
makes for a powerful combination if done well.
- Everything is an object.
- Multimedia capable.
- Has numerous other areas worth exploring.
Squeak has several obvious weaknesses:
- Tile scripting is limited to basic mathematical operations on numbers.
- The interface (menus, menu items, locations, terminology, etc.) is so different
from other programs on PCs or Macintoshes that it’s not easy to understand.
- Poor help system so troubleshooting is tedious.
- Plugins are not available for the most popular browsers.
- Occasional instability as the program crashed several times.
- Inconsistencies in the user interface and operation.
In short, Squeak is obviously a very powerful program but it’s not a polished
program. In playing with it and looking at the examples It would be a good program
for middle school students to explore assuming the teacher knows enough of the
basics and the interface to get them started and to translate messages for them.
had taken numerous hours stretched over a couple of months to get to the point
in Squeak where I realized that I couldn't create the simple pendulum by dragging
tiles. I wondered if I could do it another way? Since I have some familiarity
with Logo, I downloaded the
Logo trial. From the time I started installing the demo on my computer until I
had a pendulum swinging from a turtle (right) was approximately one hour. I'm
not a Logo power programmer—I keep learning new things as my students work with
their version of logo. (We use the free Windows-only
MSW Logo from Softronix.com.)
However, even with my limited knowledge MicroWorlds was very simple to get up
and running and it has an adequate help file with plenty of examples. Unless you
have a definite reason to use Squeak with students, Logo is a powerful, and much-easier-to-learn,
Guzdial, Mark, Squeak: Object-Oriented Design with Multimedia
Applications, Prentice Hall, Upper Saddle River, New Jersey, 2001.
Kornienek, Gene, Tom Wrensch and Doug Dechow, Squeak: A Quick
Trip to ObjectLand, Addison Wesley, Boston, Massachusetts, 2002.