[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