I have started a booklet on Pharo, hopefully the first of, um, more than
one. It is entitled RedditSt20, on my fork and extension of Sven Van
Caekenberghe's excellent "Reddit.st in 10 elegant classes", to cover the
following in another 10 or so classes:
The book is being written using Pillar, of course. Note that the Pharo 5
version of Pillar that I downloaded from InriaCI doesn't work - the
supporting makefiles aren't able to obtain the output of "./pillar
introspect <something>". Use the Pharo 6 version.
I just tried loading Seaside into the latest Pharo 6 pre-release image from
the Catalog Browser. It loads cleanly. However, the Seaside control panel
doesn't start because it uses NewListModel which does not exist in this
Ok, how about Pharo 5? Using Pharo 50772, which is currently the latest
Pharo 5 image, I loaded Seaside 3.1.5 programmatically after visually
The load sequence includes messages to String>>#subStrings: which is
deprecated. The senders are GRStringTest>>#testSubStrings,
JQAjax>>#callback:passengers:, WAAdmin class>>#register:at:in: and WAAdmin
Otherwise Seaside 3.1.5 loads cleanly. Test Runner reports 1173 run, 1171
passes and 2 expected failures.
The Seaside book is a
bit light on persistency as is. The Hasso-Platter-Institut
does present an abstract database wrapper class with these words:
In order to decouple your application from the chosen database system, it
is a wise decision to encapsulate the required functionality within a
separate database wrapper class. This class provides an interface for the
required persistence functionality of the application but leaves the
concrete implementation of those functions to its subclasses.
This blog began life as a set of static pages, generated by a home-grown
content management system written in Smalltalk, imaginatively called
I've now rewritten SmallCMS1 to serve content dynamically, to support tag
linking, like this: SQLite.
Each blog post page now has forward and backward navigational links just
above the blog post title.
Rendering code now uses Seaside. More than a year ago, I
blogged on that.
Seaside now has a cleaner way to render static HTML, or maybe that previous blog post got
it wrong. Anyhow, here's how SmallCMS1 uses Seaside's HTML rendering
I've had this for a while. Putting it up here in case this is helpful to
others. To use, create "htdocs" in "FileDirectory default". Web-wise,
"htdocs" is known as "/static". I serve my CSS and JS files from there.
One of Seaside's distinctive features is that it generates HTML in
Smalltalk, i.e., Seaside provides an API to produce HTML using Smalltalk
code. This API can be used for generation of static web pages too: