Welcome to the Squeak pages of Maarten Maartensz. See:  Map + Tour + Tips + Notes + News + Home



Squeak-subjects

 

Sep 12 2002


After a Squeaking year

I know Squeak now for a little over a year. I still think it is the best programming environment I know. Indeed,the programming environment is not comparable to any other one, including Smalltalk, for though Smalltalk is a precursor of Squeak, it has a somewhat different "feel" to it, for it lacks Squeak's Morphic and is more simple.

For reasons of health, explained elsewhere on this site, I have not written much about Squeak since April of this year, but I will continue these notes, and indeed am doing some other things for Squeak as well.

Squeak-related news of the moment, as far as this site is concerned, consists of three items:

1. I am reformatting this site to a font that will be more pleasant for ordinary eyes than the font I have used over the last few years.

2. Squeak does run also on Windows XP i.e. on yet another OS.

3. I found a project of Ned Konz, called "Connectors" that I like. It is a very neat way of connecting items on the screen, that is difficult to state more clearly in words, except that it must be an excellent tool to diagram all manner of things quickly and beautifully.

If you run Squeak, find this project - for example, on Bob Arning's Super-Swiki, which contains very many Squeak projects - load it down, file it in, and enjoy.

Maarten Maartensz
Sep 12, 2002

 

Sep 16 2002


The different dialects of Squeak

It probably is helpful to remark that there are several versions of the Squeak language that run in Squeak. Here is a picture (taking the full screen


 

Sep 16 2002 continued


The above picture is a screenshot from Squeak and shows four browsers for code with four dialects of Squeak of the same piece of coding.

If you have never seen Smalltalk of Squeak code, and coded in C or Java, you will see that the present code is more readable and has far fewer brackets.

Maarten Maartensz
Sep 16, 2002

 

 

Sep 17 2002


Squeak as total computing environment

There are four fundamental reasons why Squeak is not easy to comprehend, and they are related to each other:

1. it is a total computing environment
2. it therefore involves a programming language
3. the programming language is radically object-oriented
4. object-oriented languages are often "explained" in misleading terms

Now let's explain what is involved in these points

1. it is a total computing environment

It is this fact that makes Squeak so totally different: Instead of working in a radically simplified environment of widgets each of which has a behavior of which you do not have the code and do not get the full explanations, and that you can only change a little, you have an environment in which you can do everything a computer is capable of, in any way you please, only restricted by your own understanding of the environment and the programming language, for what you are working with is not a set of widgets but the programming environment of a universal programming language, where everything is fully given to you to understand and change.

And the fact is that, apart from Smalltalk, which is a precursor of Squeak, there is no total computing environment like it - and any alternative, like C++ or C# or Delphi, is radically different, because these are merely programming tools to write programs, and indeed to write predominantly (though not necessarily) programs as collection of widgets, and not at all themselves total  computing environments designed to work with a computer.

2. it therefore involves a programming language

This is a direct consequence of the previous point, but it means that the actual environment one works in is extra-ordinarily powerful, and - it is this that makes Squeak so different and quite unlike a widget-clicking environment.

Programming languages are intrinsically difficult - for they must mediate between the natural language of human users of computers, in a formalism that is simple enough to be processed by a computing machine, yet similar enough to a human language to be used and read and indeed programmed by human users. Also, the language of Squeak is different from other programming languages and is used in a different kind of environment.

3. the programming language is radically object-oriented 

The programming language is Squeak, which is Smalltalk + Morphic. In many ways, Smalltalk is the mother of object-oriented programming languages, and indeed it is a direct precursor and the inspiration of the Apple and Windows interface. Yet the Squeak approach to object-oriented programming is quite different from - say - Delphi or Java or C# or Visual Basic, all of which are nominally "object-oriented". In fact, these other "object-oriented" programming languages have taken over some techniques and ideas that started (mostly) in Smalltalk - but they do not immerse the uses in a total computing environment made from objects, in which the user has the full code of all the objects in the environment, and can directly access and change the code of any object that is working in the system, that is itself entirely composed from objects.

4. object-oriented languages are often "explained" in misleading terms

The final fundamental reason that makes Smalltalk and Squeak hard to get is that Smalltalkish languages normally, and since the early 1980-ies, have been "explained" in terms of metaphors and English that is quite unhelpful amd misleading and that obscures the real beauty of the code it seeks to clarify. These standard explanations of Smalltalkish code explain code in terms as if the code itself is speaking to the user and as if the code has the knowledge and desires of a human  being. Thus, the normal explanations of code in Smalltalk and Squeak have been on the pattern of "I am a foobar that knows how to foo though I desire to fee if I am fussed (thanks to polymorphism)", which in fact is categorical nonsense: Code and language have no understanding whatsoever, and cannot speak for themselves as human beings can, nor do they know, understand or desire things.

Fortunately, something can be done about the last point, and I have heard that some people involved in Squeak are rewriting the current explanations of Squeak in terms much closer to ordinary clear English than has been the practice in Smalltalk environments since their inception.

If this succeeds, Squeak will be delivered from a lot of unclear "explanations" of its code that in fact were obfuscations, and indeed Squeak will be considerably easier to understand - which is in the interest of everybody.

 

Maarten Maartensz
Sep 17, 2002

 

 

Oct 1 2002


More on Total Computing

The phrase "Total Computing" Like the phrase "Object Oriented" is a string that represents a metaphor. But it seems to me to name the difference between Squeak and other languages in a better way that "Object Oriented" or "Morphic". The reason is that all other programming languages I know, whether (supposedly) "Object Oriented" or not (say: like Java, like C#) seem firmly wedded to the opposite idea of what computing should be like: To restrict the user's possibilities with his computer to one specific set of activities, usually without source code, and with no or hardly any ways of altering the set of activities supplied. What you get, and what you learn to program, is a simple environment made up of a number of clickable widgets each of which is a severely limited, constrained, restricted aspect of a task a computer may do.

Squeak (and Smalltalk, but to a lesser extent, for it is a simpler language), by contrast, gives you the full power of computing and the full source code, and enables you to do and alter and extend (or limit) absolutely anything about what it presents to you in its environment.

The Helpsystem

In fact, a new Helpsystem is being written by me, and I am making fairly good progress. There are - on the moment - two versions of it: One in a Squeak image on my computer, and a (partial) html-copy of the text on this site.

The html-copy on this site lags behind from what I have done in Squeak, and is in itself and without Squeak rather useless. Also, it lacks the links in the original, and of course does not run with the power of Squeak behind it. Even so, there is at present quite a lot done, in a first version, and some of it can be inspected in html on this site: Start with The Helpsystem.

Incidentally: The text in the Helpsystem embodies my own judgements how Squeak should be explained, which are given elsewhere on this site at varrious places in the Squeak section. Much of this has been on line now for a year or more, and I lack the time, health and inclination to discuss my views extensively in e-mail. (And I certainly have not received anything remotely like a refutation, though I have discussed my views several times with several persons.)

My reason to write the Helpsystem is that I believe Squeak needs it, or something like it, to gain a wider audience and larger user community. That is: It needs a Helpsystem inside Squeak that explains the code in clear English (plus unavoidable technical terms), that also avoids animistic or metaphysical "explanations" of the form "I am a foobar that knows how to foo but desires to fee when I am fussed", that seem repellent to many (like the late Edsger Dijkstra and myself) and nonsense to many more. Since all of this can be completely avoided - e.g. thus: "Foobars foo and fee if fussed" - I have avoided it and removed it wherever I spotted it.

Maarten Maartensz
Oct 1, 2002

 

Oct 5 2002


Two useful recent extensions of Squeak

I installed two useful recent extensions of Squeak 3.2 #4956, namely Zurgle and the Refactoring Browser. Zurgle is by Jim Benson, and attempts to provide nicer interfaces for Squeak. There are two available at the moment, called Luna and Borg. I like the former, which is like Windows XP. Here is a a screenshot of a Squeak image with Zurgle:

Unfortunately, I do get rather many "primitive failed" errors at present with Zurgle in Squeak 3.2 #4956, but if this can be repaired and some further looks can be added, Squeak will look a lot better than it did. (Beauty is only skindeep, but it is human to be superficial.)

And it should be remarked that I am running Squeak on Windows XP, as does Jim Benson, and that - apparently - he imported the Tahoma and Verdana fonts for Zurgle. This I like a lot, but I do not know whether it works on Mac or Linux, for example.

<http://minnow.cc.gatech.edu/squeak/2286

The above is the link to Jim Benson's own introduction to Zurgle, and contains links to the stuff necessary to run get and run it.

 

The Refactoring Browser

The Refactoring Browser is a System Browser with extra facilities. Since the System Browser is the main tool to program with in Squeak it is very important to have one with many capacities. It is by Daniel Vainsencher

Here is an URL by which one can donwload it (1 MB)

http://modules.squeakfoundation.org/People/dvf/Packages/Refactory.st

So in effect there are now four types of System Browser for Squeak I got running inside Squeak:

- the standard system browser
- the package browser
- the whisker browser
- the refactoring browser

There also is Bob Arning's browser, but that I never got running. The package browser is a simple enhancement of the system browser, and divides the category-pane into two panes, which is convenient. The whisker browser (by Doug Way) is a browser within which one can open many more windows. Unfortunately, it doesn't run in Squeak 3.2. The refactoring browser adds quite a few facilities to the system browser. The way to go, it seems to me, is to combine the whisker and refacting browser into one new system browser.

Incidentally, the Refactoring Browser works also with Zurgle.

 

Illustration of the Helpsystem

For those who care for it, here is a screenshot of what results when one uses the Helpsystem in a standard Squeak 3.2 #4956 image.

What is shown is a System Browser plus two collections of hypertexts with Help.

 

Maarten Maartensz
Oct 5, 2002

 

Nov 8 2002


Recent developments in Squeak

There are some more or less radical changes happening to Squeak on the moment, it seems. These come under four headings

1. Failure of the modularizing of Squeak
2. Squeak Map
3. Growth problems
4. The birth of Croquet

1. Failure of the modularizing of Squeak

There has been an attempt to modularize Squeak, that is: To design a Squeak that is made up of loadable distinct modules each of which is also unloadable without side-effects.

There are several reasons to want to modularize Squeak, but the main one is that the images of a Squeak or Smalltalk programming environment tends to grow and grow, and the additions tend to get intertwined with what was there already. The result is often a quite complicated system that is difficult to make sense of and to disentangle.

One conceptually clean way to solve this problem is to rewrite Squeak in such a way that it works with modules. This is a complicated task, which was attempted by Henrik Gedenryd. He did not get the support he expected, and the result is that what he produced is only partially understood by most developers. Consequently, the present effort to modularize Squeak in a version 3.3 will be terminated and mostly undone.

This seems a sensible decision, if only because it is in fact impossible to develop code that only one or two persons mostly understand.

2. Squeak Map

Part of the effort of modularizing Squeak was to design a place on the internet where new parts of Squeak can be loaded by users. This has happened or at least is being developed. But it is hard to say what will be the precise impact of this without modules.

Incidentally, there is a conceptually simple if unclean solution to the problem that loading new changesets, new projects and writing new code will complicate one's image without any certainty this added complication can be easily undone or uncluttered.

The (partial) solution is to maintain many images with backup copies. These images one can use to play and tinker with, write code in, and load projects and code from others. The parts in such images one thinks are useful one can store on disk as a project or changeset and load in other images.

3. Growth problems

Squeak seems to suffer from some growth problems on the moment. These are in part due to the failed modular effort and in part to the way Squeak is being developend.

The problems with modules I have just sketched. The problems due to the way Squeak is being developed are due to the way Squeak came to exist: As an apparently incidental open source spin-off of research going on at Apple and Disney by the original designers of Smalltalk strengthened with some seasoned Smalltalk programmers. Together, these are known as "Squeak Central" and they wrote most of the code and decided which code ended up in the official release images of Squeak. Very soon after going public in 1996 a developer community grew around Squeak, mostly also composed - it seems - from seasoned Smalltalk programmers, some of whom contributed a lot of code that was also included in successive official releases of Squeak.

This worked fairly well up to 2001, when Squeak Central terminated the cooperation with Apple and with Disney.

Since then there is no official funding for the development of Squeak, and efforts by people involved in developing Squeak to set up a foundation of some sort to help Squeak have mostly come to nought, although there is a German foundation.

Efforts to make Squeak popular (Squeak News) or to have it taught in universities so far also have not succeeded in any major way. The main reason is probably that Squeak is rather difficult to come to understand quickly while it is ill-documented.

4. The birth of Croquet

At present a new initiative based on Squeak is being announced. It is called Croquet and seems to be intended to become what Java should have been - but in a 3D environment. Those who want to try have an url here.

  • http://www.opencroquet.org/about.html

but should be warned all there is at the moment is a rather sketchy pdf file and a 90 MB download of apparently rather bugged code. (Try http://www.opencroquet.org/ to find these.)

Two of the men from Squeak Central involved in Croquet are Alan Kay and Andreas Raab, and Croquet aims at being officially released for the general public somewhere in the summer of 2003. There also is a new foundation, called Viewpoints, that aims to develop Croquet.

I have read the pdf file on Croquet but have not yet downloaded or played with Croquet.

My own - none to wellinformed - guess is that Croquet is not a good idea. My reason is that too much attention seems to be given to working in 3D. This is itself somewhat gimmicky and not at all essential to computing. Also, there is the great conceptual and mathematical setback that computer screens are flat i.e. effectively 2D, and that any 3D effect on it is due to what amounts to mathematical trickery.

The working in apparent 3D may be managed by building on the present Squeak (and has its charms) but I doubt it is easily developed in a good programming environment, and I also doubt it is is useful outside contexts where 3D-appearances are important or essential.

Maarten Maartensz
Nov 8, 2002

 

Nov 26 2002


And more recent developments in plus changes on this website

A. Squeak:

In the previous note I remarked on some changes in the social process behind Squeak. (See especially the last two sections.)

What seems to have happened is that the original developers of Smalltalk, who are the original developers of Squeak as well, have left Squeak, and indeed left Squeak to "the public". This is a pity, for although Squeak is quite amazing it is not at all finished.

In effect, there are at present six persons who call themselves Guides, who attempt to set up something new, and who are qualified in the sense that they have been active for Squeak for a long time and know very well how to program in it.

Even so, this makes me rather pessimistic about Squeak's future, unless something else happens, for apart from considerable programming ability and enthousiasm for Squeak I see no evidence in these people of abilities to keep together a complicated social effort, get funding for it, and document Squeak and get it into universities.

I may be mistaken, and hope I am. In any case, what will be left will be the basics of a great programming environment in the hands of "the public", that may want to develop it - but have to find their way in a very underdocumented system.

B. Squeak News

Another effort that seems to have failed is Squeak News. At least - I have heard hardly anything from it for many months, and indeed it was never supported by the programming guys on the developers' list.

C. Documentation and Helpsystem

What definitely failed are my - considerable - efforts with the Helpsystem.

I was invited to write new comments by Ted Kaehler (one of the originators of Smalltalk) some time in the Spring of 2002, and decided to try to do so in spite of my bad health. Indeed, I wrote some 600 Kb of comments, totalling about half of the classes in Squeak - most of which has never been done before.

Since then - and over the past months - Ted Kaehler has let me know that he would like to give some feedback on this work, but alas, he has a new job and he has triplets. Otherwise, I have heard nothing whatsoever from "the Squeak community", as it styles itself.

Now this I don't mind much, but I do fear the net effect of Squeak as it stands is a lot of time wasted of quite a few rather bright people on what effectively will probably turn out to be a mere dream.

Ah well - and "thus it goes".

-> Fifth series of notes

Maarten Maartensz
Nov 26, 2002 


Welcome to the Squeak pages of Maarten Maartensz. See:  Map + Tour + Tips + Notes + News + Home