On Smalltalk

thoughts on Smalltalk and programming in general…
  • Home
  • About
  • Good Books
  • My Squeak Image
  • Popular Posts

Pollak On Seaside

By Ramon Leon - April 11, 2007 under Seaside, Smalltalk

Found on a Rails blog…

“IMHO Seaside is the benchmark by which all web frameworks should be measured” — David Pollak

My thoughts exactly. It’s not about the language, it’s about the approach. Seaside is the right recipe for writing real applications, not just fancy websites. No other framework can do what Seaside does, as easily as Seaside does it. Real components with their own state, real objects, no pages, no templates, Ajax in pure Smalltalk by simply wiring events together on the server side, calls to other components are actual method calls rather than hacked up URL conventions.

For Rails fans (myself included), don’t compare Seaside to Rails, rather compare Seaside to ActionPack, the view controller layer within Rails. If you want to see an apples to apples comparison of the entire stack, it’d be something like…

ActionMailer == Existing Squeak services
ActionPack == Seaside
ActionWebservice == SoapCore
ActiveRecord == Glorp
ActiveSupport == Existing Squeak code, the image is full of DSL mini languages to make everything pretty

Seaside isn’t the well integrated full stack solution that Rails is, but all the parts are there, you can mix and match your own perfect framework.

Tags: Seaside, Smalltalk

Related posts
    at: "No related posts";

16 Comments so far

  1. Piers Cawley on April 12th, 2007

    Mutter. Grumble. Chunter.

    Just because you took the time to find the right method names doesn’t make it a DSL. It’s merely the least you should do.

    But you’re bang on about what Seaside is, and why that makes for such a rich programming environment.

  2. Ramon Leon on April 12th, 2007

    No idea what you’re grumbling about, but Smalltalk code, in general, is written in a DSL style, so much so that it’s not worth an extra support layer to make Smalltalk prettier.

  3. David Pollak on April 12th, 2007

    I think you’ve hit the nail on the head. It’s definitely the approach. While certain language facilities (e.g., closures) make certain approaches easier, I think it’s the vision that drives the reality.

    Interestingly, the most productive desktop development environment I’ve ever programmed in (and I’ve programmed in a lot) is Interface Builder (now known as XCode.) WebObjects grew on top of NextStep and was a cousin code-wise and design-wise to Interface Builder. Avi claims a lot of his inspiration for Seaside from WebObjects. But I ramble.

  4. Joe on April 13th, 2007

    David,

    if you find Xcode very productive, you might want to check VA Smalltalk’s composition editor which takes many of the concepts a step further.

    And Instantiations is working on getting VA Smalltalk ready for seaside…

  5. Daniel Berger on April 13th, 2007

    Seen Borges? http://rubyforge.org/projects/borges/

  6. Jason Rogers on April 13th, 2007

    IIRC, Avi worked on Borges for a while. No?

  7. Ramon Leon on April 13th, 2007

    @Dave, ramble on, I quite enjoy your ramblings.

    I know about Borges, but I was under the impression it was abandoned. Does it have a community, is it in active user? Might be fun to play with.

  8. Piers Cawley on April 13th, 2007

    Ah, sorry Ramon; just a hobby horse of mine. My complaint about the whole “It’s a DSL” style of talking about a well designed message protocol is that, by calling it a language we’re implying that it’s somehow rocket science, when really it’s a matter of using your implementation language effectively.

    I try to avoid writing DSLs (parsers scare me), but I’m all for sweating to get a message protocol just right, and I think it’s worth drawing the distinction. YMMV.

  9. Jason on April 13th, 2007

    Piers: You only need a parser for an external DSL (what less powerful languages like C/C++/Java/Perl would need). For a powerful language like Smalltalk or Lisp you can do a DSL inside your language.

    For example, there is no branching defined in Smalltalk. But of course someone would want branching so they added it (DSL style) into the libraries.

    Of course some people will say that because the VM treats #ifTrue:ifFalse different that it is really part of the language. But that’s a silly argument. Once Exupery gets to cranking out fast Squeak code such optimizations (hopefully) wont be needed anymore.

  10. Ramon Leon on April 13th, 2007

    Piers, I don’t disagree, I just consider a well designed message protocol a DSL, they’re one and the same (in the right languages). Parsing is not a necessary attribute of a DSLs but rather a step required of “some” DSLs that require completely novel syntax. Lisp/Smalltalk/Ruby all do DSLs without parsing.

  11. Giovanni Corriga on April 14th, 2007

    Piers may actually have a point, without knowing it ;-)

    In the current Squeak image we have something like “10 minutes” to get a Duration, but not something like “10 minutes ago” to get a point in time. In fact, one of the Squeak Summer of Code proposed projects was to get the base image on par with ActiveSupport.

  12. Ramon Leon on April 14th, 2007

    Not really a fair comparison, ActiveSupport is an add on library. I’d bet the Squeak base image is more expressive than the Ruby standard library in most respects. Toss in libraries like Chronos if you want to compare apples to apples.

  13. Alexis on April 15th, 2007

    While I really like Squeak and the ideas represented in Seaside, I personally found it quite difficult to get start writing a real web app with it due to the complete lack of any significant documentation. Some of the tutorials are great, but I’m completely baffled about how to use Glorp and Magritte. So I had to fall back to symfony & php, which I’m not terribly happy about, but at least I do manage to get my projects moving forward. I *love* to see a really good book about how to do professional Seaside web apps. :)

  14. Ramon Leon on April 15th, 2007

    I’ve written on those topics, browser around the blog a bit and you find some examples.

  15. Mark Miller on April 17th, 2007

    @Alexis:

    What you’re saying is true. There are books on the Smalltalk language, and on Squeak proper, but none (to my knowledge) on Seaside, or any of the other technologies Ramon talked about. Lukas Renggli has written up some excellent stuff on Seaside. He also wrote Magritte (I think). He has some PDF tutorial slides on it as well.

    You can see his tutorial slides at http://www.lukas-renggli.ch/smalltalk/seaside. Over on the right sidebar you can select other sections of this site that cover Magritte and Pier. I know he wrote up a tutorial for Magritte.

  16. Adi Azar on June 3rd, 2007

    Very interesting, thanks for sharing with us.

Posting your comment.


  • Sponsors

  • Tags

    Databases General Linux Lisp Magritte Performance Profiling Programming Ruby Seaside Smalltalk Sql Squeak Updates
  • Categories

    • .Net (5)
    • Databases (9)
    • General (5)
    • Linux (2)
    • Lisp (3)
    • Magritte (2)
    • Programming (62)
    • Ruby (6)
    • Seaside (42)
    • Smalltalk (72)
    • Sql (2)
    • Stuff I Just Like (6)
    • Updates (7)
  • Blogs

    • (gem)Stone Soup
    • Avi Bryant
    • Boris Popov
    • defmacro
    • Giles Bowkett
    • Goran Krampe
    • James Robertson
    • Lukas Renggli
    • Martin Fowler
    • Paul Graham
    • Ralph Johnson
    • Randal Schwartz
    • Vassili Bykov
    • Weekly Squeak
  • Favorite Tools

    • Apache
    • Cygwin
    • FireFox
    • Scriptaculous
    • Seaside
    • Squeak
    • Squeak Dev Image
    • Ubuntu Linux
    • WordPress
  • Meta

    • Log in
    • Entries RSS
    • Comments RSS
    • WordPress.org

Copyright © 2008 On Smalltalk