The Weekly Juan #4: "Smalltalk, Direct Manipulation and End User Programming"

Aaron Reichow revaaron at bitquabit.com
Wed Nov 15 02:50:19 UTC 2006


On Nov 10, 2006, at 2:08 PM, Jecel Assumpcao Jr wrote:

> Juan Vuletich wrote on Wed, 08 Nov 2006 21:55:22 -0300
>> Well, I don't know many Self programmers. In addition to John's  
>> opinion
>> (crucial for me), I have a good friend who worked a couple of  
>> years on
>> an application written in NewtonScript.
>
> Note that NewtonScript is a cross-development system, which makes it
> feel very different from a native development environment  
> independently
> of any other of its features. Just try something like  
> PocketSmalltalk or
> Resilient to see what I meant.

That's true to some extent. While most of my NewtonScript programming  
was done on the Newton itself using NewtDevEnv, an on-board IDE, I do  
have some experience using the cross-dev tools that run on a host Mac/ 
PC.  I seem to recall that in addition to the stale code and GUI  
layout you were working on, you could also be connected to the Newton  
and its live object ecosystem- it lacked the ultimate power even  
Smalltalk-80 has, but it was closer to ån image-based Smalltalk way  
of doing things than writing C.  You had access to live objects, etc  
if you were connected to the Newton when doing development.  If you  
added a VNC server for the Newton and a tool like ViewFrame, you got  
even closer- it is cross development, but nothing like you have with  
Pocket Smalltalk, which is 'dead' rather than 'alive' like your usual  
Smalltalk.

>> He felt the same as John: the
>> browser is a great way to organize code.
>
> I agree. But to repeat what I said before, as we move to a more  
> modular
> and open system we will lose Squeak's "show me everything"  
> features. The
> system browser will only show you want you happen to have loaded in  
> this
> particular image, not something that is on SqueakMap; sending
> #allInstances doesn't let you see stuff that might live in some  
> project
> you haven't loaded yet and so on. This future can't be avoided and it
> would be a good idea for our tools to adapt to this new reality.

But how far along do you want to travel down this path?  If I were  
building a Smalltalk-ish environment for another dynamic language-  
REBOL, some Lisp, Python, whatever- my code browser wouldn't show me  
the classes of everything and everything ever written for it.  Don't  
get me wrong- it would be cool to have a way to do this for certain  
situations, but in the end, I want to see what I got.  If I need some
functionality, I go find a package, load it, and then look at it.

Am I misremembering, but doesn't VisualWorks have something sort of  
like you're describing? That is, you have what is in your image, you  
have stuff on a server somewhere, but you also have a bunch of cached/ 
downloaded packages in a goodies folder.  I have a vague recollection  
that VW will show you the stuff in that goodies folder, but greyed  
out- you can right click and load it, and then it's real. I might be  
hallucinating this, but if it isn't a possibility, this might be a  
possible model for getting what you're talking about.

About the #allInstances comment- do I really want to see all the  
instances of some class across all published projects on SqueakMap? I  
mean, there are cases when this would be awsome, especially if it  
were transparent- but that seems to be more the domain of a peer to  
peer Magma system, something entered in intentionally, not the  
default behavior when I'm looking around at the code and objects in  
my system.  I think a massively distributed system would be  
incredibly cool- but I don't think it makes sense just yet.

>> Besides, code based development
>> (i.e. not relying on the assembly of objects in a certain image)  
>> eases
>> team work and version tracking.
>
> Here I must strongly disagree. Back in 1997 I had two trainees working
> for me and doing some simple Self programming. Given that you can open
> more than one window on the same Self world and the cross computer
> features of the X Window system, they would sit at two different
> workstations on the same room (but with voice chat they could have  
> been
> very far away with the same effect) and engaged in very intense pair
> programming (a bit different from how the Agile folks do it).  
> Unless you
> had seen it yourself it is hard for you imagine how much fun this was
> and how productive they were (not counting crashes - the system should
> have been a bit more robust). All this using live objects.

I can second this, actually. I did some work like this using Squeak.   
We had a machine which was running Squeak and Nebraska but with no  
local keyboard/mouse/display. We both connected to it and worked.  We  
usually were on at different times and generally waited til the other  
was off, but we did do simultaneous coding a handful of times- and it  
worked pretty well.

This is hard to wrap your head around if you've not used a system  
like Morphic, in Self or Smalltalk.  I don't think most other GUI  
toolkits have the possibility for multiple hands. It's a shame,  
because this sort of forward thinking in Morphic seems to buy you a  
lot of cool stuff for relatively little cost.

> Sure, this is a total pain if you depend on CVS. But this is like  
> saying
> Mac text files are totally useless just because you have to edit them
> with Notepad.exe. Don't confuse the limitations of your current tools
> with inherent limitations of a certain style of development.

Well said. I might have to copy this for future reference- I often am  
trying to say precisely this to people new to Squeak in #squeak or in  
real life.

Regards,
Aaron


More information about the Squeak-dev mailing list