Building user interfaces in Squeak
24 December, 2008

Chris Muller has released a thoroughly updated and documented version of his user interface framework Maui. Chris has described Maui as a “naked objects” Morphic-based UI builder that allows rapid UI creation based on object-message composition.
Maui includes a number of light satellite frameworks that supply various application services like documents, object-search, background process management with progress monitoring. It also provides a number of tools which allow applications to be synthesized quickly, without the need to write any user-interface code.
Chris has written a fifty page document describing Maui and giving examples of how to use it to build user interfaces for complex applications. In this document he also discusses future work for Maui, including the tantalising possibility of extending it to support the development of web applications.
SqueakDBX: beta release for OpenDBX plugin
22 August, 2008

A team of students from UTN (National Technological University in Argentina) co-ordinated by Estaban Lorenzano has just announced the first beta release of SqueakDBX, a package to allow Squeak to access OpenDBX functionality, so allowing users to perform relational database operations (DDL, DML and SQL) through a truly open source library. OpenDBX can interact with major database engines such as Oracle and MSSQL besides open source databases such as Postgresql and MySQL. SqueakDBX can also integrate with GLORP.
From the release notes, the key features for this release are:
- Tested on 3.10 and Pharo.
- Support for Linux and OSX.
- Proved on windows (through MinGW), but some changes in OpenDBX are still needed (next version will have full compatibility).
- Tested on PostgreSQL, MySQL and Oracle.
- MS SQL Server, Firebird, Interbase, SQLite, SQLite3 and Sybase tests will be available as soon as possible.
- Transactional management.
- Automatic conversion of resultset columns (a String) into squeak types.
- Large objects (clob, blob, arrays, and so on) are not yet supported.
- Special OpenDBX options: multi-statments, compression, paged results.
- Automated database connection release on garbage collection (although manual disconnection is recommended)
- Error handling
Some benchmark testing has been carried out, and the performance of the drivers appears to be comparable with native drivers.
The team are very keen to get feedback, bug reports, experiences on different platforms etc, and welcome any contributions. Sources can be download from SqueakSource (it requires FFI installed). Full documentation, installation and getting started instructions can be found at the SqueakDBX wiki page.
This project has been selected as part of ESUG SummerTalk 2008.
All new Monticello 2
15 August, 2008
Colin Putney has announced the release of Monticello 2.0, a ground-up rewrite, using a new, more flexible and more performant versioning engine. Monticello is a distributed optimistic concurrent versioning system for Squeak code written by Avi Bryant and Colin Putney with contributions from many members of the Squeak community.
The new version has a number of changes that Colin believes address problems uncovered while developing and using the first version. The new release manages versioning at a finer level: individual program elements – classes, methods, instance variables, etc. This means that Monticello 2 can be used to version arbitrary snippets of code. These might correspond to packages, change sets, or any other method a programmer chooses to separate “interesting” code from the rest of the image.
According to the discussion that followed the announcement, the new code also manages updates more quickly and with less network and disc traffic, is more extensible, and has better separation of core and UI elements (which will ease porting to other Smalltalks).
Older versions of the code are available on SqueakMap and SqueakSource, as well as the wiresong site, but in his email Colin says that the latest version should always be available at http://www.wiresong.ca/static/releases/Monticello-current.zip (I assume that requires a manual download and file-in – please let me know in the comments if there’s an easier way to do this). The zip file also has step-by-step instructions on how to use the (very different) user interface.
Swazoo 2.2 beta with fast file upload released
1 August, 2008
![]()
Janko Mivšek has announced that Swazoo 2.2 is ready for beta testing, with much improved upload (input streaming) performance as a main new feature. Swazoo is an open source, vendor agnostic, dialect neutral, highly performant Smalltalk web server with resource and web request resolution framework, born on a first Camp Smalltalk 2000 in San Diego. It is used as standalone web server for static content or for running web frameworks like Seaside and Aida/Web.
On Squeak it uploads 15 times faster than before, achieving 1.5MB/s throughput locally on a Linux 3.2GHz PC. On VisualWorks it is even more impressive: 30 times better, achieving 15MB/s throughput. This means only 20s for 300MB file upload. In both cases upload performance is about half of the download one due to additional MIME parsing needed.
Janko believes that in Swazoo we now have a Smalltalk web server with comparable performance to others in terms of upload performance, meaning that Swazoo is ready for demanding upload tasks like video uploading as well as video-serving (eg for screencasts) which has been possible for a while.
Currently running on Squeak, GNU Smalltalk, Gemstone, Dolphin and VisualWorks, Swazoo appears well on its way to meeting its goal, defined in a manifesto back in 2000: “to join forces and make a really good web server in Smalltalk, open source and for all Smalltalk dialects”.

Ramon Leon has released a tool he uses to simplify the development of Squeak applications. Called SandstoneDb, it’s a simple MIT-licensed object database that uses SmartRefStreams to serialize clusters of objects to disk.
Ramon needed “a simple, fast, configuration-free, crash-proof, easy-to-use object database that doesn’t require heavy thinking to use …[and] that allows me to build and iterate prototypes and small applications quickly without having to keep a schema in sync, or stop to figure out why something isn’t working, or why it’s too slow to be usable.”
By combining ideas from ActiveRecord and Prevayler, he’s certainly made it simple to use: define any objects that you want to persist as subclasses of SDActiveRecord and save your image to ensure the proper directories are created. To persist changes to your objects, call #commit on them. All data is written to disc when committed, and loaded into memory on startup.
There is a cost to this: Ramon notes that the object graph is rebuilt on startup, leading to an impact on startup times; holding all the data in RAM also means that there are practical limits on how much data you can manage in this fashion. He’s happy that this solution meets his needs when developing and deploying applications for his customers, but he’s leaving open the option of a future implementation being disc-based.
There’s a lot more information, including the philosophy behind SandstoneDb, a guide to the API, and usage notes at Ramon’s blog.
JSqueak – Smalltalk interpreter written in Java
21 June, 2008

Dan Ingalls has released JSqueak, a Squeak interpreter written in Java.
JSqueak (formerly known as Potato) is less than 5000 lines of code, available under the MIT licence. It runs the Mini2.1 image, which is included for convenience. This image contains a complete Smalltalk development environment, including:
- Rich text and Text editor
- File browser (no file access in VM yet)
- Code browser
- Decompiler (plus temp-name hints)
- Compiler
- Source Code Debugger
Dan wrote JSqueak to teach himself NetBeans and Java in the fall of 2006. Although he developed it as a throw-away project, he notes that
it has features that recommend it for further useful service:
- It is simple
- Uses Java objects and storage management
- Uses Java Integers for SmallIntegers
- It is general
- A weak(*) object table enables enumeration and mutation
- It is efficient
- Includes a method cache and an at-cache (**)
- Also a cache of common SmallIntegers
(*) – This does not mean wimpy — it’s a good sturdy object table — it just doesn’t hold onto garbage.
(**) – This is not an automated teller machine, but a device that speeds up array and stream access.These properties make it a reasonable base for teaching about VM design.
Dan adds that a number of things should be finished or improved if this VM is to see further use – it currently runs between 10 and 30 times slower than the C-based VM! If you wish to track or contribute to such projects, he invites you to add yourself to the (brand new!) JSqueak Interest mailing list.
You can find out more, and run the application as a WebStart Java Application at the JSqueak home page.
Sophie multimedia authoring environment hits 1.0
22 March, 2008

Great news from the Sophie team – they’ve now released Sophie 1.0, available now from the Sophie website.
Sophie is software for writing and reading rich media documents in a networked environment. The team’s goal is to open up the world of multimedia authoring to a wide range of people and institutions and in so doing to redefine the notion of a book or “academic paper” to include both rich media and mechanisms for reader feedback and conversation in dynamic margins.
The team has produced lots of tutorial and documentation information, including some screencasts showing how easy multimedia authoring can be. Download Sophie to find out for yourself!
Sophie is based on Squeak, and so runs on Mac, Windows and Linux operating systems.
Squeak 3.10 now released!
21 March, 2008

Squeak version 3.10 has just been released onto the ftp server. This marks the completion of the development effort and gives Squeak developers an opportunity to check compatibility of packages and ports; work is still under way to produce final and fully packaged release files and once this has been completed, the squeak.org images on the Download page will be updated to point to fully packaged versions of this new release. Normal Squeak users are advised to wait for the packaged versions to be made available before upgrading.
The goal of the 3.10 release was to improve the process of making Squeak releases and to improve the quality of the code. The release team concentrated on improving the coverage of unit tests, in making Squeak more modular, and in getting rid of non-core and unsupported code. In addition, many bugs were fixed.
Highlights were:
- Removal of non-core code.
- Consistent use of Monticello to manage package dependencies.
- Use of Package Universes for managing package compatibility issues.
- Bug policy requiring all fixes to include unit tests.
- Image fully tested on Mac OS X Tiger, Windows XP and Simply MEPIS 6.5 Linux.
Thanks to the 3.10 release team including Ralph Johnson, Edgar De Cleene, and the many other Squeakers who contributed ideas, bug-fixes and support. Their work has given us an excellent release, and one which will be a great starting point for eventual progress to 4.0.
Discussions and planning for 3.11 is already beginning on the mailing list, including topics such as:
- the removal of major packages such as eToys and Nebraska to become loadable via Package Universes, and use of MinimalMorphic instead of the full Morphic suite.
- migration to the improved packaging and loading functionality of tools currently under development such as DeltaStreams or Monticello2.
- all code under old licences has been identified, and its replacement will be a priority.
If you have an interest in how Squeak develops in the future, now is the time to have your say!
For more information about this release, see the 3.10 page on the swiki or the welcome notes in the image itself.
[Edited to clarify status of this release]
Seaside 2.8 Released!!
28 October, 2007
After a beta phase of two months we release the final version of Seaside 2.8. Most bugs fixed during this period were either long standing (already in 2.7), minor or portability related, Together with the dozens of Seaside 2.8 applications already in production today this gives a pretty good feeling about this version. A special mention goes to Roger Whitney, thanks to him we went from 99 commented classes to 144.
This release brings major performance and memory improvements:
- The rendering speed of an average page is up to twice as fast as with previous versions, because of the new character encoding architecture.
- An average application requires up to four times less memory than with previous versions. The reason for this is the optimized object backtracking and the reduction of stored continuations.
We have a list of new features [1] and a migration guide [2] on our homepage.
Squeak users can get it either from SqueakMap, Universes or directly via Monticello (Seaside2.8a1-lr.518). A special note for Squeak users, do not load Seaside 2.8 into an image that has already Seaside 2.7 in it. If you use Squeak 3.7 you will have to load SeasideSqueak37 as well.
VisualWorks users can get it form Store (2.8a1-lr.518,tkogan).
GemStone/S users can load Seaside2.8g1-dkh.522.
[1] http://www.seaside.st/community/development/seaside28
[2] http://www.seaside.st/documentation/migration
Cheers
The Seaside Team
Tangible User Interface for Squeak
5 October, 2007
Simon Holland yesterday announced on the squeak-dev list the release of a Squeak client for TUIO under the MIT licence. TUIO allows the rapid development of table-based tangible user interfaces (TUI) and multi-touch interactive surfaces.
TUIO uses the reacTIVision computer vision system to track physical objects in real time. This system is also used in reactable – the electronic music interface used by Björk in her current world tour.
The Squeak package includes the Tuio client and demonstration application program. To make practical use of Tuio for Squeak you will need a webcam or other camera, and should download the free Reactivision application for your operating system.
(Image shows reactable in action from http://mtg.upf.edu/reactable )


