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