Tuesday, November 27, 2007

CSS Dock Menu in Seaside

Found some time this evening to wrap the CSS Dock menu demo in Seaside. It's really easy to wrap existing JavaScript/CSS components into Smalltalk classes. Here is a small tip:

  • implement a subclass of WAFileLibrary (like MyComponentFileLibrary)
  • go to http://localhost:port/seaside/config and select "Configure" on the files entry
  • select "Configure" on your new MyComponentFileLibrary class and upload files

As you will notice Seaside automatically converts the images, scripts or other resources into methods on your WAFileLibrary subclass.
You can then access the resource in your code using the "MyComponentFileLibrary / resourceMethod".

If you want to add the script to the html output overwrite the #updateRoot: message in your WAComponent subclass.

You can grab the code for the dock menu demo directly from here or browse the SeasideExamples project. It's actually in Squeak but the two classes could easily be ported to other Seaside platforms like VisualWorks. I also uploaded a demo to integrate the virtual earth control (IE only) into a seaside application.

The SeasideExamples project was initiated by Phillipe and is open for read/write, feel free to upload your examples.

Interview on the Seaside

Avi was interviewed for FLOSS weekly. Listen and download Seaside to change your web application development experience.

Interview on the Seaside

Avi was interviewed for FLOSS weekly. Listen and download Seaside to change your web application development experience.

Monday, November 19, 2007

J2EE webapps ...

J2EE is still painful - even with tools like WTP, new graphical JSP/JSF editors, wizards to create various beans and projects for OR mapping like Dali. Most of the time waiting for the application servers like Geronimo, OC4J or JBoss to restart or looking which Maven goal/configuration could help you building your application.

Glad that I'm not alone with this experience. But there is help. I think Mr. Lorenzen should have a look at Seaside.

No need to restart the webserver if you build web applications in Smalltalk, no overcomplicated XML configurable build tools and the freedom to care about solving the problem - not fixing buggy tools or browsing API descriptions.

Sunday, November 18, 2007

Innovative User Interfaces

Would be nice to have something like the BumpTo grouping on my desk.

There is also an interesting use of a TabletPC to play with physics.

Thursday, November 08, 2007

Dynamic code generation for images using Rhino and JavaScript

Chris Double describes an interesting way for dynamic code generation based on (Smalltalk like) images.

In his example he implemented an image class in Javascript and two simple assemblers (one for x86, one for ARM). He uses the Rhino JavaScript engine (provided in js.jar) to run the scripts and write the image to disk. He then uses a simple C program to call a (now native) function in the image.

Actually his generation step hard codes the image generation depending on the specific assembler. But it should be easy to create a more general bytecode like assembler for image generation which compiles to the selected architecture.

Really interesting to use JavaScript/Rhino for that...

If you want to play with his files you have to manually download them since the link to the TAR does not work:


Just call Rhino using: java -jar js.jar generate.js to create the image.

Wednesday, October 31, 2007

Smalltalk in Nepal

The Open Learning Exchange Nepal has released a demo Squeak Smalltalk image. It's fascination who uses Squeak these days, so I'm glad the Smalltalk community continues to grow.

Here are some screenshots, click on the images to enlarge:

Friday, October 19, 2007

Monday, October 15, 2007

Seaside Builder

Hernán Morales points to a preview on the development of an interface builder for Seaside

The ideas of this package are based on WindowBuilder Pro. Right now they have support for most common web controls (TextField, Panel, RadioButton, TextArea, Label, Button, Anchor, CheckBoxGroup, RadioButtonGroup, ListBox, FieldSet).

Here is a screenshot (click on the image to enlarge):

He thinks the package would be available at the end of this year or first months of 2008. He also points to two preview videos:


Friday, October 05, 2007

Sun Labs Lively Kernel

Dan Ingalls announced on the squeak-dev mailing list that Sun Labs has published Lively Kernel.

Looks like they have implemented a small computing kernel for the browser in JavaScript and ported Squeaks Morphic on top of it.

Here is a first screenshot impression (click on image to enlarge):

Based on the tradition of Smalltalk and Squeak it also includes the IDE:

Would be interesting what could be possible if this is combined with the Seaside web framework on the server side.

Monday, July 30, 2007

Smalltalk YX on Pocket PC

Luca Bruno is currently porting his Smalltalk YX to PocketPC. Here is a screenshot of Syx running on the Pocket PC emulator:

Monday, July 16, 2007

Squeak on Java

In May 2006 I reported about a Squeak image running on Java VM. Looks like Pavel decompiled it and made the source code available. Decompilation of Java is easy - just use tools like JAD.

However - if you want to play with it, here is a pointer to the source code:

Thursday, July 12, 2007

Squeak UI improvements

There is a discussion on the Squeak mailinglist about some simple ergonomic adjustments in the look and feel of the standard image. Gary Chambers reported about commercial work done in Squeak and an add-on package ready to release back into the community.

This package provides a nice UI for some standard (business application like) services, choosing colours, selecting a font etc.
It also provides a framework for creating "standard" morphs (checkboxes, drop-lists etc). His desktop looks like this (click one of the images to see more):


A few years back there we had something similar: the Zurgle Project by Jim Benson. It includes a theme for installing a Windows XP style interface:


I used Zurgle in my Developer Workspace project (which is now replaced by Damiens squeak-dev image, unfortunately with the standard Squeak look).

I think Squeak requires some more UI improvements and at least support for common widgets found on other platforms to build standard applications.
This would open the project to a broader audience and also allow to experiment with new GUI approaches. I was impressed by the Squeak UI work done back in the Exobox days:


And I look forward for 3D user interfaces as in Croquet:


Sport for Squeak

Bruce posted a message that there is now also a Squeak port of "Sport" available at the sourceforge.net project site (contributed by Janko).

If you want to get the latest version for Squeak you can use the Squeaksource page:


Sport is a Smalltalk portability layer. Sport presents a consistent interface and implemented in a number of Smalltalk dialects. Smalltalk code written to the Sport interfaces can be run in any Smalltalk dialect without alteration.

Wednesday, July 11, 2007

New Seaside homepage

Philippe Marschall announced the new Seaside homepage.

The page itself runs on Seaside (2.8) and the Pier CMS and is hosted at

Monday, July 02, 2007

Syx 0.1

Luca Bruno is currently implementing yet another Smalltalk version.
He just released the first version 0.1 of Smalltalk YX (Project Syx). It's running on Windows and Linux, is written in C with a simple garbage collector.

You can download the executable as well as the source from http://code.google.com/p/syx/

Thursday, June 14, 2007

Swing Bugs

Yet another stupid Java bug in the Swing UI library. But the best is that one has to wait until Java 7 to get it fixed, no backport to version 6.

In Smalltalk fixing bugs in old versions has never been a problem: anything is open and changeable. If the vendor doesn fix it you are able to modify the code yourself. This is what makes customers and developers happy ...

Monday, June 11, 2007

Swazoo for Squeak

Janko Mivšek announced the Swazoo web server 2.0 beta release for Squeak.

Swazoo (Smalltalk Web Application Zoo) is an open source, vendor agnostic, dialect neutral Smalltalk HTTP server with resource and web request resolution framework, a fruit of a first Camp Smalltalk 2000 in San Diego.

Wednesday, May 30, 2007

Seaside Marketing

After Giles Bowkett posts about Seaside's "Marketing Problem" there is a nice reaction from Kurt Schrader.

I totally agree with Kurt. Seaside rocks compared to other web technologies.
I can show it to other people, they are all fascinated but go back and use file editors and other primitive tools and frameworks. They restart the web server after each major refactoring and read many books and specs about predefined behavior and XML configurations. Sometimes I'm amongst them to make a living ;)

But I dont care. I know and use Smalltalk since many years - it still is my secret weapon. I'm always a step ahead and much more productive with it.

Here is an example: I once created an applications using Seaside and finished it within a month. It took an external team (3 people) nearly one year to recreate it using Java technology for the same functionality.

The reason is simple: in Smalltalk I can keep the focus on the problem. Especially web development with Java is bloated with very specialized frameworks these days. If you ever worked with JSP/JSF/Struts/CF/EJB/... you know what I'm talking about.

Only a few people looking for Rails and other dynamic alternatives ...

Monday, May 21, 2007

Wednesday, May 09, 2007

Machu Picchu in Croquet

The arts metaverse web site includes a video about "Machu Picchu in Croquet". See


Croquet is based on Squeak Smalltalk.

Thursday, May 03, 2007

Arts Metaverse

Tim Wang is currently working with the Croquet Consortium (Julian Lombardi, David Smith and Mark McCahill) on a project called Arts Metaverse, which in short is to use high quality 3D models inside of Croquet to teach arts related topics (Art History, Archeology, Classical Studies etc...).

He has an e-learning related blog at: http://blog.loaz.com/timwang with some nice videos about the things they do with OpenCroquet.

Wednesday, May 02, 2007

Sunday, April 29, 2007

Tuesday, April 24, 2007

Sudoku Solver in Seaside

Martin J. Laubach has created a Sudoku Solver in Seaside.
It shows how easy it is to create web applications with the Smalltalk web application framework.

If you want to learn more read his blog.

OmniBrowser docu

Alexandre Bergel announced a new paper on Omnibrowser:


OmniBrowser is a browser framework started by Colin Putney that supports the definition of browsers based on an explicit metamodel. A first implementation is available for Squeak.

UI patents

Found a nice summary on the history of user interfaces and how Smalltalk has influenced user interfaces we know from modern operating system today.

Looks like Apple is sued by a user interface patent today. The patent was originally filed by Xerox.

What if the first cave man would have patented how to start a fire ...

2D in 3D

Channel 9 (the Microsoft MSDN tech channel) showed a video on interactive 2D controls on WPF (Windows Presentation Foundation) surfaces. There is also a new blog on this topic.

Maybe this feature of WPF will soon be highlighted as the best thing since sliced bread - but Squeak Smalltalk had some of these features since years. Maybe you remember the bunny demo where you can easily mix 2D and 3D in Smalltalk.

Have a look at Croquet - there you can easily use 2D morphic projects and mix them with interactive 3D scenes. You can select 2D objects in 3D, interactively change them and even type and select text.
And it's based on Smalltalk - therefore it is platform independent and completely open source ...

Thursday, April 19, 2007

The Blue Book as PDF

The so called "blue book" (Smalltalk-80: The Language and its Implementation by Adele Goldberg and DavidRobson) is now available as PDF on the Free Books page.

Wednesday, March 28, 2007

Learn Seaside

There is a nice blog teaching you how to use Seaside for building web applications at: http://inchingforward.blogspot.com/

You can also watch the "How to build a blog 15 minutes with Seaside" screencast.

Tuesday, March 27, 2007


Plopp, a 3D Painting Tool for kids is now ready for downloading at


You just paint in 2D and Plopp will transform your paintings
into 3D objects. This product is created using Squeak Smalltalk.
See the announcement.

Some demo videos are available (1, 2)

Croquet 1.0 SDK is out

The Croquet 1.0 SDK is now available. Check out the new website of the croquet consortium:


Read more on Davids blog.

Monday, March 19, 2007


CMSbox is a Squeak3.9/Seaside2.8 powered CMS which has been made available by netstyle.ch for the Swiss marketplace.

Read more at http://www.cmsbox.ch. You will find some demo movies on the right side of the page.

Smalltalk Archeology Archive

There is a new page by Aaron Reichow about old Smalltalk versions called "Smalltalk Archeology Archive". Read his posting for more.

Squeak VM for Nokia 770

Squeak now also runs on the Nokia 770.

Monday, March 12, 2007

TopLink, GLORP and O/R mapping

Oracle open-sourced TopLink last week. For those who dont know: TopLink is a object-relational mapping framework (that lets developers work cleanly at the object level rather than in relational tables). TopLink is now part of Oracles application server.

As many other notable technologies TopLink was invented and marketed in Smalltalk first and later ported to Java. The first version was written by Jon Hylands at The Object People (TOP). There is a nice summary of the history at the Oracle website.

As you may know The Object People got diverted into doing mostly Java work, and were eventually bought and split into two pieces (WebGain got the TOPLink piece, and BEA got the services piece). WebGain is now out of business, and TOPLink was sold to Oracle.

While Java people may be satisfied with TopLink any informed Smalltalker know that there is a more enhanced successor written by Alan Knight: GLORP (Generic Lightweight Object-Relational Persistence). Alan was also working at TOPLink and is now working for Cincom.

James Robertson recorded a nice podcast last week talking with Alan Knight and Michael Lucas-Smith on GLORP and about O/R mapping in general. Thanks James, for making this available!

BTW: Jon Hylands is building autonomous controllers today using Squeak Smalltalk.

DabbleDB - maps and charts

DabbleDB now supports maps and charts. Watch a screencast for a demo.

Tuesday, March 06, 2007

Old dude T-Shirts

As Wayne Beaton reports there are some old dudes who know smalltalk at EclipseCon conference.

It looks like Instantiations is already designing some T-shirts for "old dudes".

I already warned you that I'm infected with Smalltalk and pure OO since years. For me it is to late. ;)

So stop reading this blog - otherwise you may get the Smalltalk virus too!

Thursday, February 22, 2007

New tools for Squeak

Romain announced some updates for two new tools: BrowserBooster and SpyWare for Squeak Smalltalk.

OK - lets check how usefull they are ...

Take care with math in Java

Doing some math these days with Java. As you may already guessed doing math in Java is ugly and circumstantial compared to Smalltalk.

Especially take care if you use double values. Class BigDecimal can help here - but there are pitfalls, especially when using the wrong constructor.

Tuesday, February 20, 2007

Pen Interaction For Authoring 3D Worlds in Croquet

The homepage of Michael Kleiber includes informations about his Master's thesis on pen Interaction For Authoring 3D Worlds. The technology used: Squeak Smalltalk and OpenCroquet

You will find the thesis, screenshots and videos.

Croquet website

Looks like the http://opencroquet.org website has a new look.

Let's throw away HTML, JSP/ASP, Flex, ... and start with the future.

Thursday, January 25, 2007

Run Basic in web using Smalltalk

As Carl Gundel, author of Liberty BASIC announced on the seaside mailinglist there is a Seaside app to bring BASIC programming to the web:


Yet another nice Smalltalk application that shows the power of the Seaside Smalltalk web application framework...

Tuesday, January 16, 2007

Blog conversion and Planet Smalltalk

I converted my Blog to the new Blogger.com release. Looks like this automated conversion made some (if not all) of the postings reappear on http://planet.smalltalk.org. Sorry for any inconvenience ...

RCP Plugin startup in 3.3M4

This evening I'm updating some old code I've written in Java/Eclipse RCP to be prepared for the new Eclipse Europa release (successor of Callisto).

As you can read on the "News and Noteworthy" of Eclipse 3.3M4 a new Application Model is introduced. Eclipse now implements the Application Admin Service from the OSGi specification.

When building RCP applications with Eclipse that means that the old IPlatformRunnable interface is deprecated and you should now use org.eclipse.equinox.app.IApplication. Instead of run() we should now provide a start() and stop() method.

To fix your main RCP plugin you may want to change your application class to
look like this:

import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;

* This class controls all aspects of the application's execution
public class Application implements IApplication {

* (non-Javadoc)
* @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
public Object start(IApplicationContext context) throws Exception {
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(display,
new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
return IApplication.EXIT_OK;
} finally {

* (non-Javadoc)
* @see org.eclipse.equinox.app.IApplication#stop()
public void stop() {
final IWorkbench workbench = PlatformUI.getWorkbench();
if (workbench == null)
final Display display = workbench.getDisplay();
display.syncExec(new Runnable() {
public void run() {
if (!display.isDisposed())

Thursday, January 04, 2007

Disappointing Swing

Wrote yet another small utility today.

Since I wanted to reuse a lib written in Java I decided against a the most productive OO System and also came over other temptations. Call me nuts but I wanted to build the user interface in Java with Swing...

I had installed the "Java Mustang" (JDK 1.6 release) last month to play with the new Scripting support (Java now includes the Rhino JavaScript implementation). So I had the latest and greatest Swing on my machine - time for Desktop Java. At that time I was also eager to play with the promised new Desktop integration. Unfortunately this "integration" was nothing more than open the web browser, open mail, and open/edit a document with the associated program. Something the Win32 API had since the days of the ShellExecute() function. But that's another story.

Back to my little Swing utility: I started Eclipse since the IDE supports Swing, SWT and AWT GUI building with the VisualEditor project.

I easily generated a simple JFrame window together with some code for a simple application menu. Some typing here, some coding there I managed to complete my small tool. Work was done so I decided to beautify the UI.

First I switched to the correct Windows L&F since the tool is used "Win only":


After that I wanted to add icons to the menu items. So I imported a gif into a package and added it as menu icon resource using the property palette.

When I hit the "Run" button I was surprised that the image was too close to the text.

What a waste of space on the left side. I think it is intended for menu items with check boxes (JCheckBoxMenuItem) and an additional image. But I have no checked menu item here. Also not very "winlike". I would have expected something like this (screenshot from a native application):

I played with setHorizontalTextAlignment() to align the text to the right. But the situation got worse:

The image disappeared. Time for Google: Ahhh - Bug 6385358
revealed it: in JDK 1.5. the text overlaps the shortcut text and in the latest Mustang build, ONLY the shortcut text appears (without the menu item text).

The bug was submitted 14-FEB-2006 and in 2007 it is still in progress! Maybe they have to fix the other 222+221+216+214+213+211+210+29+27+26+23+22+20 bugs first.

How sad - have to move on without menu icons or switch to SWT. Very disappointing! Anything I wanted was a simple windows like UI in Swing ...

The language (and IDE) is built in

Huw and Demot talking about OOP. They also talk about Smalltalk.

I agree - in Smalltalk, the code and its environment work together.
Thats why you are so productive with it and why so many things have their roots in Smalltalk. You can easily extend both: the language and the IDE.

Most people do not understand that Smalltalk is not only a language. They see the syntax and compare it to curly brace languages.

But Smalltalk is a dynamic object system with a language built in. Everything is an object, even the language is implemented using objects and messages. Control structures are just messages. Classes are objects as well, therefore they understand messages (a "static" construct is not necessary) implemented in class methods.

Unfortunately most "modern" language designer missed this opportunity (otherwise we wouldnt have a debate about complicated Java Language extensions or yet another new language)

Others try to emulate the IDE. Unfortunately even with Eclipse they will not come close.

I dont know what the future will bring - but hopefully it is a lean, modular Smalltalk like dynamic object system that nicely play with other technologies. Maybe Ian's work can help here.