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> &lt;<a href="mailto:forman.simon@gmail.com">forman.simon@gmail.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;">
On 3/12/07, John Manoogian III (jm3) &lt;<a href="mailto:jm3@jm3.net">jm3@jm3.net</a>&gt; wrote:<br>&gt; very interesting! you mention visual interactive components like a<br>&gt; &quot;non-text-based GUI&quot; and &quot;3D environment&quot; - are there screenshots or demos
<br>&gt; of these?<br>&gt;<br>&gt; thanks,<br>&gt;<br>&gt; john<br>&gt;&nbsp;&nbsp;<a href="http://www.jm3.net">www.jm3.net</a><br>&gt;<br>&gt;<br>&gt; On 3/12/07, Antoine van Gelder &lt;<a href="mailto:hummingbird@hivemind.net">hummingbird@hivemind.net
</a>&gt; wrote:<br>&gt; &gt;<br>&gt; &gt; Bert Freudenberg wrote:<br>&gt; &gt; &gt; On Mar 12, 2007, at 10:27 , Simon Forman wrote:<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;&gt; I&#39;ve got something I think may be useful and relevant to this
<br>&gt; discussion.<br>&gt; &gt; &gt;&gt;<br>&gt; &gt; &gt;&gt; I have been toying for several years with a system that I eventually<br>&gt; &gt; &gt;&gt; named &quot;xerblin&quot; that provides a metaphor for computation that can span
<br>&gt; &gt; &gt;&gt; high level &quot;Desktop&quot; activities down to assembly language.&nbsp;&nbsp;By that I<br>&gt; &gt; &gt;&gt; mean that it puts grep and MOV into the same seamless framework.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; It&#39;s gorgeous.
<br>&gt; &gt;<br>&gt; &gt;&nbsp;&nbsp; - antoine<br><br>Thanks guys, the warm reception for my little hobby project is very<br>gratifying.&nbsp;&nbsp;I&#39;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.&nbsp;&nbsp;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 &quot;objects&quot; could be moved around with the mouse, and<br>they responded to mouse clicks in the same way as text in the<br>TextViewers.&nbsp;&nbsp;You could cut and paste them to and from the stack and
<br>build new commands out of existing ones by &quot;pasting&quot; words into<br>SequentialWords.&nbsp;&nbsp;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&#39;s message passing system, but it&#39;s not terrific and it&#39;s out<br>of sync with the current architecture so I&#39;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 &quot;Physics for Game Developers&quot; into python and<br>used it to provide a simple coordinate transformation &quot;pipeline&quot; for a
<br>Tkinter Canvas subclass.&nbsp;&nbsp;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.&nbsp;&nbsp;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&#39;s kids&#39;<br>GUI elements.&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;for (k=0; k &lt;= 10; k++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h = 10;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<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.&nbsp;&nbsp;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.&nbsp;&nbsp;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>&quot;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.&quot;&nbsp;&nbsp;--H. P. Wells, &quot;A Short History of the
<br>World&quot;<br></blockquote></div><br><br clear="all"><br>-- <br>the blog is back: <a href="http://blog.jm3.net">http://blog.jm3.net</a>