[Chicago] python intro for 13 yo -- suggestions?

Jason R Huggins JRHuggins at thoughtworks.COM
Tue Jul 11 17:37:32 CEST 2006


> jake elliott wrote:
> i have a 13 y/o staying here for a while and i'd like to help him find
> a more rewarding way to use his time than obssessively replaying every
> NES/SNES/gamecube game.

I know this might be an odd thing to say on a Python list, but you might 
want to consider pointing your 13 year old towards JavaScript first. Yup, 
JavaScript. Let me explain.

A brief tangent... Although I dabbled with BASIC in DOS as a kid, I 
remember *really* getting interested in programming back in '88 at age 12 
when I first saw HyperCard on an Apple Mac used in a science presentation 
by a professor at the local college. [I swear my Mom made me go, it wasn't 
my idea. :-) ] HyperCard has always been hard to categorize, but in this 
context, it was being used as a "poor man's PowerPoint". My jaw dropped in 
disbelief when, half-way through his presentation, the presenter noticed a 
bug with his "next page" button, switched to "edit" mode in HyperCard, 
opened the source code behind the button, fixed the bug, then continued on 
with the rest of his presentation.  Before I saw that, I never knew 
software could be changed on-the-fly like that.  (Granted, I was only 11 
so I was easily amazed then.) I spent the rest of that summer learning 
HyperCard and its scripting language, HyperTalk, so that I could find out 
how that professor accomplished such an amazing feat of editing live code 
in a running application.

It wasn't just me that was amazed by HyperCard. It served as inspiration 
for Tim Berners-Lee's and his colleague, [Robert Cailliau][1], in their 
original proposal for HTTP and the web, for [Ward Cunningham and his 
Wiki][2], and for [Brendan Eich][3] when he created [JavaScript][4]. 

[1]: http://www.bookrags.com/biography-robert-cailliau-wcs/index.html
[2]: http://www.artima.com/intv/wiki.html
[3]: http://tinyurl.com/m2wu3 
[4]: http://www.oreillynet.com/pub/a/mac/2001/08/17/goodman.html


Do I have a point here? Yes, I think so... :-) The closest thing I've seen 
that reminds me of the inspiring aspects of HyperCard today is TiddlyWiki 
-- A JavaScript powered wiki (ironic?) clone that runs self-contained in 
the web browser. There are many variations, but my favorite version is 
called [GTD Tiddly Wiki][5] for its look and feel improvements over [the 
original TiddlyWiki][6].

[5]: http://shared.snapgrid.com/index.html
[6]: http://www.tiddlywiki.com/

(A close second in the "gee-whiz that's cool" department is [Squeak][7] 
and the [Squeak-based Croquet project][8].)

[7]: http://www.squeak.org/
[8]: http://www.opencroquet.org/

The interaction of creating, editing, and saving "Tiddlers" in TiddlyWiki 
is pretty fun and reminds of editing "cards" and "stacks" in HyperCard. 
With just a web browser, your 13 year old can start using TiddlyWiki for 
storing virtual "flash cards" for school or just taking notes and keeping 
a journal.

There are still some gaps between what TiddlyWiki provides and what 
HyperCard provided out-of-the-box... Learning JavaScript would become a 
logical next step for adding features into TiddlyWiki like drawing and 
painting capability or simple animations. A fun project for your 13 year 
old might be to merge this [in-browser painting tool][9] into TiddlyWiki.

[9]:  http://caimansys.com/painter/

Since JavaScript and HTML are core technologies in many 'real' programming 
jobs, they'd be useful things to know, but of course, that's not the 
point. :-) If and when the time comes that your 13 year old wants to do 
even more "real" stuff with programming, the skills learned with JS and 
HTML would translate well when doing development in popular web frameworks 
like Django, TurboGears, or Rails.

Anyway, so I guess my real point is this-- I got interested in learning to 
program as a means to an end in doing cool stuff on the computer screen. 
HyperTalk was my "gateway drug" into learning the fun of dynamic 
languages, like today's Perl, Python, Ruby, Squeak, and JavaScript.  If 
you can find out whatever it is your 13 year old considers "cool" for a 
computer to do, encourage them towards that. Learning a programming 
language to accomplish those cool things will naturally follow the goal of 
getting that "cool" thing done. And in my opinion, a lot of that "cool" 
stuff is taking place in the web browser these days.

Not-so-secretly-trying-to-get-someone-to-reinvent-hypercard-so-i-don't-have-to-ly 
yours,
-Jason

:-)



More information about the Chicago mailing list