<br><br><div><span class="gmail_quote">On 30/05/06, <b class="gmail_sendername">Paul D. Fernhout</b> <<a href="mailto:pdfernhout@kurtz-fernhout.com">pdfernhout@kurtz-fernhout.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>and later making documentation especially when the system settles down a<br>bit (including perhaps a movie of yours for SourceForge? Or even a main<br>page?).</blockquote><div><br>I would be pleased to help with that, maybe one or two neat "5 minutes programs" and also a collection of short "how-to".
<br><br>For now I've added quick "raw/draft" recording of :<br><br>How to add a method to a morph:<br><a href="http://francois.schnell.free.fr/bazar/patapata-add-method/patapata-add-method.html">http://francois.schnell.free.fr/bazar/patapata-add-method/patapata-add-method.html
</a><br><br>How-to send an order from one morph to another one:<br><a href="http://francois.schnell.free.fr/bazar/pata-send-order/pata-pata-send-order.html">http://francois.schnell.free.fr/bazar/pata-send-order/pata-pata-send-order.html
</a><br><br>Concerning the licences your choice seems fine to me and I also think that a wiki section helping to find our way in the 2D/3D jungle of Python would be a breeze :)<br>( I'll propably give a look at cairo and mirra later ).
<br><br>francois<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> As for promotion, I don't want too many users just yet with the
<br>system in its early stages and still subject to major changes before it<br>settles down (why I have not announced it to the general Python list), but<br>in the long term that would be great. What a young project needs most is a
<br>handful of very interested people such as yourself, so low key recruiting<br>like that even now would be wonderful. Also, if after using it a bit you<br>decide to make a roughly prioritized list of desirable minor changes, that
<br>would help too.<br><br>Here is a new release as a zip file with a few files in it.<br><a href="http://sourceforge.net/project/showfiles.php?group_id=165910&package_id=188385&release_id=420989">http://sourceforge.net/project/showfiles.php?group_id=165910&package_id=188385&release_id=420989
</a><br>Or:<br><a href="http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/releases/PataPata_v101.zip?view=log">http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/releases/PataPata_v101.zip?view=log</a><br>This is mainly to fix some bugs I introduced when adding properties and wx
<br>widget support which prevented properly loading and saving world defining<br>Python files. Files should now save and load correctly again (I noticed<br>you did not show that in your movie :-). A big change from before is that
<br>I finally split up the single file into three files -- one for the GUI,<br>one for the Example World and one for the Prototype library classes (which<br>is why it is now in a zip file which expands to a directory). I also
<br>changed how the world file is loaded, from an eval to an import statement<br>(which means the world files need to be in your Python path I think, or<br>the local directory).<br><br>I also added a license.txt file clearly stating the current work is under
<br>the GPL (meaning applications written with it would also be under the<br>GPL). Still, my intent down the road is that if there is any small pieces<br>of core technology in PataPata that would make sense to be in the core
<br>Python distribution (like improvements to Python or Jython so they<br>supported prototypes in a better way, or perhaps support related to hooks<br>for networked debugging and such), those parts would (if all relevant<br>
contributors agree) be dual licensed under the latest Python license as<br>well as the GPL. However, I think a lot of the system will end up GPL,<br>including all the self-drawn widgets. I know the GPL precludes adoption by
<br>certain developers and uses, but I think it also is desirable by certain<br>others including because it solves certain coordination issues as a sort<br>of project constitution. Looking at the licenses you or Ian or some others
<br>posting here (e.g. Art's PyGeo) have chosen I think GPL should work out<br>well enough for making a free educational platform (especially given that<br>the more general programming skills kids learn with it are usable on any
<br>Python application). Also, it allows me to draw from GPL-d code such as<br>from some GPL's parts of GNU Smalltalk or the GPL'd Pyxel (widgets in<br>Python) which might help speed development of some parts and otherwise
<br>would be precluded if I did not go with the GPL.<br><br>A next goal is then to get some more widgets working (buttons, edit<br>fields, bitmaps) and support basic HyperCard-like functionality, and do a<br>simple card stack (possibly Bucky Fuller, but could be other topics; if
<br>you have a specific simulation idea or topic area you would like to see, I<br>could make some widgets to support that). Important to this is supporting<br>a system of nested views of some widgets inside another (or even nested
<br>worlds). Someday, perhaps even converting a lot of the examples from<br>PythonCard might be a goal, so it makes sense early on to draw from<br>PythonCard as much as possible, especially some of their naming conventions.
<br><br>Using properties, the system can now wrap wxWidgets (or perhaps TK, not<br>that I have tried that), and while that is useful, right now I just don't<br>think I want to focus on that. Or to look at it from another point of
<br>view, what's the point of making a RAD (Rapid Application Development)<br>system if I am just going to use it to wrap wxPython wrappers for<br>wxWidgets (which is tedious)? Building widgets its itself a good test of<br>
what the system can do and motivates further work on it. And if I develop<br>new widgets using a few primitive operations based around BitBlit (or<br>other simple drawing) like Squeak does it (drawing on whatever I can find
<br>on the web that uses Python) then I can probably also get them running<br>under Jython without too much trouble, which means they could run as a<br>Java applet. [Although something like Cairo might not be accessible to an
<br>Applet?] Basically, that is a Squeak-like approach, sending in mouse and<br>key events into a world of custom Morphs. So I plan to pull out the<br>wrapped wxButton and go to pure Morphs pretty soon. Still, it was worth it
<br>to actually wrap a few wxWidgets because that caused the improvements in<br>the property system. Should doing the basic widgets prove too difficult,<br>then I can fall back on wrapping wxWidgets or TK widgets or even GTK
<br>widgets etc.<br><br>If you know of any GPL compatible sources of widget sets in Python to draw<br>from, that could really help a lot in terms of minimizing wheel<br>reinvention (Dethe just posted some which I need to look at). Right now
<br>I'm thinking of PythonCard for the event naming structure, and maybe Pyxel<br>and OcempGUI and GNU Smalltalk for some implementation ideas. The GUI uses<br>wx right now, but I've been musing over using Cairo or something like it
<br>instead -- but it would be best if whatever is used can work both in<br>Python and in a Jython Applet (either as a simple layer written for<br>PataPata that works on both, or as one library like Cairo that might work<br>
in both). For now, my default is to just do some basic drawing with wx and<br>then port it to Jython/Swing at some point.<br><br>I also have a few more things I want to add to properties from Smalltalk,<br>mostly automatically tracking dependencies and sending changed messages,
<br>but more on that if/when I get to that.<br><br>You wrote: "make PataPata a good imagination amplifier !" That sounds like<br>a good concept to always keep in mind as it develops.<br><br>All the best.<br><br>
--Paul Fernhout<br>By the way, I was the one mentioning Ocaml :-) though I mainly see it as a<br>"much better C" than something I want to be coding in all of the time. I<br>prefer Smalltalk-like and Self-like systems with dynamic objects,
<br>including Python, but that's because, except for coding the VM or certain<br>libraries, I am more interested in changing the system while it runs (like<br>Smalltalk & Python can) than having the fastest system (like OCaml & C
<br>can). Naturally, for other people working on other problems (especially<br>numerically oriented-ones), their priorities may differ.<br><br>francois schnell wrote:<br>> On 29/05/06, Paul D. Fernhout <<a href="mailto:pdfernhout@kurtz-fernhout.com">
pdfernhout@kurtz-fernhout.com</a>> wrote:<br>><br>>><br>>> Francois-<br>>><br>>> Wow! Thanks for making that Flash recording:<br>>><br>>> <a href="http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html">
http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html</a><br>>> That is a neat demo showing things I had not even thought of, like with<br>>> the jumping Morphs (and far beyond my presentation skills).
<br>><br>><br>><br>> Well what I''m doing here is not really a "neat" presentation it's just<br>> that<br>> when I find something interesting like this I like to show it to other<br>> people :) (I'm also very much into Free Culture and Free Software
<br>> advocating).<br>><br>> My wife is now<br>><br>>> finally impressed somewhat with what I am doing. :-) The version you are<br>>> using did benefit from her trying an earlier version and her feedback on
<br>>> it, as several things she (also a programmer) tried that were hard or<br>>> confusing or generated errors, I made easier or fixed.<br>><br>><br>><br>> Oh , send also to her "mes homages" and congratulations from the french man
<br>> :) (my English spouse still have nearly no idea what I'm doing with<br>> electronics bits and computers all over the place).<br>><br>><br>>> To answer your first question: To add a method, try right-clicking in the
<br>>> yellow inspector pane [...]<br>>><br>><br>> Dear me ... I didn't think you already have that and didn't try ... it<br>> works<br>> great thanks ! fun times ahead :)<br>><br>> To answer your second question: To execute a method in another morph, you
<br>><br>>> must first have a pointer to that morph directly. Ideally, that would be<br>>> supported by cut and paste in the inspector, but you can't do that yet.<br>>> However, you can, say, go to Morph 0 and add a field and call it "morph1"
<br>>> and then when asked for the value, enter (without quotes):<br>>> "world.morphs[1]" which will evaluate to Morph 1 in the world. Then you<br>>> could reference "self.morph1" in any method of Morph 0, like to call
<br>>> "self,morph1.X()" directly.[...]<br>><br>><br>><br>> Great my objects can now talk to each others ! It will be awesome when<br>> you'll also have "quick integration" of this. :) More fun times ahead :))
<br>><br>><br>>> I'm guessing you're using WinXP? Nice to see the wxWindows button<br>>> dragging<br>>> properly.<br>><br>><br>><br>> I'm mainly using XP for software I don't have on my Ubuntu Dapper
<br>> (like quick sreencasting, itunes/podcasts for my ipod, etc). I have one<br>> screen/keyboard/mouse and a switch quickly between the Linux and XP box.<br>><br>> So many times one does things and thinks no one notices or cares, so I'm
<br>><br>>> very excited to see someone trying it (and going to the effort to make a<br>>> Flash video, too). Thanks again for trying it and the encouragement.<br>><br>><br>><br>> Well ... maybe it's why Einstein said it's difficult for people to
<br>> understand what they never experienced (ie in our case a visual hands-on<br>> squeak-like familiarity of objects land) , that's also why he said that<br>> imagination is more important than knowledge. I believe it's Alan Kay who
<br>> said that the computer revolution haven't started yet in education and that<br>> kids ~need "imagination amplifiers" => make PataPata a good imagination<br>> amplifier !<br>><br>><br>>> As
<br>>> regards future evolution, right now I'm at a decision point as to whether<br>>> to push forward in Python further or, as per my previous discussions here<br>>> with Kirby where he rightly points to dominant paradigms in specific
<br>>> languages, to jump to something like OCaml and use it to build a<br>>> Self-like<br>>> prototype language on top of it (something like io, which looks great,<br>>> <a href="http://www.iolanguage.com/about/">
http://www.iolanguage.com/about/</a><br>>> but with a Smalltalk/Self-derived keyword syntax, which I feel is<br>>> desirable), and so essentially producing a system that supports two<br>>> extremes of permissiveness at two different levels -- strong (but
<br>>> implicit) typing at a speedy supporting layer and anything-goes<br>>> prototypes<br>>> above that for most GUI development work. On the other hand, I am<br>>> making a<br>>> lot of progress with Python (and not knowing OCaml much) and a Python
<br>>> version has value to me for other reasons. So, this seems like a big vote<br>>> on keeping it all in Python for now?<br>><br>><br>><br>> Well I don't know OCaml and io but If I were you I would be suspicious of a
<br>> "yankee" advising you a language written by french people ;)<br>><br>> I personally would *love* if you continue this in Python, I'm not<br>> anymore in<br>> a testing phase, I've seen enough to "adopt" it and see how I can use it
<br>> for<br>> games/simulations/teaching and help where I can :)<br>><br>> I probably won't be able to help on the core "PataPata" but my Python<br>> skills gets better and better (I'm quite new to Python).
<br>><br>> I can help with :<br>> - bug tracking<br>> - playing with it and doing short examples/demos (games/simulations)<br>> - promoting and doc (especially in the French Python sphere)<br>> - i18n and French translation
<br>> - I begin to know more and more the multimedia part of Python (sound,<br>> video,<br>> streaming), could be handy one day<br>> - extend morphs to the analog world (data acquisition and automation)<br>> - I'm good at testing plenty of things and finding gems (useful if you
<br>> don't<br>> want to reinvent the wheel). :)<br>><br>> Well it's bed time on this part of the globe => $ python dreamland.py<br>><br>> Please keep up your excellent work <subliminal> and use Python :)
<br>> </subliminal><br>><br>> francois<br>><br>> All the best.<br>><br>>><br>>> --Paul Fernhout<br>_______________________________________________<br>Edu-sig mailing list<br><a href="mailto:Edu-sig@python.org">
Edu-sig@python.org</a><br><a href="http://mail.python.org/mailman/listinfo/edu-sig">http://mail.python.org/mailman/listinfo/edu-sig</a><br></blockquote></div><br>