Programs like these (and the environment itself) are part of the reason Heeg waxes poetic, asserting that Smalltalk is a "vision of the ways people might effectively and joyfully use computing power" and further that "Smalltalk is an addiction. There is Joy associated with Smalltalk programming." Only programmers can understand comments like these. Having worked with Smalltalk, I do. I can also attest to the power of the environment- full dynamic polymorphism on the class side; portable parameterized blocks; a rich collections hierarchy; extensive standard (cross-vendor) class libraries; the list goes on.
So Smalltalk must be incredibly popular, right? I don't know how many people will attend the 2006 JavaOne conference this year, but I would guess it will be in the high thousands. By comparison, I'd hazard that less than 200 attended the Smalltalk track at the Smalltalk Solutions/Linux World conference. Why? I believe the answer comes down to outreach.
First, universities tend not focus on Smalltalk-based curricula. Though Smalltalk is an excellent system for teaching OO concepts, its relative obscurity in industry may drive course developers to go with more prevalent alternatives in order to attract enrollment. Though one might argue that universities shouldn't have to worry about these things, one might also be wrong.
Let's say you've been able to surmount that hurdle and have managed to become a Smalltalk convert all on your own. You've spelunked around with the code browser and have become enamored with the power of the language and the overall system. Do you then make an honest effort to turn someone else on? Generalizing heavily, I've noticed that many Smalltalk developers carry a larger-than-life chip on their shoulders with respect to the superiority of the language over any possible alternative. In addition, they become defensive at discussing things that Smalltalk is perhaps not as good at (they may even tell you there is no such thing).
For example, Java came to prevalence when applets started appearing on the web. The Java VM alowed the loading of classes over the network, on an as-needed basis. There was thus a mechanism built into the virtual machine to discover and load only those classes that happened to be used by that instance of the application. By comparison, the Smalltalk image is monolithic (it is noteworthy that most running Smalltalk processes will fit in less memory than an equivalent Java process, but at the very least it is a valid point of discussion). There are other examples, of course.
The seeming inability of some developers (Smalltalk or otherwise) who really love some construct is to assume a defensive posture about any and everything associated with it more than a bit of a turn-off for would-be converts. In the Smalltalk world, instead of focusing on the features of the system that attracted them in the first place, engaging in measured envangelism, and spreading the word by example, developers almost seem to berate those who haven't yet discovered it, e.g. "You've never tried Smalltalk? Then you've never programmed!" This is geekdom at its worst. To the listener, attitudes like this beg the question "If it's so great, why aren't more people using it?", which of course quickly descends into a circular conversation.