Given Python's original goal was to be friendly to techies who are not specifically computer scientists, I'm finding it telling how few physics majors get any exposure to the language, even today. Even though it's used a lot on the job in many walks of life (per success stories), I think we could do better. I'm not blaming Python per se, but I think the OO paradigm shift left many competent coders behind, still remembering a golden age when they were able to get work done using Fortran or Pascal. Now they open a tutorial or book on such as Python, and immediately feel lost. There's a lot of new jargon, and not many references to languages they already know. Where is "Python for Pascal programmers"? One might say this is only a generation gap and people new to coding are picking up the latest and greatest concepts. Unfortunately, I'm seeing a lot of evidence that this is not true, at least not outside of CS departments, because it's the older generation that's teaching the younger, and now that they've lost proficiency, they're making do with inappropriate and inadequate solutions a lot of the time. In sum, I think Python could be reaching more people than it is, including in its original target demographic (technical people needing an easy computer language). For more background, check out my latest blog post here: http://worldgame.blogspot.com/2006/05/coffee-shop-physics.html Kirby
On 5/26/06, kirby urner <kirby.urner@gmail.com> wrote:
Given Python's original goal was to be friendly to techies who are not specifically computer scientists,
Actually, that was ABC's goal. Python's original goal was to be a scripting language for people already fluent in C and sh. -- --Guido van Rossum (home page: http://www.python.org/~guido/)
On 5/26/06, Guido van Rossum <guido@python.org> wrote:
On 5/26/06, kirby urner <kirby.urner@gmail.com> wrote:
Given Python's original goal was to be friendly to techies who are not specifically computer scientists,
Actually, that was ABC's goal. Python's original goal was to be a scripting language for people already fluent in C and sh.
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
Oh, OK. Not many scientists and engineers learn C or sh any more. ABC's developers had the right idea. Kirby
kirby urner wrote:
Not many scientists and engineers learn C or sh any more. ABC's developers had the right idea.
Yes, but they learn C++ and Java and things like that. It's all part of the Algol family, and that family has maintained a strong hold on the mainstream of language syntax.
At 22:23 26/05/2006, Ian Bicking wrote:
Not many scientists and engineers learn C or sh any more. ABC's developers had the right idea.
Yes, but they learn C++ and Java and things like that.
You wish. As part of my project I did a brief survey of what physics departments used to teach programming (research that didn't make it into the final report due to space). Most offered only an introductory course, often less than 1 lab a week for 10 weeks. C was still popular (as was Fortran) but I argue that due to the lack of time the scientists and engineers don't learn these languages, they learn enough to complete the exercises to finish the course. Not because they're inherantly lazy, but because there's way too much material to cover in the pitifully small time allocated. I wish it were different, but despite computational work being one of the important methods of research in physics, programming is not seen as a key part of a physics degree. And I thorougly concur with the comment about it being taught by the previous generation: many who were in charge of teaching or planning the computer modules had been using computers in the 1960's - which doesn't make it wrong, but provides a different outlook on today's systems. Peter
kirby urner wrote:
Now they open a tutorial or book on such as Python, and immediately feel lost. There's a lot of new jargon, and not many references to languages they already know. Where is "Python for Pascal programmers"?
As in my longer email previous, I think part of the answer is in better tools and libraries, and that is why HyperCard, VB, or Delphi became popular. While TK is nice, not having a good generally purpose default GUI development system with the power of, say, Hypercard that everyone points to as a no-brainer for any beginner to use is a weakness from a beginner standpoint IMHO. I think Self leads the way here in generality with one inspector that can be used to build GUIs, programs, or just sets of objects. And here is an attempt to bring that ease of use to Python, building on ideas from Self (and Squeak): :-) http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/PataPata/PataPata.py?v... Doesn't succeed yet perhaps in making that beginner friendly, but a start. (PythonCard is much better choice for current work though.) --Paul Fernhout
On 26/05/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
I think Self leads the way here in generality with one inspector that can be used to build GUIs, programs, or just sets of objects. And here is an attempt to bring that ease of use to Python, building on ideas from Self (and Squeak): :-)
http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/PataPata/PataPata.py?v... Doesn't succeed yet perhaps in making that beginner friendly, but a start. (PythonCard is much better choice for current work though.)
Hello, I've just gave a try to your "PataPata" and I already have fun with it while "testing" it :) http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html Will it be possible to directly add new methods to morphs (maybe from the inspector ? ... when I saw the 'grow' method I wanted a "shrink' one ...). Is there a way yet to execute a Morph method from another Morph (if I click on Morph 1 I'd like to execute method X from Morph 2 for example). I find your "PataPata" promising and I'm eager to see how it evolves :) francois --Paul Fernhout
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
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). 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. Your presentation almost made me think of one of Alan Kay's Squeak demos. Perhaps your familiarity with Squeak made is easier to understand what I was attempting with PataPata (especially without any tutorial documents)? Now that you made a video, perhaps that spark of enlightenment will spread. :-) To answer your first question: To add a method, try right-clicking in the yellow inspector pane to get a menu which will allow you to make new child or sibling nodes of a prototype you are inspecting (or to copy, rename or delete a node). [Unless that is a bug under wx on your XP? system?] (I used to have a help text about the right click menu but it got dropped a while back.) "Child" nodes are children of the node you have selected, usually you want to create a "sibling" node if you have already clicked on a method or value of a Morph or Prototype you are interested in. To make a new method, you enter the name of the new field in the first popup box. Then after clicking OK there, a second popup box comes up where you need to enter "method" without the quotes, and after you click OK there you can modify the default method text in the edit window below the yellow inspector pane. You need to enter "method" as otherwise the system will try to evaluate what you enter, which by default is a string. It's a bit awkward to use the popups (as opposed to, say, a custom new value entry dialog with radio buttons for method, string, or expression type), but it was easy to implement as a first try. While it is more prone to error, instead of typing "method", you could also enter a PrototypeMethod constructor to evaluate as an expression, such as: PrototypeMethod(None, "def foo(self): print 'foo'") which I just tested by adding a foo field to Morph 0 and then entering the following in the PyShell (the scrolling window at the bottom): world.morphs[0].foo() which should print "foo". Not sure how robust this second approach is though; some tricky things happen with how PrototypeMethods are bound to instances which I still need to clean up; I still need to resolve a bug related to copying morphs with local methods where modifying the original sometimes modifies the copy. 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. I just tried that, adding "self.morph1.x += 10" to the mouseDown method of Morph 0, so now you can click on Morph 0 and Morph 1 moves (what I guess might be your intent, based on your demo?) You could also just reference "self.world.morphs[1]" directly in your methods, but if you add or delete morphs in the world, then the morph that position 1 of that list refers to might change. I'm guessing you're using WinXP? Nice to see the wxWindows button dragging properly. Under wx GTK 2.6 there is a library bug where a button only moves when you let go of it as it; otherwise the button eats all mouse events after you click in it until you release it; PythonCard has the same issue under GNU/Linux witht hat GTK version; one reason I am considering drawing my own widgets. 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. 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? All the best. --Paul Fernhout francois schnell wrote:
On 26/05/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
I think Self leads the way here in generality with one inspector that can be used to build GUIs, programs, or just sets of objects. And here is an attempt to bring that ease of use to Python, building on ideas from Self (and Squeak): :-)
http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/PataPata/PataPata.py?v...
Doesn't succeed yet perhaps in making that beginner friendly, but a start. (PythonCard is much better choice for current work though.)
Hello,
I've just gave a try to your "PataPata" and I already have fun with it while "testing" it :) http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html
Will it be possible to directly add new methods to morphs (maybe from the inspector ? ... when I saw the 'grow' method I wanted a "shrink' one ...). Is there a way yet to execute a Morph method from another Morph (if I click on Morph 1 I'd like to execute method X from Morph 2 for example).
I find your "PataPata" promising and I'm eager to see how it evolves :)
francois
--Paul Fernhout
On 29/05/06, Paul D. Fernhout <pdfernhout@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
On 26/05/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
I think Self leads the way here in generality with one inspector that
can
be used to build GUIs, programs, or just sets of objects. And here is an attempt to bring that ease of use to Python, building on ideas from Self (and Squeak): :-)
http://svn.sourceforge.net/viewcvs.cgi/patapata/trunk/PataPata/PataPata.py?v...
Doesn't succeed yet perhaps in making that beginner friendly, but a start. (PythonCard is much better choice for current work though.)
Hello,
I've just gave a try to your "PataPata" and I already have fun with it while "testing" it :) http://francois.schnell.free.fr/bazar/patapata-test1/patapata-test1.html
Will it be possible to directly add new methods to morphs (maybe from
francois schnell wrote: the
inspector ? ... when I saw the 'grow' method I wanted a "shrink' one ...). Is there a way yet to execute a Morph method from another Morph (if I click on Morph 1 I'd like to execute method X from Morph 2 for example).
I find your "PataPata" promising and I'm eager to see how it evolves :)
francois
--Paul Fernhout
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
On 5/29/06, francois schnell <francois.schnell@gmail.com> wrote:
On 29/05/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
Francois-
Wow! Thanks for making that Flash recording:
I echo my thanks. These kinds of video demos with audio are very useful. I'm pleased you have become so enthusiastic about Paul's work. Kirby
kirby urner wrote:
I'm pleased you have become so enthusiastic about Paul's work.
I know you know this, but just as an obligatory disclaimer, if PataPata is any good, while I can (and will :-) certainly take some credit for yet another attempt at putting constructivist educational ideas (and a prototype-programming paradigm) into a Pythonic context, the vast bulk of the ideas are coming through others like David Ungar, Adele Goldberg, John Maloney, Randy Smith, Maria Montessori, Dan Ingalls, Alan Kay, Seymour Papert, Grace Llewellyn, Diane Balestri, David Ferguson, and so on -- even Richard Stallman for the free software movement, and of course Guido van Rossum, for making Python so approachable and already prototype-ish. So, "shoulders of giants" and all that. :-) By the way: "Shoulders of Giants -- A Paper on the Inevitability of Open Source Dominance" http://www.cyber.com.au/users/conz/shoulders.html And there is nothing like even one interested user to motivate improvements. It's not so much recognition as just the thought it might actually be useful(*) and so worth the continued investment of time relative to other priorities and interests. --Paul Fernhout (*) From Winnie-The-Pooh: Chapter 7: "Piglet was so excited at the idea of being Useful that he forgot to be frightened any more, and when Rabbit went on to say that Kangas were only Fierce during the winter months, being at other times of an Affectionate Disposition, he could hardly sit still, he was so eager to begin being useful at once."
I know you know this, but just as an obligatory disclaimer, if PataPata is any good, while I can (and will :-) certainly take some credit for yet another attempt at putting constructivist educational ideas (and a prototype-programming paradigm) into a Pythonic context, the vast bulk of the ideas are coming through others like David Ungar, Adele Goldberg, John Maloney, Randy Smith, Maria Montessori, Dan Ingalls, Alan Kay, Seymour Papert, Grace Llewellyn, Diane Balestri, David Ferguson, and so on -- even Richard Stallman for the free software movement, and of course Guido van Rossum, for making Python so approachable and already prototype-ish.
Yes, I also acknowledge Stallman in my writings about Gnu Math for obvious reasons. Just today in fact: http://controlroom.blogspot.com/2006/06/gnu-math.html I also admire many of the constructivists you mention. Adele I met at an OSCON in 2004 I think it was (she listened to my Pythonic math talk, along with Guido). She emphasized to me how backward the math faculties were, helping me see why we'd need to use TV and the Internet more, if gnu math were to have a hope in hell. Alan was fun to drink beer with in London. Seymour I've not met yet (hope to). We enrolled my daughter in a Montessori school for kindergarten. BTW, there's a small edge separating constructivism from constructionism, with some of the differences addressed in this paper: http://learning.media.mit.edu/content/publications/EA.Piaget%20_%20Papert.pd... Anyway, today is another long day doing OO programming for a hospital system (a client). Visual FoxPro mostly, with Python around the edges for janitorial and utility work. VFP is great for rapid GUI development, plus I like all the embedded SQL (part of the native syntax). Python is cleaner in a lot of ways. During PyCon 2005, I hung out with some guys in DC interested in converging the two cultures (Dabo http://dabodev.com/about ). http://mybizmo.blogspot.com/2005/03/pycon-2005.html Kirby
kirby urner wrote:
I also admire many of the constructivists you mention. [snip]
Wow, you sure get around, Kirby! :-) By the way, in my post on sources, I forgot to mention "Doug Engelbart", of course. His "mother of all demos" is still driving much of computing R&D today (including, perhaps, a lot of Alan Kay's work). You can see the original demo at: http://sloan.stanford.edu/mousesite/1968Demo.html Even if you don't want to watch the entire 90 minutes, there is a textual description there of what is presented. Perhaps making computers "accessible" to non CS types should involve teaching them more of the history of computing, i.e. how far we have *not* come. :-) If one taught that, one would want to include Alan Kay's comments (linked by Francois in another thread) http://www.redhat.com/archives/olpc-software/2006-April/msg00035.html on how hardly anybody wants to use post 1960s language ideas. :-) (Although, even in the 1960s, there was Lisp with first class functions, which mainstream Java still lacks. :-) While I'd rather have my three screen Debian GNU/Linux box and internet of today than his specific 1960s technology, clearly what Doug Engelbart's team demonstrated was such a quantum leap from what went before(*) that it really is barely matched in some ways by today's consumer systems, at least in spirit almost forty years later -- as around 1968 he demonstrated real-time collaborative audio and video conferencing and editing over a network, a dynamic extendable language, hypertext, graphics, the mouse, a chord keyboard, and so on. Have we really come that much further in four decades conceptually? In terms of chord keyboard use, for example, we're still behind his demo (his argument was learning to chord keys was a good investment for a professional, as beyond the improved speed, you could also mouse with one hand and chord text with the other). I did try to get Doug's newer effort to consider doing the next version in Python (as part of his "Unfinished Revolution II" Stanford course), as well as try to hook them up with the Zope people directly, but I had trouble prying them away from the grip of Sun's Java. :-) See for example: http://www.bootstrap.org/dkr/discussion/0215.html (I have long since taken down the experimental Zope site linked there, though.) Note: while I thought using Java six years ago was not a very good idea because at that time, beyond the language's clutter and limitations, the JVM was also an unstable "write once, debug everywhere" solution with limited libraries, now, six years later, while I still think Java remains a problematical language syntactically, I think the JVM itself is a reasonable deployment vehicle in many situations (i.e. for Jython applications) and the Java libraries themselves have finally gotten most of the bugs out and there are some fairly good free versions of JVMs (e.g. Kaffe) and supporting libraries (e.g. GNU Classpath). --Paul Fernhout P.S. I should also mentioned Neil Postman and Charles Weingartner, from their late 1960s book: http://www.amazon.com/exec/obidos/tg/detail/-/0385290098?v=glance P.P.S. (*) well, this is ignoring Ivan Sutherland's work on Sketchpad, http://en.wikipedia.org/wiki/Ivan_Sutherland or Vannevar Bush's Memex concept, http://en.wikipedia.org/wiki/Memex which both informed Doug Engelbert & colleagues' work (and which J.R. Licklider funded, and even relates to Theodore Sturgeon's 1950s writings). Vannevar Bush's 1940s Memex idea really seems like the origin of many of these ideas. http://www.theatlantic.com/doc/194507/bush By the way, here is a Python version of a Memex-like system I wrote a while back (included in a larger Python package): http://sourceforge.net/project/showfiles.php?group_id=6010 The implementation is in the included sample file "tkPointrelMemex.py". It is mentioned by me here with some usability tips: http://hardware.slashdot.org/article.pl?sid=05/07/19/2330201&threshold=1&tid=126&tid=198&tid=185&tid=103 Oh, and that article reminds me I did a Jython version of Memex too, see: http://pointrel.org/projects/memex/ which has a screen shot and links to the code here: http://pointrel.org/projects/memex/memex.py I guess I'm kind of working my way through the history of computing with Python. :-) First Memex, now sort-of a nod towards Smalltalk (and Self) with PataPata, and then maybe, someday, Augment. :-)
On 6/5/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
Even if you don't want to watch the entire 90 minutes, there is a textual description there of what is presented.
Yes, Alan Kay circled that video at our summit meeting, Kim too. I saw Guido take a peak at the Google version (as did I): http://video.google.com/videoplay?docid=-8734787622017763097
Perhaps making computers "accessible" to non CS types should involve teaching them more of the history of computing, i.e. how far we have *not* come. :-)
I noticed a tendency of some at our meeting to want to hide the gory details of whatever behind the scenes state management software the pros have to use, to create these friendly kindergartens. They didn't seem to want us to tour "the tunnels under Disney world" e.g. why would we ever talk about the various Linux supported file systems. Isn't that antithetical to our goal, of blissful user-independence from the underpinnings? But that's not MY goal. I'm not interested in insulating people beyond a certain level. Make playgrounds to get 'em started, but by all means start conducting tours of the dark side as they mature. It's the same thing we should be doing around the fast food industry. Don't paint over the slaughter houses with a lot of Ronald McDonald imagery. Show the whole industry in the bright light of day. Not incessantly, not while we're eating, but make sure books like 'Chew on This' don't get purged from the library. Let those kids who want to look behind the scenes do so. Otherwise all this "self-discovery" rhetoric is just empty BS.
While I'd rather have my three screen Debian GNU/Linux box and internet of today than his specific 1960s technology, clearly what Doug Engelbart's team demonstrated was such a quantum leap from what went before(*) that it really is barely matched in some ways by today's consumer systems, at least in spirit almost forty years later -- as around 1968 he demonstrated real-time collaborative audio and video conferencing and editing over a network, a dynamic extendable language, hypertext, graphics, the mouse, a chord keyboard, and so on. Have we really come that much further in four decades conceptually? In terms of chord keyboard use, for example, we're
For the sake of argument, let's so no. Coming up with these brilliant ideas was the relatively easy part. Implementing them to the point of talking "one laptop per child" still only a dream, was much harder. Steve Jobs had to dive in. A lot more talent than just Alan Kay's was required. And *still* we see a lot of room for improvement. There's no reason to gloat, I agree.
still behind his demo (his argument was learning to chord keys was a good investment for a professional, as beyond the improved speed, you could also mouse with one hand and chord text with the other).
If met a lot of chordist fans over the years. I think when it comes to personal interface devices, it's a rather personal decision. Which keyboard, which kind of mouse. I'll state preferences if asked (especially if we're setting up equipment I'm going to use), but I don't imagine myself prescribing for everyone else, saying thou shalt master the trackball or thumb thingy or whatever. Recommendations and personal testimony are welcome (like in commercial advertising), edicts from on high are not.
I did try to get Doug's newer effort to consider doing the next version in Python (as part of his "Unfinished Revolution II" Stanford course), as well as try to hook them up with the Zope people directly, but I had trouble prying them away from the grip of Sun's Java. :-) See for example: http://www.bootstrap.org/dkr/discussion/0215.html (I have long since taken down the experimental Zope site linked there, though.)
I don't think Zope is a good first exposure to Python code. Too complicated under the hood, too much going on that's from the specific knowledge domain (object databases and web publishing). This isn't to diss Zope as a product, nor Plone atop CMF. I've partially overlapped Plone and Zope world quite a bit -- joined a Plone sprint with Alan Runyan and Andy McCay among others, that time in Vancouver BC.
Note: while I thought using Java six years ago was not a very good idea because at that time, beyond the language's clutter and limitations, the JVM was also an unstable "write once, debug everywhere" solution with limited libraries, now, six years later, while I still think Java remains a problematical language syntactically, I think the JVM itself is a reasonable deployment vehicle in many situations (i.e. for Jython applications) and the Java libraries themselves have finally gotten most of the bugs out and there are some fairly good free versions of JVMs (e.g. Kaffe) and supporting libraries (e.g. GNU Classpath).
--Paul Fernhout
I have lots of good things to say about Java in my Saturday Academy classes. I don't appreciate it when language bigots say they're promoting Python, when all that means is talking cheap shots at other languages (which isn't to say everything about Java is equally wonderful).
P.P.S. (*) well, this is ignoring Ivan Sutherland's work on Sketchpad, http://en.wikipedia.org/wiki/Ivan_Sutherland or Vannevar Bush's Memex concept,
I never ignore Memex -- many citations to that Atlantic Monthly article over the years (I learned about it from Ted Nelson).
Right, that one. I was blathering about hypertext in the early 1980s as well.
I guess I'm kind of working my way through the history of computing with Python. :-) First Memex, now sort-of a nod towards Smalltalk (and Self) with PataPata, and then maybe, someday, Augment. :-)
A labor of love. Seems kind of solipsistic though, which is why I'm glad you've attracted some fans. That's what edu-sig is good for I think. Kirby
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... 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@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
On 30/05/06, Paul D. Fernhout <pdfernhout@kurtz-fernhout.com> wrote:
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?).
I would be pleased to help with that, maybe one or two neat "5 minutes programs" and also a collection of short "how-to". For now I've added quick "raw/draft" recording of : How to add a method to a morph: http://francois.schnell.free.fr/bazar/patapata-add-method/patapata-add-metho... How-to send an order from one morph to another one: http://francois.schnell.free.fr/bazar/pata-send-order/pata-pata-send-order.h... 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 :) ( I'll propably give a look at cairo and mirra later ). francois 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... 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.
On 29/05/06, Paul D. Fernhout <pdfernhout@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
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
francois schnell wrote: the 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
Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
On 5/29/06, Paul D. Fernhout <pdfernhout@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).
spread. :-)
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what
[snip] Now that you made a video, perhaps that spark of enlightenment will patapata was leading to). This is really neat. Congrats Paul! André
On 5/30/06, Andre Roberge <andre.roberge@gmail.com> wrote:
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what patapata was leading to). This is really neat. Congrats Paul!
André
If wanted to see similar narrated movies of rur-ple in action as well. Now that I see PP in that format, I'm even more eager to see us build the Python apps preview library. Kirby
On 5/30/06, kirby urner <kirby.urner@gmail.com> wrote:
On 5/30/06, Andre Roberge <andre.roberge@gmail.com> wrote:
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what patapata was leading to). This is really neat. Congrats Paul!
André
If wanted to see similar narrated movies of rur-ple in action as well. Now that I see PP in that format, I'm even more eager to see us build the Python apps preview library.
I have been planning to do this for a while and, in fact, have been contacted by the folks behind "showmedo" to do just that and post it on their website. I'll try to do one soon and will advertise on this list. André Kirby
Very nice demonstration; nice way to make it clear what PataPata is about! (The first thing I was wondering about was if there was a way to make a dynamic change apply to all current objects? Say, change all of their colors, or methods.) Also, you can make your videos using your favorite tool, Python! I've made a couple of videos of our Python-based robotics system, including a pure Python 2-D simulator, complete with sonar, infrared, bumpers, and simulated vision. I've also listed instructions on how to make the videos here with Python and VNC thanks to pyvnc2swf: http://pyrorobotics.org/video/ Not quite as smooth as some other methods, but not too bad so far. -Doug
On 5/29/06, Paul D. Fernhout <pdfernhout@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).
[snip]
spread. :-)
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what
Now that you made a video, perhaps that spark of enlightenment will patapata was leading to). This is really neat. Congrats Paul!
André _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
On 31/05/06, dblank@brynmawr.edu <dblank@brynmawr.edu> wrote:
Very nice demonstration; nice way to make it clear what PataPata is about!
Thanks Doug I begin to gather all this on a single page (while testing googlepages in the same shot...): http://francois.schnell.googlepages.com/patapata (The first thing I was wondering about was if there was a way to make a
dynamic change apply to all current objects? Say, change all of their colors, or methods.)
This would be interesting, especially for emergent systems simulations I imagine :) http://serendip.brynmawr.edu/complexity/course/emergence06/ I find this to be a fascinating subject. I've read Steven Johnson book (emergence) two years ago and "Out of Control" (Kelly) is waiting its turn on my "to read" pile of books. Also, you can make your videos using your favorite tool, Python! I've made
a couple of videos of our Python-based robotics system, including a pure Python 2-D simulator, complete with sonar, infrared, bumpers, and simulated vision. I've also listed instructions on how to make the videos here with Python and VNC thanks to pyvnc2swf:
http://pyrorobotics.org/video/
Not quite as smooth as some other methods, but not too bad so far.
Great and neat screencasts. I haven't seen the audio integration before with vnc2swf, I will try it, thanks. Pyrobotics seems also a very interesting project :) (I'm also interested in the electronic/Python field : http://www.liberlab.net/ ) francois -Doug
On 5/29/06, Paul D. Fernhout <pdfernhout@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).
[snip]
spread. :-)
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what
Now that you made a video, perhaps that spark of enlightenment will patapata was leading to). This is really neat. Congrats Paul!
André _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
francois schnell wrote:
Thanks Doug I begin to gather all this on a single page (while testing googlepages in the same shot...): http://francois.schnell.googlepages.com/patapata
Wow! Beautiful page. Thanks for that and the two new videos. I'm being mostly quiet because I am mostly coding(*). :-) --Paul Fernhout (*) ... coding a TK version. The wx widget dragging bug under GTK (plus other comments here including in the graphics library thread) led me to question using wx further for this. Yet, I want this thing to be usable quicker if people are interested right now than doing all my own widgets in something like Cairo (nice as that would be long term). So, throwing even more performance to the winds, I'm trying to make a TK version of PataPata for easy install since TK comes with Python by default (even on the Mac?), better accessibility to what Python programmers already know (e.g. your liberlab software is in TK), and hopefully be able to support a variety of embedded TK widgets (and Pmw widgets too, etc.). The very first PataPata proof of concept was with TK and had Morph copying issues, but that was before the properties work for wx, so now, bringing the two together, that works (you can now copy a TK button). BUT, I'm stuck on intercepting all ALT mouse activity so embedded widgets can be dragged without messing with their individual events handlers (which I could do as in a try with passing on right click menu events [like I did with the wx Button], but is inelegant and may have other problems). New code is in SVN at patatpata/trunk/PataPata/ (several files) and you can drag all but the Button, and menu interact with all morphs, but the inspector and shell are gone for the moment, so a big step backwards at the moment. :-) Not worth using, though it would be nice to know if it ran on other people's systems if you want to check it out from SVN (the wx version is still there, but renamed PataPataViewerWX). But if I *could* get the embedded widgets to drag, then I could fairly quickly make and maintain the development GUI in itself, as a separate Morph world of wrapped-TK-widgets Morphs. :-) Anyway, one Tkinter book later (_Python and Tkinter programming_) plus lots of newsgroup reading, and I'm still not sure how to do it correctly. Something about writing my own mainloop I think, to get the mouse event before the button or other widget does. But I have a few other leads too.
Paul D. Fernhout wrote:
BUT, I'm stuck on intercepting all ALT mouse activity so embedded widgets can be dragged without messing with their individual events handlers (which I could do as in a try with passing on right click menu events [like I did with the wx Button], but is inelegant and may have other problems).
Well, as a follow up, I could not find an easy way to do what I wanted elegantly, so rather than continue to be bogged down with that, for now I did it the cheap-and-dirty way of overriding mouse event handling in each widget, so now the TK version supports (in a bare-bones fashion) the TK Button, Label, Entry, and Text widgets (and the exampel world file makes one of each type). Also, I added into the source a slightly hacked version of the idlelib TreeWidget to get a tree. I put the source into SVN because I know at least under Debian that Idle is a separate install, so I didn't want to count on that being there for now, though I would have rather used a library version of a tree. Still no inspector or shell (although I guess I could eventually drop in a TK Idle editor window or shell now that it supports wrapping TK widgets. :-) Anyway, hopefully it shows the hope that those non CS types could soon be dragging their Tkinter GUIs around and customizing them as Francois demonstrates. And after that, hopefully someday it is on to Cairo. :-) --Paul Fernhout
Andre Roberge wrote:
Indeed! This is really neat. I had downloaded a much earlier version which left me rather underwhelmed (probably because I had no clue as to what patapata was leading to). This is really neat. Congrats Paul!
Thanks for the encouragement. --Paul Fernhout
participants (8)
-
Andre Roberge
-
dblank@brynmawr.edu
-
francois schnell
-
Guido van Rossum
-
Ian Bicking
-
kirby urner
-
Paul D. Fernhout
-
Peter Bowyer