Hello Casey.

What a fabulous question.

I believe that the Raspberry Pi opens up the door to help everyone, especially kids, learn to create things in this (digital) world of ours, and not to just be a passive consumer, and that they will if they have an accessible way to do it.  I also believe we are on the cusp of a personal robotics revolution, much like where the personal computer revolution was thirty years ago.  Lastly, I believe that the best way to teach children to code today involved the use of a project written in Squeak, namely Scratch, and that tomorrow's tools can be even better!

I therefore propose the creation of a web-based graphical programming environment to allow kids to program robots built with a Raspberry Pi brain.

I think I've touched on the why, but let me get to the piece that I think is really inspiring.  Learnable Programming.  This is an essay by a fellow about how we can make programming more readily understood and more powerful; he has a great sense of vision, and he sites Squeak as being one of the really good environments that we have today.  [Implementing any sort of Learnable Programming system, whether for robotics or not, is a laudable goal, and his site is chock-full of inspiration for other things you might do].

Now, I don't believe that all of the things he suggests -- such as allowing a person to scrub forward and backward through a simulation -- can be accomplished directly with robotics.  But there are parts of it that sure could be, and with a full-on computer as the brain, there is memory to store the system state [such as sensor readings] at various times and explore it.

Why, then, do I still believe in programming robots over just programming computers?  Because it is engaging, and it gives kids a platform upon which to solve problems that are real instead of trivial.  I must say, being one who lives a sedentary lifestyle, and having moved to an acreage where the house is heated by wood-burning stoves, that after I went out (after referring to youtube for instructions) and split wood for a half hour, that I was struck by the fact that exercise is so much more enjoyable when you are accomplishing something, and I believe the same holds true for (school) exercises; for instance, when math is disembodied and becomes the mere shuffling of symbols, is it any wonder that kids don't like it, don't understand why it is important, and don't do it more than they have to, but when it has a context -- ex. meshing a 40 tooth gear with a 12 tooth gear lets you increase the torque by a factor of five and decrease the speed by the same factor (or vice versa), or, ex. here is what a PID controller is and did you know you are using something called 'calculus' -- then, suddenly, it is my belief they'll enjoy learning it, understand why they'd use it, and have their lives enriched because they have developed the strength to solve classes of problems that occur in real life.  (Take a look at some of the videos I've cited as supplementary materials to a presentation I gave, especially this one: Learning Science by Doing Science).

I mentioned that the best tool for teachings kids to program today is, in my opinion, Scratch.  Scratch 1.4 is written in a forked version of Squeak 2.8.  (There have been efforts to port it to something more modern, like Scat, but methinks that doing that would exceed the time constraints of your project).  [Scratch 2, in beta, is written in Flash].  BYOB/Snap (v3) is an advanced version of Scratch.  (v4 is written in HTML5, but I don't know the specifics). 

I learned Squeak so I could hack on Scratch and have developed something similar to what I'm advocating here -- Enchanting.  It lets kids program LEGO Mindstorms NXT robots.  I've been working on it in my spare time for 2.5 years or so now.  Even a 10-year old version of Squeak is such an awesome language to use.

There are several deficiencies, the most notable of which is that changes do not happen in real time -- kids have to go through a compile and upload step.  Another thing I've come to realize is it is very hard to collaborate simultaneously on a project.

Since I've read "Learnable Programming" and LEGO has announced a successor to the NXT robot set, I've been wondering how I'd make it better.

If I was starting from a clean slate and targetting the Raspberry Pi -- and this is the project I'm recommending -- I'd strongly consider:

The environment needs to be live; it needs to let you see what values sensors are reporting, and change the program while it is running -- it needs to be a lot like Squeak! -- and, for added awesomeness, implement as many of the tenets of "Learnable Programming" as possible in the time allotted.

You may be able to use Seaside or Amber to do this.  I know I'd be itching to try meteor-js, but, it is, unfortunately, not Smalltalk.

It is worth mentioning that Lady Ada has developed a custom OS for the Pi that allows you to program it from another computer; the Pi runs an embedded web server (and I think it is running python, but I haven't looked into it).  [Raspberry Pi WebIDE]

There are several projects to use the Pi for robotics platforms, I believe.  I haven't looked into them in depth and don't have links handy.  There is a robotics subforum at the Raspberry Pi site.  I'm mildly interested in having something that lets you build a chasis out of lego -- take a look at MAKE: Lego and Arduino Projects.  If you are to pursue a project like this, I'd recommend finding one design or project and supporting it well, allowing users to specify what sort of sensors and attachments they have on their robot, and where (and don't try to be all things to all people!)

There are many projects similar to a Scratch, some in a broswer, others not.  

I believe these ones are open source:
and that these ones are not:
Good heavens.  There is a whole Wikipedia page on Visual Programming Languages.

That's my idea.  Allow kids to learn by doing something "real", making use of a powerful and affordable brain for robots, and make programming enjoyable and learnable for all!

Cheers,
Clinton Blackmore



On Thu, Mar 7, 2013 at 11:48 PM, Casey Ransberger <casey.obrien.r@gmail.com> wrote:
Hello Squeakers!

My job search is turning up dead ends, hurry up and wait, and unfathomably boring prospects.

Screw all that! I want to do something cool.

I'm thinking about doing a KickStarter, but almost all of my ideas are either a) stuff no one else wants which only I could possibly think would be cool, or b) overly ambitious. The words Andreas used to describe my last idea: "a bit grandiose." Gift for understatement at times.

So I'm looking for something which could be completed by one or two geeks in six months to a year, which people actually want, to be implemented (at least in part) using Squeak, and to be released at the end under the MIT license.

I've floored my expenses, so I can make my own labor (relatively, for a guy living in Seattle) very cheap. By floored, I mean the room I sleep in isn't even tall enough to stand up in -- I do not presently meet the definition of a free-range chicken -- and I've disconnected my cellular service. I want to be an efficient engine for getting things that matter to me and other people done, rather than go on being some tool used to ship lucrative enterprise crapware.

So here's the $x question: what do you want me to do? I have a Raspberry Pi on order, so bonus points if you can work that in somehow.

The person with the best (realistic) idea will be credited for it.

Inspire me! And thanks for reading all the way down to the bottom of this message.

Casey
_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners