Sunday, June 10, 2012

Setting up my Smalltalk environment

The Motivation

I have been using "One-Click" Smalltalk images for Squeak and Pharo and I want a better organized.

Throw away images


Mariano Martinez Peck has posted a method for image building that I want to try out. Mariano describes that he is constantly building images and that images only last him three days. In Smalltalk images are the execution environment and while it is possible to keep an image for a long time and work on it day after day the final results for a programmer is the archived source files, because with those a new image can always be built.

There is a deeper philosophy involved. The Monticello packages are the valuable product from the programmer. The image files are transient they are just runtime used for development and deployment. The programming value is in the code.

VMs and Images


At the highest level there are only two things to worry about virtual machines (VM) and images. The VM contains all the operating system dependent code, .exe and .dll files in the case of windows.

To startup an image with a VM in a batch file you would





%VM% %IMAGE%


Where %VM% is a path to the VM executable and %IMAGE% is the path to the .image file.

There are a couple of implicit assumptions which are that all the .dll files are contained in the folder with the vm.exe file. And the .changes and base directory of the smalltalk environment image file.

Monticello Cache problem


Monticello caching is useful if that cache applies for all images and that can be accomplished by the following code for each image. This is likely part of my image customization in my image building script.



MCCacheRepository default directory: 
  (FileDirectory on: '/home/enter your directory/package-cache/')

Directory Layout

I create a folder called Smalltalk it containes the folders Pharo, Squeak, VM and Cache.

Pharo contains image files for Pharo, Squeak contains image files for Squeak, VM contains folders with various VM configurations and Cache contains a Folder Montecello with the common cached packages.

Project images are created outside of the Smalltalk folder but refer within that folder as appropriate.