File under: development

blog/ Smalltalk

As a young(ish) coder, I read a lot of Paul Graham and Alan Kay, among others. They encouraged me to go out and learn new systems like Smalltalk and LISP, so I did. I am glad that I did. Smalltalk in particular was worth it. It's the last functioning system that isn't POSIX. It's a glimpse of something different, the way computing might have gone. There's nothing left that's quite like it. Certainly nothing so complete. There are plenty of systems that were different, but none of them have survived. Only Smalltalk was flexible and small enough to adapt and be ported to new systems, while still being complete enough and useful enough to be worth porting to a new system.

Everybody should go and learn Smalltalk. The current front runner is Squeak, a free and open version that runs on almost everything. Squeak lacks documentation and includes a lot of incomplete code, so the Pharo project is trying to take the best bits and release something that is stable and (a bit more) documented. I wish them the best of luck.

Every so often I get inspired and go look up all the smalltalk projects and see how they are going. I download a few, start them up, and see if any of them have got to the point where I could seriously use them. I read up on what the research teams are doing, try out their demos, and then put it all away again for another year. Today appears to be that day, possibly because doing all this still beats working on my website. Just.

Starting off with Squeak smalltalk. The Squeakers have the easiest getting started process I have ever seen. They have a single package that you download and open. It runs on every major operating system without any change. I'm incredibly jealous of it, especially after I spend two days trying to get GCC installed and working on my machine.

There's a new download, the SWiki. It's a normal Squeak image with wiki software added, which would be nice except I'm already using one of the several thousand other wiki softwares that have already been going for 10 years. Squeak needs more releases like this. There are a lot of great Squeak apps that are just too difficult to install, so having an expert do that part and release a complete app is a great idea.

So I move on to the standard Squeak image. I decide to try and install a simple app into it, so I fire up Montecello, and select a package at random, a Tic-Tac-Toe game. It installs and I look at the instructions for how to start it. Squeak features a great system where you can highlight any text on the screen and run it. It's incredibly convenient and useful, so naturally Montecello disables this, forcing me to type out the startup command by hand. Which then fails. Feeling someone bored and frustrated, I start debugging it, only to find that it is calling a method that doesn't exist, on one of the system classes.

I can't even start to imagine how this error occurred. Did the programmer add this method to the system class, then forget to package it in his release? Did the system maintainers decide that this method wasn't needed, and delete it? Regardless, my attempt at using Squeak ends yet again with 6 debugger windows open, trying to find why a simple demonstration project can't start.

The project that interests me the most, Squeak on Android, does not seem to have any check-ins in 5 years so I'm guessing it is mostly defunct. Which is a shame, because Squeak, and smalltalk in general, seem to be ideal for mobile devices. The two successor projects, CogAndroid and PharoAndroid are likewise defunct.

But there is an interesting project that actually works - SqueakJS. A Dr Freudenberg has managed to port Squeak to run in web browsers. This is completely awesome, and something I want to use in some real work at some point. Squeak has always had the promise of being a fantastic environment to develop User Interfaces, and now that I can districute it by simple uploading it to a webserver, I can think of many projects it will be useful for. It would be particularily useful for delivering corporate applications, and Applications As A Service.

So now I need to get back to work on my website....