this seems like an interesting theoretical programming environment.<br>would it be useful, for, say, writing a report? or a poem? or drawing a map?<br><br><br><div><span class="gmail_quote">On 3/12/07, <b class="gmail_sendername">
Simon Forman</b> <<a href="mailto:forman.simon@gmail.com">forman.simon@gmail.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;">
On 3/12/07, John Manoogian III (jm3) <<a href="mailto:jm3@jm3.net">jm3@jm3.net</a>> wrote:<br>> very interesting! you mention visual interactive components like a<br>> "non-text-based GUI" and "3D environment" - are there screenshots or demos
<br>> of these?<br>><br>> thanks,<br>><br>> john<br>> <a href="http://www.jm3.net">www.jm3.net</a><br>><br>><br>> On 3/12/07, Antoine van Gelder <<a href="mailto:hummingbird@hivemind.net">hummingbird@hivemind.net
</a>> wrote:<br>> ><br>> > Bert Freudenberg wrote:<br>> > > On Mar 12, 2007, at 10:27 , Simon Forman wrote:<br>> > ><br>> > >> I've got something I think may be useful and relevant to this
<br>> discussion.<br>> > >><br>> > >> I have been toying for several years with a system that I eventually<br>> > >> named "xerblin" that provides a metaphor for computation that can span
<br>> > >> high level "Desktop" activities down to assembly language. By that I<br>> > >> mean that it puts grep and MOV into the same seamless framework.<br>> ><br>> ><br>> > It's gorgeous.
<br>> ><br>> > - antoine<br><br>Thanks guys, the warm reception for my little hobby project is very<br>gratifying. I'm a bit blown away.<br><br>You can see a screen capture of the 2D direct-manipulation GUI at one
<br>of the older sites I made:<br><a href="http://www.geocities.com/rogue_pedro/xerblin/screenshot0.jpg">http://www.geocities.com/rogue_pedro/xerblin/screenshot0.jpg</a><br><br>This was the version I presented at CodeCon. The green circles are
<br>ExecutableWords, the ovals are SequentialWords (at that time, they<br>were not subclassed from list but rather implemented as binary trees<br>both in themselves and in the GUI) while the pale yellow, light blue,<br>and dark blue circles represent strings, ints, and floats
<br>respectively.<br><br>These icon-ish "objects" could be moved around with the mouse, and<br>they responded to mouse clicks in the same way as text in the<br>TextViewers. You could cut and paste them to and from the stack and
<br>build new commands out of existing ones by "pasting" words into<br>SequentialWords. You could also edit existing commands just with the<br>mouse by pasting them into the GUI window and breaking them up and<br>
reassembling them.<br><br>The code for this is still around somewhere, and it implements a port<br>of Oberon's message passing system, but it's not terrific and it's out<br>of sync with the current architecture so I've left it out for awhile.
<br><br>As for the 3D GUI, I transliterated the quaternion-based C++ math<br>library from the back of "Physics for Game Developers" into python and<br>used it to provide a simple coordinate transformation "pipeline" for a
<br>Tkinter Canvas subclass. I got as far as having eight oval canvas<br>items whirling around at the corners of a virtual cube but I never<br>plugged those pseudo-3D items into the GUI objects I created for the<br>2D widget.
<br><br>You can probably see that this is just a quick and dirty way to get a<br>kind of 3D environment. I would have still had to make some<br>decisions: open space or virtual ground, method of navigation in 3D<br>space, method of manipulating objects in 3D space, would objects be
<br>anchored to things and if so what things, etc...<br><br>One neat idea would be to have each GUI element that modeled a<br>compound object control the coordinate transformation of it's kids'<br>GUI elements. That would allow for simple graceful representations of
<br>large and intricate trees just by applying a small rotation-and-scale<br>recursively at each level, and it fits nicely with the Oberon<br>component system.<br><br>At the conference, I took a piece of C code like this:
<br><br>void g(int h) {<br> for (k=0; k <= 10; k++) {<br> h = 10;<br> }<br>}<br><br>and converted it into a functionally equivelent xerblin command, then<br>I pasted it into the GUI frame and expanded it to show its full
<br>structure. The resulting tree from even so small a fragment of C is a<br>bit unweildy, as you might imagine, so the 3D environment could be a<br>great improvement over the 2D canvas. It will obviously require some<br>
fancy visualization to make this a viable way to introspect, say, grep<br>down to the metal.<br><br>Peace,<br>~Simon<br><br>--<br>"The history of mankind for the last four centuries is rather like<br>that of an imprisoned sleeper, stirring clumsily and uneasily while
<br>the prison that restrains and shelters him catches fire, not waking<br>but incorporating the crackling and warmth of the fire with ancient<br>and incongruous dreams, than like that of a man consciously awake to<br>danger and opportunity." --H. P. Wells, "A Short History of the
<br>World"<br></blockquote></div><br><br clear="all"><br>-- <br>the blog is back: <a href="http://blog.jm3.net">http://blog.jm3.net</a>