Ocean Waves: the applications built on Seaside
31 October, 2006
Introduction
Seaside is a powerful web application framework, which is based on a clean model-view-controller paradigm.
Seaside frees the programmer to worry about session/request management, and enable also seamless parallel web requests by the same user.
The Weekly Squeak has already an ad hoc tag for Seaside, and many of us known it.
For the newbies, is worth to remember Seaside is a bit more comfortable then RubyOnRails, and is based on stack-copying techniques. I have developed quite complex forms in a snap, and its productivity is higher.
From time to time is good to review the state of this framework.
So The Weekly Squeak interviewed Avi Brant and some of the most active developers.
Projects
QTone
QTone is a music application written in Seaside. We have interviewed the author, Jay Hardesty.
Giovanni: How much time need you to develop qtone?
Jay: The Seaside-based interface was developed for the purpose
demoing the underlying application, which has a Morphic GUI.
Writing the Seaside-based code took about two weeks, much of
which was spent learning the learning Seaside basics. I’ve
never written a Web-based app before, so I also had to find
out what http and css were all about.
(The underlying desktop application has been developed over the
past three years, and some of the algorithms and design ideas
go way back to music school days.)
Do you used a template engine with seaside, or you wrote a bunch of
code to generate the html page?
I wrote code to generate html, grabbing snippets from the various
Seaside axample apps (calculator, alltests, etc.). There are some
unholy hacks. For instance, I couldn\’t figure out how to rotate
labels 90 degrees, so those are simply bitmaps rendered in Morphic.
And there are hot spots all over the place that don\’t belong.
But again, this was just meant to be a quick and dirty demo of the
desktop Morphic-based app; it still needs a lot of work, but the
basic functionality seems to be there.
Compared to other approach in web development (most notably php),
how much was easier using seaside in your own opinion?
I’ve never done Web development before, so I’m not the best
source for comparisons. I did also create a Java-based Qtone
applet to run on my cell phone, communicating with the
same Squeak server application. In that case I needed to do a
whole client/server implementation, mirroring the state of
Smalltalk objects by flattening out data and shipping it to
the Java side via http. Probably there are better ways of
accomplishing what I did, but in any case it was *much* more
work than it was to do the Seaside interface (and the phone
interface is drastically simpler).
Do you used a database or do you relay on Squeak collections?
If yes, which?
I don’t use any database at the moment, other than a Unix directory
full of MIDI files. In the desktop application there is a Morphic
GUI built on top of a Qtone object, which is in turn built on a
large hierarchy of classes that handle the music processing.
My main Seaside class simply points to the same Qtone object that
the Morphic application does. All sorts of collection classes
are used throughout the code, mostly Arrays, OrderedCollections,
Sets, and custom collections for various music objects such as
musical notes.
Your throughts about seaside…?
I cringed when it was originally suggested that I put together a
Web demo because I assumed it would require a lot more effort
than it ultimately did. Not having to mirror the state of objects
across a client/server divide was by far the main advantage for
someone in a hurry, and with my lack of experience. I know that
continuations are an important feature of Seasideand I’m sure
my appreciation of continuations would soar if I were forced to
do more traditional Web development, but for now they’re
something I’m pretty much just taking for granted (benefit of
being late to the game I guess)
I have many years experience as a Smalltalk programmer, so I’m
not sure how Seaside would look to someone without that background.
DabbleDb
Developed by Avi Brant, dabbledb is looking very promising. It features a ajax-enabled application, and shares a common look with BackPackIt, developed with RubyOnRails.
Abeit the success of this new web tools is not for sure, last week google launched a new version of an online Word Processor and a Spreadsheet.
So we have done a small interview to Avi Brant, about Dabbledb and Seaside:
Seaside, RubyOnRails, Python Django, CakePHP shares some common idea.
But I find only in Seaside the complete and automatic session/request management, and a true MVC process. Why other languages cannot take a similar approach?
There are only technical difficulties or there is also some other
equally good reason in your own opinion?
It has very little to do with language. Fundamentally it comes down
to a single design decision that’s at the heart of Seaside, which is
to maintain session state in-memory, inside a long-running
application server process. That’s at odds with a traditional “share
nothing” philosophy of web development, which seeks to have all
session state be either persistent on the server side (in files or
databases), or constantly transmitted from the client in cookies or
form fields. By making the choice to “share everything” and use in-
memory session state to its fullest, a lot of the design constraints
which have shaped our thinking about web development fall away, and
some pretty radically different approaches are possible. I’d love to
see people go down that path in other languages, and there’s nothing
preventing it, but it doesn’t seem to be happening much yet.
How much time did you take to develop the front end of DabbleDB?
It’s hard to measure the time exactly, because for most of the
development we were bootstrapping the company with consulting work,
and getting in work on Dabble when we could. But I’d say it
represents about two man-years of development work, plus a few months
of (very important) help from a web designer.
What database is used to store data? A relational one or an object oriented one?
It’s a custom in-memory object database. We were going after a very
interactive and flexible UI, and we wouldn’t have been able to get
the performance we needed out of a standard relational database.
Seaside has just reached 200.000 downloads.
It looks like the most downloaded Squeak application of the last twelve months.
What are your project for the future?
One thing I’d like to do is reduce the dependence of Seaside on
continuations – they drove a lot of the initial interest in the
framework but they’re becoming (or seeming) much less important over
time, and the use cases to which they’re best suited are these days
often addressed with AJAX instead. Right now they’re creating an
artificial barrier which stops Seaside from being ported to some
dialects (like Strongtalk, Smalltalk/X and VAST) which don’t support
continuations but would still benefit from a continuation-less Seaside.
Conclusion and call for a follow up
We’d like to interview more seaside developer!
If you want a bright & exciting interview by Giovanni Giorgi (!) send him an email.
If you find comfortable with seaside, feel free to add your comment ad the end of this article.
References
- A Seaside based music application
- Seaside: Extensions
- Seaside – A Multiple Control Flow Web Application Framework
- If you like Seaside and Ruby On Rails, take a look also at Django, a python web framework with some nice features
About Giovanni Giorgi
Born in the 1974, he is working as a professional IT Software Architect from year 2000, and loved SmallTalk from 1996.
In the free time he likes doing trip and reading books.
His blog has some interesting photo about his trips.
1 November, 2006 at 19:03
“, and the use cases to which they’re best suited are these days
often addressed with AJAX instead”
Can you give an example? I can’t get my head around how AJAX is solving the continuation use cases.
1 November, 2006 at 21:57
[…] Op weekly squeak staat een interview met Avi Bryant, de bedenker van Seaside. Wat Seaside onderscheid van andere webframeworks is de share everything gedachte, waarbij de state van een web applicatie gewoon in memory wordt vast gehouden op de server en niet op de client in cookies of in een database. Dit vereenvoudigt het bouwen van een web applicatie aanzienelijk. Comments » […]
3 November, 2006 at 21:47
@krishna
Instead of using #call: to replace a component you use AJAX.
8 November, 2006 at 16:31
[…] The above is an excerpt from an interview of Avi Brant, lead developer of the Seaside framework and also the author of a popular web2.0 application called DabbleDB. DabbleDB is written using the Seaside framework as you might expect! […]
28 November, 2006 at 22:53
[…] developed by avi brant, dabbledb is looking very promising. it features a ajax-enabled application, and shares a common look with backpackit, developed with rubyonrails. abeit the success of this new web tools is not for sure, …Read more: here […]
12 February, 2010 at 07:37
Hey guys,
I’m just browsing sites for the kids of Haiti.
I’m doing this for a non-profit haiti group that is devoted to giving time to
creating an oppurunity for the children in haiti. If anyone wants to help then then please do so here:
Donate to Haiti or Help Haiti
They provide kids in Haiti a learning environment.
Please check it out, they are legitimate.
It would be awesome if you could help us
26 August, 2011 at 19:45
[…] in the vicinity of two and a half man-years of efforts went into the initial launch of DabbleDB. https://news.squeak.org/2006/10/31/ocean-waves-the-applications-built-on-seaside/ Advertisement LD_AddCustomAttr("AdOpt", "1"); LD_AddCustomAttr("Origin", "other"); […]