[Edu-sig] Accessibility to non CS types?

Paul D. Fernhout pdfernhout at kurtz-fernhout.com
Tue May 30 10:13:59 CEST 2006


Francois-

Well, then Python it is for as long as it works(*). :-) Thanks for the 
feedback on that.  [ (*)I know what I'm doing with __setattr_ and 
_getattribute_ must almost certainly be reducing performance by at least a 
10x order of magnitude, but so far I have not noticed... ]

And thanks for more kind words and offer of help. And anything you want to 
do to contribute would be wonderful, especially in terms of early feedback 
and later making documentation especially when the system settles down a 
bit (including perhaps a movie of yours for SourceForge? Or even a main 
page?). As for promotion, I don't want too many users just yet with the 
system in its early stages and still subject to major changes before it 
settles down (why I have not announced it to the general Python list), but 
in the long term that would be great. What a young project needs most is a 
handful of very interested people such as yourself, so low key recruiting 
like that even now would be wonderful. Also, if after using it a bit you 
decide to make a roughly prioritized list of desirable minor changes, that 
would help too.

Here is a new release as a zip file with a few files in it.
http://sourceforge.net/project/showfiles.php?group_id=165910&package_id=188385&release_id=420989
Or:
http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/releases/PataPata_v101.zip?view=log
This is mainly to fix some bugs I introduced when adding properties and wx 
widget support which prevented properly loading and saving world defining 
Python files. Files should now save and load correctly again (I noticed 
you did not show that in your movie :-). A big change from before is that 
I finally split up the single file into three files -- one for the GUI, 
one for the Example World and one for the Prototype library classes (which 
is why it is now in a zip file which expands to a directory). I also 
changed how the world file is loaded, from an eval to an import statement 
(which means the world files need to be in your Python path I think, or 
the local directory).

I also added a license.txt file clearly stating the current work is under 
the GPL (meaning applications written with it would also be under the 
GPL). Still, my intent down the road is that if there is any small pieces 
of core technology in PataPata that would make sense to be in the core 
Python distribution (like improvements to Python or Jython so they 
supported prototypes in a better way, or perhaps support related to hooks 
for networked debugging and such), those parts would (if all relevant 
contributors agree) be dual licensed under the latest Python license as 
well as the GPL. However, I think a lot of the system will end up GPL, 
including all the self-drawn widgets. I know the GPL precludes adoption by 
certain developers and uses, but I think it also is desirable by certain 
others including because it solves certain coordination issues as a sort 
of project constitution. Looking at the licenses you or Ian or some others 
posting here (e.g. Art's PyGeo) have chosen I think GPL should work out 
well enough for making a free educational platform (especially given that 
the more general programming skills kids learn with it are usable on any 
Python application). Also, it allows me to draw from GPL-d code such as 
from some GPL's parts of GNU Smalltalk or the GPL'd Pyxel (widgets in 
Python) which might help speed development of some parts and otherwise 
would be precluded if I did not go with the GPL.

A next goal is then to get some more widgets working (buttons, edit 
fields, bitmaps) and support basic HyperCard-like functionality, and do a 
simple card stack (possibly Bucky Fuller, but could be other topics; if 
you have a specific simulation idea or topic area you would like to see, I 
could make some widgets to support that). Important to this is supporting 
a system of nested views of some widgets inside another (or even nested 
worlds). Someday, perhaps even converting a lot of the examples from 
PythonCard might be a goal, so it makes sense early on to draw from 
PythonCard as much as possible, especially some of their naming conventions.

Using properties, the system can now wrap wxWidgets (or perhaps TK, not 
that I have tried that), and while that is useful, right now I just don't 
think I want to focus on that. Or to look at it from another point of 
view, what's the point of making a RAD (Rapid Application Development) 
system if I am just going to use it to wrap wxPython wrappers for 
wxWidgets (which is tedious)?  Building widgets its itself a good test of 
what the system can do and motivates further work on it. And if I develop 
new widgets using a few primitive operations based around BitBlit (or 
other simple drawing) like Squeak does it (drawing on whatever I can find 
on the web that uses Python) then I can probably also get them running 
under Jython without too much trouble, which means they could run as a 
Java applet. [Although something like Cairo might not be accessible to an 
Applet?] Basically, that is a Squeak-like approach, sending in mouse and 
key events into a world of custom Morphs. So I plan to pull out the 
wrapped wxButton and go to pure Morphs pretty soon. Still, it was worth it 
to actually wrap a few wxWidgets because that caused the improvements in 
the property system. Should doing the basic widgets prove too difficult, 
then I can fall back on wrapping wxWidgets or TK widgets or even GTK 
widgets etc.

If you know of any GPL compatible sources of widget sets in Python to draw 
from, that could really help a lot in terms of minimizing wheel 
reinvention (Dethe just posted some which I need to look at). Right now 
I'm thinking of PythonCard for the event naming structure, and maybe Pyxel 
and OcempGUI and GNU Smalltalk for some implementation ideas. The GUI uses 
wx right now, but I've been musing over using Cairo or something like it 
instead -- but it would be best if whatever is used can work both in 
Python and in a Jython Applet (either as a simple layer written for 
PataPata that works on both, or as one library like Cairo that might work 
in both). For now, my default is to just do some basic drawing with wx and 
then port it to Jython/Swing at some point.

I also have a few more things I want to add to properties from Smalltalk, 
mostly automatically tracking dependencies and sending changed messages, 
but more on that if/when I get to that.

You wrote: "make PataPata a good imagination amplifier !" That sounds like 
a good concept to always keep in mind as it develops.

All the best.

--Paul Fernhout
By the way, I was the one mentioning Ocaml :-) though I mainly see it as a 
"much better C" than something I want to be coding in all of the time. I 
prefer Smalltalk-like and Self-like systems with dynamic objects, 
including Python, but that's because, except for coding the VM or certain 
libraries, I am more interested in changing the system while it runs (like 
Smalltalk & Python can) than having the fastest system (like OCaml & C 
can). Naturally, for other people working on other problems (especially 
numerically oriented-ones), their priorities may differ.

francois schnell wrote:
> On 29/05/06, Paul D. Fernhout <pdfernhout at kurtz-fernhout.com> wrote:
> 
>>
>> Francois-
>>
>> Wow!  Thanks for making that Flash recording:
>>
>> http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html
>> That is a neat demo showing things I had not even thought of, like with
>> the jumping Morphs (and far beyond my presentation skills).
> 
> 
> 
> Well what I''m doing here is not really a "neat" presentation it's just 
> that
> when I find something interesting like this I like to show it to other
> people :)  (I'm also very much into Free Culture and Free Software
> advocating).
> 
> My wife is now
> 
>> finally impressed somewhat with what I am doing. :-) The version you are
>> using did benefit from her trying an earlier version and her feedback on
>> it, as several things she (also a programmer) tried that were hard or
>> confusing or generated errors, I made easier or fixed.
> 
> 
> 
> Oh , send also to her "mes homages" and congratulations from the french man
> :) (my English spouse still have nearly no idea what I'm doing with
> electronics bits and computers all over the place).
> 
> 
>> To answer your first question: To add a method, try right-clicking in the
>> yellow inspector pane [...]
>>
> 
> Dear me ... I didn't think you already have that and didn't try ... it 
> works
> great thanks ! fun times ahead :)
> 
> To answer your second question: To execute a method in another morph, you
> 
>> must first have a pointer to that morph directly. Ideally, that would be
>> supported by cut and paste in the inspector, but you can't do that yet.
>> However, you can, say, go to Morph 0 and add a field and call it "morph1"
>> and then when asked for the value, enter (without quotes):
>> "world.morphs[1]" which will evaluate to Morph 1 in the world. Then you
>> could reference "self.morph1" in any method of Morph 0, like to call
>> "self,morph1.X()" directly.[...]
> 
> 
> 
> Great my objects can now talk to each others ! It will be awesome when
> you'll also have "quick integration" of this. :) More fun times ahead :))
> 
> 
>> I'm guessing you're using WinXP? Nice to see the wxWindows button 
>> dragging
>> properly.
> 
> 
> 
> I'm mainly using  XP for software  I don't  have  on my  Ubuntu Dapper
> (like quick sreencasting, itunes/podcasts for my ipod, etc). I have one
> screen/keyboard/mouse and a switch quickly between the Linux and XP box.
> 
> So many times one does things and thinks no one notices or cares, so I'm
> 
>> very excited to see someone trying it (and going to the effort to make a
>> Flash video, too). Thanks again for trying it and the encouragement.
> 
> 
> 
> Well ... maybe it's why Einstein said it's difficult for people to
> understand what they never experienced (ie in our case a visual hands-on
> squeak-like familiarity of objects land) , that's also why he said that
> imagination is more important than knowledge. I believe it's Alan Kay who
> said that the computer revolution haven't started yet in education and that
> kids ~need "imagination amplifiers" => make PataPata a good imagination
> amplifier !
> 
> 
>> As
>> regards future evolution, right now I'm at a decision point as to whether
>> to push forward in Python further or, as per my previous discussions here
>> with Kirby where he rightly points to dominant paradigms in specific
>> languages, to jump to something like OCaml and use it to build a 
>> Self-like
>> prototype language on top of it (something like io, which looks great,
>>    http://www.iolanguage.com/about/
>> but with a Smalltalk/Self-derived keyword syntax, which I feel is
>> desirable), and so essentially producing a system that supports two
>> extremes of permissiveness at two different levels -- strong (but
>> implicit) typing at a speedy supporting layer and anything-goes 
>> prototypes
>> above that for most GUI development work. On the other hand, I am 
>> making a
>> lot of progress with Python (and not knowing OCaml much) and a Python
>> version has value to me for other reasons. So, this seems like a big vote
>> on keeping it all in Python for now?
> 
> 
> 
> Well I don't know OCaml and io but If I were you I would be suspicious of a
> "yankee" advising you a language written by french people ;)
> 
> I personally would *love* if you continue this in Python, I'm not 
> anymore in
> a testing phase, I've seen enough to "adopt" it and see how I can use it 
> for
> games/simulations/teaching and help where I can :)
> 
> I probably won't be able to help on the core "PataPata"  but my Python
> skills gets better and better (I'm quite new to Python).
> 
> I can help with :
> - bug tracking
> - playing with it and doing short examples/demos (games/simulations)
> - promoting and doc (especially in the French Python sphere)
> - i18n and French translation
> - I begin to know more and more the multimedia part of Python (sound, 
> video,
> streaming), could be handy one day
> - extend morphs to the analog world (data acquisition and automation)
> - I'm good at testing plenty of things and finding gems (useful if you 
> don't
> want  to reinvent the wheel). :)
> 
> Well it's bed time on this part of the globe =>  $ python dreamland.py
> 
> Please keep up your excellent work <subliminal> and use Python :)
> </subliminal>
> 
> francois
> 
> All the best.
> 
>>
>> --Paul Fernhout


More information about the Edu-sig mailing list