You are currently browsing the monthly archive for February 2010.

Announcement from Lukas Renggli:

A print-on-demand, softcover copy of the book “Dynamic Web Development with Seaside” is available from Lulu. The printed book is identical with the online and the PDF version of the book.

We wish to thank the European Smalltalk User Group (ESUG),, Cincom Smalltalk, GemStone Smalltalk and Instantiations for generously sponsoring this book.

Please distribute this message widely.


Stef & Lukas

Photo by / CC BY 2.0

Just finished a half hour talk about Metacello with James Robertson and Michael Lucas-Smith. The interview was recorded and should be is available here, a week from Sunday (March 7, 2010).

Photo by / CC BY-NC-ND 2.0

James Foster has just published the complete set of videos covering his popular Learning Web Development with Seaside tutorial:

James has gotten rave reviews for his series of videos covering web development with Seaside using the Pharo Smalltalk One-Click Experience for Seaside.

[1]Photo by brandon king (Creative Commons).

Joel Turnbull will be giving a talk entitled Gemstone and Maglev at the Agile Round Table in Cincinnati on March 2nd, 2010:

What is Gemstone? How do I get started with Gemstone? Why would I get started with Gemstone?

All of these questions will be answered!

We’ll do object persistence in Gemstone. We’ll persist objects from a web application. We’ll talk about Maglev and GLASS…

If you’re in the Cincinnati area and are interested in hearing about a production GLASS (GemStone/S, Linux, Apache, Smalltalk, Seaside) installation, then the Agile Round Table is the place to be!

Photo by / CC BY-NC-ND 2.0

So you’ve read Kent Beck’s Smalltalk: Welcome to the Balkans:

The Smalltalk vendors seem to me to be in the same boat. Everyone has taken their “ANSI standard” Smalltalk in different incompatible directions

I don’t think the real issue is standardization.

It’s true that each dialect of Smalltalk has quirks, but version differences are not unique to Smalltalk. It can be challenging to move Ruby programs between different versions of Ruby and it can be challenging to move C code between different operating systems and compilers.

Seaside is proof that a significant body of code can be written to be portable across at least 7 different Smalltalk dialects. It takes a hefty glob of Grease (a Smalltalk portability layer), but it can be done.

Aida and Swazoo are additional examples of significant applications that have been ported to multiple dialects of Smalltalk. They are built on top of Sport (another Smalltalk portability layer).

Writing portable Smalltalk is a solvable problem.

Kent’s proposed solution is a good idea in and of itself:

Have the tiniest possible core defined in terms of test cases. Build a shared library on top of that, implemented in terms of the core. Include numbers, collections, meta-objects, code structure, and code loading. None of this parcel/bundle/package/pundle/category nonsense. Compete on VMs, graphics libraries, and enterprise-y tools.

But expecting a set of vendors to agree on the the “tiniest possible core”, when they can’t agree on a set of common methods is unrealistic.

Here’s what sent Kent off on his diatribe:

All the tests pass in Squeak finally. I’ve been making the changes in place…I load my code back into Monticello … I go to load into VW. Kaboom. The meta information is snarled. The monkey patches are gone. Merging does nothing sensible.

and it’s sent me off on my own diatribe:)

I’ve been working in Smalltalk for 25 years and this problem is just as bad now as it was 25 years ago! It is virtually impossible to do cross-dialect development in Smalltalk. It was unfortunate for Kent that Monticello was partially ported, because it gave him the illusion that cross-dialect development was possible:

And that’s where I sit, blogging because I’m too mad to think…if you can’t even move code between versions. Who would rationally invest in Smalltalk code if they weren’t already locked in?

Right on, Kent! Existing customers may not demand cross-dialect development, but prospective Smalltalkers are being turned away and turning your back on cross-dialect development is turning your back on the Smalltalk community.

You know the story of the Smalltalk balloon:

The cover of that issue depicted the “land of Smalltalk” as a remote island, and that triggered a connection for me out of which was born the fanstasy of liberating Smalltalk from the ivory tower by balloon ascent.

Smalltalk isn’t just balkanized, Smalltalk is an archipelago where every dialect is stranded on its own island! It would be a luxury to have a hot air balloon to transport code modifications back and forth between dialects!

It is technically feasible to port Monticello to every dialect of Smalltalk.

It is an idea whose time has come and gone about 50 times! You can claim that a file-based Smalltalk wouldn’t have this problem, but Monticello is file-based development for Smalltalk.

Monticello makes cross-dialect development possible.

The Monticello code base has not had the attention to portability that Seaside and Aida have, but seriously, Monticello isn’t under active development. A one off port is perfectly adequate. I did a one off port of Monticello to GemStone in December of 2006. It’s not incredibly difficult and it has not required a lot of maintenance.

Monticello has withstood the test of time in the Squeak community and it does a pretty good job:

I load my code back into Monticello (I love SqueakSource, BTW–easy to use, free, what GitHub would have been if they’d stopped developing after a month….)

Envy and Store are not viable candidates. Monticello is a light-weight solution compared to Store and Envy.

If you can afford to port Seaside, then you can afford to port Monticello.

So why don’t we just do it?

It isn’t realistic to expect all Smalltalk dialects to live on the same island, but to continue to perpetuate the current isolationism between dialects is just pathetic:

I’m calling bullshit on the state of Smalltalk. Vendors, you’re acting crazy.

Thank you, Kent for the kick in the butt!

And Happy Valentines Day!


Last November James Foster gave several presentations on GemStone at Smalltalks 2009. James recorded his presentations and recently finished editing the video down to digestible set of YouTube vieos each coming in under 10 minutes:

  1. What is GemStone?
  2. Video: Object format and pointers
  3. Special Objects and Header
  4. Large Objects
  5. Repository, Extents, and Object Table
  6. Component Overview
  7. Shared Page Cache
  8. How Gems Create an Object
  9. How Gems Read an Object
  10. How Gems Modify an Object
  11. How A Gem Dereferences an Object
  12. Commit Record Backlog
  13. Handling Commit Record Backlog
  14. Commit Process
  15. Issues in Concurrency
  16. Lock Granularity
  17. Reduced Conflict Classes
  18. The Stone Process
  19. Live and Dead Objects
  20. Nine Steps of Repository-Wide Garbage Collection
  21. Epoch GC, Offline GC, Multi-machine
  22. Garbage Collection Q & A

QuickTime versions of the videos are available here.

[1] / CC BY-NC-SA 2.0

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 446 other subscribers


RSS GLASS updates

  • An error has occurred; the feed is probably down. Try again later.

RSS Metacello Updates

  • An error has occurred; the feed is probably down. Try again later.

RSS Twitterings

  • An error has occurred; the feed is probably down. Try again later.
February 2010