[Edu-sig] webster van robot and tballsnake

Steve Howell showell30 at yahoo.com
Fri Sep 5 21:00:29 CEST 2008

Hey everybody,

I just wanted to introduce myself and a little project that I'm working on that might be of interest to this audience.

My name is Steve Howell, and I was one of the early project leaders for Guido van Robot, which was introduced to this mailing list a little under five years ago by Jeff Elkner:


To paraphrase Jeff, Guido van Robot (aka GvR) brings "Pythonic" improvements to the teaching language Karel the Robot.  Since 2003, the program continued to evolve, mostly under the stewardship of a Dutch programmer named Stas Z, who has helped to internationalize it, clean up its user interface, and maintain ports on four major platforms (Linux, OLPC, Mac, and Windows).


Although I'm proud of the success of GvR, I've always been a little frustrated by its lack of adoption.  Although you never know for sure how many people use an Open Source project, I think GvR, like many other desktop applications, has a high barrier for experimentation.  Although the IDE and language itself are very simple, you have to have Python and PyGTK installed, and then you have to download the software itself.

I've always wanted to try out a Javascript port of GvR, post it on the web, and see if it got any more traction.  This week I finally got a little time to do just that:


Warning: the program has only been tested on Firefox 3 so far (IE is unfortunately broken).

Webster van Robot is currently is a programming language and free software application designed to introduce beginners to one of the most fundamental aspects of programming--looping.  It allows novice programmers to graphically manipulate an environment of streets, avenues, and walls using a simple programming language.  (BTW this blurb is mostly plagiarized from GvR.)

Here is a small Webster van Robot that uses all of its features:

  do 2:

Here's how to see it in action:

  go to http://webstervanrobot.com/
  edit the program to say "do 2:" instead of "do 1:"
  click on the run button
  (try out Demo #2 as well if you like)

How is Webster van Robot different than Guido van Robot:

  1) It runs directly out of the browser!  No installation required.
  2) It has only one programming construct now.  This is mostly a function of where I am in the development process, but you can always argue that simplicity is a feature!
  3) I have slightly different built-ins.  I decide to build in both "turnleft" and "turnright," as well as a new builtin for "build_wall_on_left."  I've always thought that Karel and Guido should start with a blank slate and build their own environment, without having to deal with "world" files.

When I've floated around the Webster idea before, people have suggested some kind of Python back end, but I found it was easy enough to implement the whole thing in Javascript.  Javascript has its quirks, but it's not a terrible language to work in, and one of my goals for the new project is to make it ridiculously easy for people to install/distribute the software.

Although I think of Webster van Robot mostly as a toy at this point, it got me thinking about the deeper problems of programming language literacy.  I really believe that most people should be able to learn Python in their lifetimes, but there needs to be a gentle progression to get there.  I've seen Guido van Robot used in only a couple classrooms, but that experience was enough to convince me that there's still a quantum leap from minimalistic languages to Python itself.

I'm also a huge believer that web apps will always meet with less friction than desktop apps.

So here's my pie-in-the-sky goal--I'd like to have a Javascript virtual machine that can execute progressively more complicated subset/variants of Python.  Or, to put it another way, I'd like a Javascript engine that allows easy, pluggable extensions of Webster van Robot as students gain more confidence.  Here are the places where I see extensibility:

  1) Plug in new model/views.  Streets, avenues, and walls aren't for everybody.

  2) Plug in new builtins.  Move, turnright, and build_wall_on_left aren't for everybody.

  3) Allow a gentle progression through flow constructs.  Start with "do," then introduce "if," "while," etc.

  4) Allow "def" fairly early in the process too.

  5) Allow gentle introduction of data structures and variables.  (This is the place where Karel the Robot and Guido van Robot don't have any ambition to fill a gap, and I think this is where the quantum leap comes into play.  I also think the lack of basic variables and expressions make it harder to write "fun" robot programs too.)

So, I'm thinking Javascript has enough horsepower to create this basic framework, although you could still mostly drive the code from a Python back end.  Although I haven't coded anything yet, Webster van Robot has some of the very basic pieces to get it started, and I've come up with a name--"tballsnake," which is an anagram of "blank slate."  "T-Ball" is a metaphor similar to "training wheels," and then the "snake" refers to the end goal--Python proficiency.

Anyway, hope some of this is food for thought.


More information about the Edu-sig mailing list