Friday, November 30, 2007

FAQ Proposal

Q: When you know if you're working too much with Seaside?

A: When you want to "Toggle halos" on every website you visit. :-)

Tuesday, November 20, 2007

Benchmarks everywhere

It seems that my benchmarking "initiative" caused some effects, and many vendors/frameworks are doing the test with the same tool.

AIDA/Web vs Seaside:

Seaside on VisualWorks, Squeak, vs Ruby on Rails :

My own tests (which will be replayed):

And the initial, and more exhaustive, Seaside on Gemstone benchmark:

Considering all of us are using the same tool I've choosen (WAPT), we should define a clear and unique test suite, upload it to a public place, and run it against the different implementations. The results published by AIDA and Cincom have a significant difference between them.

Anyway is important that we put "benchmarking" over the table.

See you in Smalltalks 2007.

Labels: ,

Friday, November 16, 2007

Taking it easy

I got the feeling that the latest post about the benchmarks caused some bad reactions. So just to feel less paranoid (I'm new on this thing of "blogging"), or just for the record I want to give some explanations about it:
  1. I consider myself Smalltalker, it is: I want that the entire Smalltalk community to grow healthy.
  2. I like Dolphin Smalltalk. In fact, I love Dolphin Smalltalk.
  3. By no means I want to bias the numbers towards point #2.
  4. It is, I'm not making any value judgement about the quality of any of the tested Smalltalk.
  5. Just ran the same test against the different Seaside implementations (I'll replay this test against GLASS and VW 7.6 too)
  6. The test has low value, because It doesn't represent a real usage, except if you have a plublic website running on Seaside, and get slashdotted.
Now I feel much better. Feeling that all are my friends again. Come with us, Smalltalks 2007 will be great.

Thursday, November 15, 2007

Some benchmarks

Yesterday I ran some benchmark tests against Seaside on Dolphin, Squeak and VW.

The test is basically a brute force conection initiation, against the basic Seaside Counter.

I won't do any analysis or conclusion yet, just some observations, however I'm publishing the results for you our own review.

All the test were ran by separate in the same machine, an Athlon64 X2 3600+, 1GB RAM, Windows XP Pro.
Simulating 20 concurrent users starting connections against the server, one after the other, to see how much load it can handle.

Dolphin (Swazoo 1.1.4):

Dolphin stopped answering connections when they reached the 8000, however, during the test, the image (a workspace) was still responsive (slow, but usable). Once the test ended, the image was responsive again, having more than 8000 instances of WASession, invoking a garbage collect with all those sessions in memory (with all its continuations, i.e. processes), caused a failure, and Windows showed a message saying "Dolphin Smalltalk stop responding". Why it happens at that moment, is unknown to me.

Squeak (Kom 6.2):

The result for Squeak are similar as Dolphin. Same number of instances (average), with the difference of no having "processes" for its continuations, during the test the workspace wasn't responsive as Dolphin's one, but you can evaluate some expressions, and with patience get the print-it or do-it. But passed the test without dying. Invoking a GC forced me to interrupt the VM, because the GC blocked it.

VW (WebToolkit):

VW started answer a large number of hit per second, which was as expected considering its fast VM, but started to halve its performance, and in less than 2 minutes started to show "Process Emergency" (or something similar I don't remember exactly). During the test all the windows were a dark grey rectangle, so no interaction can be done. After two minutes of test, the VM showed a out of memory message, and died abruptly.

Labels: ,

Wednesday, November 14, 2007

Back to the future

I've just downgraded my workstation from Vista Business to XP Professional.

Vista is pretty, but with this hardware is slow (Athlon 64 X2 3600+, 1GiB RAM, 160 GB HDD SATA2). With XP, this computer is like a Bugatti Veyron

Tuesday, November 13, 2007

And again...

New release, which uses the newer version of IDB DateAndTime and Duration and fixes a wrong link for the icons.

Download it from:

Monday, November 12, 2007

Seaside 2.8 for Dolphin candidate release

I've just released a candidate "stable" version of Seaside 2.8 for Dolphin Smalltalk, it supports file uploads and multiple options forms elements. I had to fix some methods of Swazoo to get rid of the dead processes too.

From now on I'll be dedicating less time to the port itself and more time to build software based on it for my company.

However I'll be fixing bugs as required, and I will follow the development of the 2.9 version of Seaside, codename STABILO, which will be more modular, and easier to port.

The download link is:

The installations instructions are the same as with the previous release.


Sunday, November 11, 2007

Keep it candy

Spurred by the latest addition to the Dolphin autocompleter done by Udo Schneider, I added some icons to the Seaside and Scriptaculous classes, this way will be easier to identify them (apart from its class prefix), and it will be nicer, as Dolphin itself is (well... Dolphin isn't nicer, it's definitely the nicest).

I'll publish this modification in the next release.

Labels: , , ,

Friday, November 09, 2007

Remember remember...

...the 9th of November.

If you want a probably stable version of Seaside for Dolphin, do this little two modifications to the recently released version:

Replace HTTPConnection>>#close by this:

self stream close.
self server removeConnection: self.
self loop notNil ifTrue: [self loop terminate].
loop := nil

And replace HTTPConnection>>#interact by this:

"longer description is below method"
| interactionBlock |
interactionBlock := [
[ [ true ] whileTrue: [ self getAndDispatchMessages. Processor yield ] ]
on: SpError
do: [:ex | self close ]
on: ProcessTermination
do: [:ex | self loop: nil ]].
self server isMultiThreading
ifTrue: [self loop: (interactionBlock forkAt: Processor userBackgroundPriority)]
ifFalse: [interactionBlock value].

And all the zombie processes won't be there anymore. Isn't that what you was after? :-)

Being almost midnight it remembers me a fantastic goal in extended time.

Thanks to Sebastián Calvo (aka Gallego) by working together with me to solve this until this late, after all he is talented to solve this kind of stuff. Hat tip gallego!

Elementary, my dear Watson

One more reason to keep using Windows XP (or leave Vista).

Some minutes ago I installed the recently released version in a notebook to keep working (or playing) during the weekend. After installation I accessed the examples, and to my own surprise, it runs much more fast! But not 2x or 3x, it's about one order of magnitude.

I thought it was because of the CPU being Intel (Thinkpad T60, Centrino Duo), because my computer at work is an Athlon64 X2 3600+, so I tested it in my home computer (Athlon64 X2 4000+), but it still was 10 times faster than my computer at work.

And guess what... both the Thinkpad and my home computer have XP Pro, whereas my workstation has Vista Business.


Seaside 2.8a1-eam.528 preview version

For those waiting to test the latest version of Seaside on Dolphin, it can be downloaded from

The ZIP includes the packages (.pac) and the project editions exports for those using STS (recommended).

Install order using PAC files (.stp):
  1. IDB\IDB Duration.pac
  2. IDB\IDB DateAndTime.pac
  3. SPort\SPort Tests.pac (will load SPort.pac)
  4. Swazoo\Swazoo-Tests.pac (will load all Swazoo Pacs)
  5. Seaside\Seaside-Dolphin.pac
  6. Seaside\Seaside-Browser.pac
  7. Seaside\Seaside.pac
  8. Seaside\Seaside-Swazoo.pac
  9. Seaside\Scriptaculous.pac
Install order using STS project editions files
(first import all the project editions into the repository):
  1. Seaside Prereqs 0.002
  2. SPort 0.5
  3. Swazoo 1.1.4 R3
  4. Seaside 2.8a1-eam.528 c
Starting an example site:

In order to start an example site, open the '' in the Seaside folder, then point to any of the following:
It's not ready for production, because it still leaves dangling processes around until the handlers are cleared. I must fix it, so if nobody does it first, I'll will. However it can be used for development (we will), so I'll be releasing small fixes from now on. Feel free to add comments here, or send suggestions, bug reports, fixes or flames by email to eMaringolo at gmail dot com.


EDIT: Fixed the Scriptaculous link (thanks JSC)

Less is more, but not this time

I made a mistake when I removed the message send metioned in
my previous post, so we are one step back. However, I'll be releasing a beta version today.

Tuesday, November 06, 2007

Less is more

A stated in other Smalltalk blog, less is more. And that was the case with the suspended processes left when running Seaside on Dolphin, to fix it I had to "remove" code, not to add.

Removing one method send in Continuation>>#value:, everything started to work as expected.

The only thing remaining is the reference to some dead processes of Swazoo (HTTPConnection>>#interact) by some handlers of Seaside, once done, Seaside on Dolphin will rock!

Labels: ,


I've been running some benchmarks against Seaside on Dolphin.

I must say it runs very well, with an good page/sec rate for business apps. Anyway it can't handle being "slashdotted".

However, there is a severe problem with something leaving dangling processes in suspended or dead state, which collapses the image after 4 minutes of brute requests (above 8000 requests one after the other), generating a similar number of processes (think of it, 8000 processes!!!!).

Something smells near the Continuation implementation. Once solved the request rate should rise.

I'll publish the graphs and results when I learn how to do it. :-)

Even with that "little" problem, the performance is a little better than the Squeak implementation (15% faster).

More coming soon...

Labels: , ,

Friday, November 02, 2007


Scriptaculous is on its way too...

Thursday, November 01, 2007

Evergreen Terrace

When all is green, I feel happy:

Doesn't it look pretty?

And of course, it's running on Dolphin X6.

The status is:
  • All the tests passes
    • The Unicode tests were omited because Dolphin doesn't support unicode
  • Some processes are left suspended, when I clear the handlers they leave, something is referencing them
  • I learnt how to use Monticello (nice tool)
  • The web based browser doesn't work, I'll will try to fix it, however it's not prioritary.
This looks promising...

Labels: , ,

web site analysis