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