The reasons why I chose Cuis-Smalltalk

Dr. Nicola Mingotti
4 min readMay 23, 2022

This post is to reply a question received on a YouTube video.

When I started exploring Smalltalk it was the late 2018, but the first note I have written about Smalltalk is from July 2019.

At that time I found I had a few options: [1] Pharo, [2] Squeak, [3] Cuis, [4] VisualWorks, [5] GNU-Smalltalk. I bounced between them several times at the beginning. Because I had no idea what Smalltalk was and I wrongly assumed these were just different implementations of the same standard. Wrong. Wrong. Wrong. [1] — [5] are different beasts, you can’t copy code from one to another, it does not work like that. They share the foundamental idea that everything is an object and programming happens by sanding messages to objects. But, for example, objects name can be totally different from a system to another, especially for the GUI part.

GNU-Smalltalk then is really a different Smalltalk. It is just a matter of luck I did not start from there. It does not have a GUI by default. This can be interesting, but Smalltalk distinguish itself for its immersive development environment. Put it in another way, Smalltalk was born to be an operating system by today name scheme. The first Operating system with a Graphical user interface! Starting from a Smalltalk without GUI is like starting from a Lisp without a REPL, it just not the way to go if you want the real thing.

The first attempt I made was with Pharo. I started with ProfStef page of minimal interactive commands. At that time I did not understand how to use Smalltalk, I was using the the Workspace as some kind of Lisp REPL (think Python REPL if you are not familiar with Lisp; and then go study some Lisp). My idea of a program was to put a good number of lines into a workspace and then run them.

At some moment I moved to Squeak. Probably because there were more books about Squeak and also, I guess because I was using FreeBSD and Squeak was running there, or also because there were a lot of unusual thing like Etoy or the Connectors package which existed only in Squeak. So i moved my attention to it.

The first real program I made in Smalltalk was in Squeak, a small network service running at SLAC/Stanford. At that time I still did not master well several concepts but i was able to make something run, save it in an image and restart the image at my will. After 2 months of intense study of Squeak, during my Stanford time, after making a few videos, I stopped. What stopped me were a few things: [1] Fonts in Squeak (Retina display) [FreeBSD running inside a VMware Fusion machine in a Macbook pro] were really ugly, a displeasure to see them [2] I did not like to manage code via the image. The image contains state information which i find hard to manage, i really prefer the files concept. [3] Monticello, Metacello and all that things killed me [4] There are too many messages in the Squeak mailing list and almost nobody answered questions in the newbies mailing list. [extra] A very friendly person who helped me a lot in that time was Hannes Hirzel. We spent some time in trying improving the Swiki (Squeak Wiki).

I restarted using Smalltalk in the summer on 2020, when i was in holiday in Cyprus. This time i decided to give a try to Cuis. I tried Cuis for one single reason, fonts were nice to see, even in my high density screen.

In short time I realized Cuis had a few other things I liked. [1] The core is small, if you want more functions you add “modules” [2] These “modules” are stored in GitHub ! So it is strongly bound to a file development concept. I loved this [3] People answer in the mailing list ! [4] All the GUI has been redesigned and simplified. I developed a few programs in Cuis Smalltalk, some of them are under development right now.

At some moment I tried to to use VisualWorks. Why ? First reason is documentation. That software has real documentation that rocks. I think it was harder for me to learn Smalltalk than to learn CommonLisp or C because the open source Smalltalk(s) are so divergent and documentation is scattered in a thousand places or at all absent. Also, there is this nasty habits that you can’t understand at the beginning, you ask for help and people tell you “just dig around, you will find how to do it”. Doh ! This is true, but as a beginner coming from e.g. Python you can’t make it, it is impossible. The second reason is that VW can produce binaries, which is cool if you want to send your software to customers and you don’t want your code to be copied in a few seconds. This is a commercial product but I don’t mind paying if I get what I want.

What stopped me from buying a VM license? First, it does not work in ARM-32, which is a pity, I have a few software running in BeagleBone Black. Second, is that VW is really intolerant to high density displays and that make it almost unusable for me out of the box. I spent 2–3 days to make it work, with a trick, making a VNC connection to myself. But then I lost interest, this is a commercial product, I should not spend 3 days of hacks just to have the thing running, in Linux ! I mean the Mecca of programmers, come on. I am still interested in VM but since it costs money I need to find a suitable project to make the buying reasonable.

--

--