Domain: seaside.st
Stories and comments across the archive that link to seaside.st.
Comments · 37
-
Seaside?
How does this differ from Smalltalk's Seaside? It, too, has coroutine-ish interaction with the client.
There's also a Perl module implementing the same sort of client-server discussion.
-
Re:Smalltalk live images
I would like to inform you that VM's exist. I do most of my testing in VMs. I can snapshot a running system and replay it running any language. I can peer into memory and register states.
TL;DR: All programming languages and development environments support live images, just not as nicely as Smalltalk.
Recommendations: People who liked Smalltalk, also liked Squeak and Seaside.
-
Re:functional
-
Re:I'm not sure OO is a good idea for web developm
If you like continuations you can certainly have them in an OOP language, or even a hybrid OOP/functional one if that's your thing.
-
One Parentheses to rule them all.
-
Smalltalk has this.
Oh, so it's a bit like: http://code.google.com/p/smalltalklabsbrowser/ or http://www.seaside.st/about/screenshots?_k=YFNy7uUZ
-
Re:Smalltalk is not dead
No, Seaside is the web framework.
-
Re:Maybe start from MIT's "Scratch"?
Don't get me wrong - it's great for kids ages 3-10. But given the availability of much better alternatives out there, your 14 year old will probably get turned off to programming if they use Scratch.
You could be right, we really have not played with it much. What better alternatives are there?
EToys ( squeakland.org ) is similar to Scratch but less restrictive. It looks rather simplistic, but it's actually very powerful. For example I'm writing an interactive book on Thermodynamics which includes simulations of a Stirling engine, thermometers (mercury and constant volume gas) and a few more.
Etoys and Scratch are both written with Squeak ( squeak.org ) which is a modern Smalltalk system. Squeak itself is used professionally by many people, eg. the Seaside Web framework ( http://seaside.st/ ) and there are lots of commercial iPhone apps made in Squeak (but I know Squeak itself got kicked out of the app store after the C/C++/ObjC/JS-only nonsense). The transition from Etoys to Squeak is pretty easy, as they're essentially the same except Squeak methods are written in Smalltalk code rather than snapped together from GUI tiles, and are run when called rather than periodically like Etoys scripts.
For the "next generation" of these technologies, there is the Web-based version called Lively Kernel ( http://www.lively-kernel.org/ ) written in Javascript+SVG, and there is the *very* cool OpenCobalt (formerly Croquet) at http://www.opencobalt.org/ which is a peer-to-peer 3D virtual world. Essentially it's like SecondLife but without the need for a server, any world can hyperlink to any other world (using what are essentially portals), it follows standards (XMPP chat, VNC for remote desktops, LDAP for storage, XDMCP for spawning external desktops, etc.) and is essentially geek porn.
Hope those prove interesting enough to play with
:) -
Re:Web development is hard for even talented peopl
Even for excellent software developers, web development is difficult. It's not the concepts that are difficult, per se, but rather the jumble of half-backed hacks that make up ever layer of the web stack. The foundation is so weak that anything built upon it just can't stand well, even if it itself is well-designed (given the constraints of web development).
Just look at the common open source technologies used by many web sites. MySQL is one buggy hack upon another. PHP is much the same, plus some security holes.
Uhm, deficiencies of MySQL and PHP don't necessarily mean that web development in general has to suck. What about the Seaside framework? To me, Seaside is a clear demonstration how much it helps sometimes to step away a bit and rethink an old thing.
-
Re:No mention of seaside?
Maybe I am missing something, but I am not sure what you are talking about regarding seaside refreshing. If you had bothered to download, install, use seaside, or even read the documentation, you would know that seaside almost never does a full page refresh.
One of us is, anyway. Maybe it's me, but I don't see any signs of the technologies you're espousing. Perhaps there's AJAX and DHTML in the full kit, but their examples don't show it.
Go view the examples here:
http://www.seaside.st/about/examples
Every time you click on a control, there's a full page refresh to communicate the state back to the server. That's not AJAX. That's ancient state-tracking technology. Early versions of Wings used to do the same thing before they started using AJAX.
Of course, having the server hold on to even the most minute of state changes has some serious issues. One is performance. Local DHTML widgets are always going to be more responsive than page refreshes or even AJAX calls to maintain state. The second is that if the state gets out of sync for any reason (like the aforementioned back/forward buttons) the widgets can begin behaving unexpectedly. In particular, options that the user may THINK were changed will have different states once the page refreshes. AJAX is even worse because an inconsistent state can persist on the client throughout the usage of the widget. This can cause the entire program to submit incorrect information and frustrate the user.
A better approach is to have the client widget act on behalf of the server, then submit back information as required. Information should only be sent back in complete batches, thus ensuring that there's never a consistency problem between the client and server. As a bonus, the client can be more responsive and interactive than with the server-state model.
-
Re:No mention of seaside?
Is this the SeaSide you're referring to?
If so, that was a rather unpleasant experience. The entire page refreshes on every interaction with the controls. That sort of technology has been around for nearly a decade now and has never caught on for a lot of good reasons. Not the least of which is that the back/forward buttons royally mess with the expected state of the widgets.
For an example, try playing around with this tab editor for Ocarinas. It looks good on the surface, but after using it for any significant period of time, you'll easily bump into significant flaws in the way it works. Even bumping the wrong key by accident can cause an extra tab to get inserted or work to be lost. Compare this to the more primitive Tab Maker which provides a very smooth experience via DHTML technologies.
-
Re:"Java itself never mattered except to sell book
"well, TBH, there's Smalltalk too, but who, these days, is building anything substantial in Smalltalk?)"
Perhaps http://www.seaside.st/ ? Financial industry? If anything, Smalltalk is picking up a lot more momentum and popularity recently. It's a great alternative if you're sick of Java or C# or don't buy into Rails hype. That said, I agree with everything else you said. I too work with Java (and C#) quite often and I have to say that Java has so many open source libraries and support it's amazing and makes up for many of the things I hate. -
Sessions are evilComplex page state is kept on the server, in a session-associated database. If requests are sending a little more, no harm. If they're sending a lot of data every time, which isn't user-entered on that specific page, they're not very well coded.
On the contrary, session-dependent web apps are bankrupt design-wise. They violate the (stateless) page metaphor, breaking the standard UI and confusing the user, simply because some programmer couldn't be bothered to find a good way of maintaining state. Some of my favorite denizens of the Session Hall of Shame are...
- Apps emblazoned with "Don't use the Back button while you're here or the world will come to an end! Oh noes!11!1!oneone" (Concur Solutions, I'm looking at you.) 60% of web users employ the Back button as their primary means of navigation. Usability issues surface when the Back button doesn't work the way they expect. It's an old observation, but I've yet to see it knocked down.
- The ubiquitous session timeout: go to lunch, come back, and you get to re-enter all your data. Is server space really at such a premium that you can't let sessions last a week, if you do insist on using them?
- Breakage of parallel surfing: I have the habit of opening 3 or 4 links from a page in background tabs all at once. In many overly sessiony sites, this causes weird behavior.
In these days of >100KB page loads, it's silly to sweat over 4KB typed into a textarea. If you find it painful to maintain state from request to request programmingwise, you're not using enough framework. Find something nice that'll stow user data client-side without making you think about it. Or, if you're in the mood for something exotic, try a continuation-based framework like Seaside: those let you forget about the statelessness of HTTP altogether, though admittedly at the cost of tokens which feel a bit like session identifiers but aren't quite. (They still don't break the Back button or parallel surfing, and you can set the timeout to a week.)
What I really mourn is the passing of HyperCard for the web. There was a time back in the nineties where it looked like HyperCard was going to get rolled into QuickTime and thus be available in any browser that could run the plugin. Now that would have been sweet. I suppose Flash isn't a much different result, though I hear its roots in linear-chronology animation still poke through when trying to develop apps on it. If the Flash UI were a little better--using native widgets, letting standard text selection and copy and paste work--I'd likely be won over. I suppose the best choice today is session-free AJAX with a good framework to keep the details out of your face.
Thanks for reading to the bottom of my rant! I feel much better now.
:-) -
Re:Coroutines
Call/cc can become useful in web applications where you have a batshit insane workflow. Seaside, the Smalltalk web framework, bets the farm on it. It's in other places like Perl's Jifty too.
Most of the web apps I write wouldn't benefit from this sort of treatment, so I haven't jumped in too far, but call/cc has its uses for sure. -
Re:thinking about something new? think againI really don't understand the point or Ruby. It seems like it's semantically similar to Smalltalk, but with uglier syntax. Is it faster? Apparently not. On average, Ruby is 1/5 the speed of Smalltalk, and in some cases much worse. In only one test was it faster; startup (not important for long-running processes, such as stateful web apps).
So, we have a slow language, with ugly syntax. The ugly syntax is subjective, so we'll overlook it for now. We have a slow Smalltalk, but maybe the framework makes up for it. Looking at Ruby on Rails, it seems like a cheap clone of the old NeXT WebObjects (cloned as GNUstepWeb and SOPE, uses Objective-C, which is typically faster than Smalltalk), and so far behind something like Seaside it's not even funny.
So, why do people use Ruby? Or is it like Java, as Guy Steele said:
And you're right: we were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp. Aren't you happy? -
Re:Question from a .NET developer trying to go OSS
It depends on your task. If you are building small to medium-sized web-applications, I would recommend Seaside. For larger projects, there are things like GNUstepWeb and Struts. If you want something slow that doesn't scale well, but is 100% buzzword-compliant, then there's Ruby on Rails. If you want to re-use existing ASP.NET code then you could try Mono.
For many needs, Apache is not a good choice. I personally prefer Lighttpd, which is lighter, faster, and easier to configure. It has nice FastCGI integration, so you can use it with most frameworks.
As for databases, I still haven't found a good reason to use MySQL. If you need a real database, I'd go with PostgreSQL, which is more standards compliant than MySQL, and faster for complex queries. If you want something slightly more structured than a flat file, then try SQLite, which is simple, lightweight, and faster than MySQL for simple queries.
-
Re:Trust / No Trust
Smalltalk/Seaside?
-
Live app debugger in Squeak/Seaside
I noted in my article Boxing in the LLRing, which despite positive responses Slashdot rejected in favor of Roland Piquepaille's daily column and various political commentary, that Squeak has an amazing debugger (I am not going to call it a full-blown analyzer) that allows you to debug applications as they are running on the very interesting Seaside application server.
As described in this paper (pdf), Seaside provides multiple control flows and a high level of abstraction that is very useful to web app developers.
The 4500 word article is coverage of a 300 developer "Lightweight Languages" all-day seminar held in a real boxing ring in Tokyo, covering 30 languages and frameworks including Perl, Python, Ruby, Haskell, OCaml, Squeak, and many others. -
Live app debugger in Squeak/Seaside
I noted in my article Boxing in the LLRing, which despite positive responses Slashdot rejected in favor of Roland Piquepaille's daily column and various political commentary, that Squeak has an amazing debugger (I am not going to call it a full-blown analyzer) that allows you to debug applications as they are running on the very interesting Seaside application server.
As described in this paper (pdf), Seaside provides multiple control flows and a high level of abstraction that is very useful to web app developers.
The 4500 word article is coverage of a 300 developer "Lightweight Languages" all-day seminar held in a real boxing ring in Tokyo, covering 30 languages and frameworks including Perl, Python, Ruby, Haskell, OCaml, Squeak, and many others. -
Programming trends
You want to know the latest trends for Java-based web development? Fewer and fewer people are going to be doing Java-based web development in the future.
Fuck trends. They're wrong. Every day the industry continues to stay with its current ridiculous technologies when vastly superior ones were invented decades ago infuriates me further. If it doesn't infuriate you, you're not paying close enough attention.
My advice: read Lambda the Ultimate and Steve Yegge's blog. Endeavor to learn what the lambda calculus and referential transparency are. If you are sincerely interested in bettering yourself as a programmer and don't go find out who Alonzo Church was then so help me God I will kick you in the balls. Learn about SML and type inference. Learn about Haskell and monads. Learn about process calculi and Erlang. Learn about Lisp and code generation and domain-specific languages. Learn about Scheme and lexical closures and continuations. Learn about Smalltalk and what OO was really supposed to be. Learn about type theory and formalism and the Curry-Howard correspondence. Learn about Forth and Joy and how you can have a powerful, expressive language without even so much as a grammar. Learn about Intercal and Befunge and just how badly your choice of programming language can torture you. Learn about UML and Ruby on Rails and Seaside and agile programming and Java generics and Python generators. Learn about aspect-oriented programming, context-oriented programming and concept programming. Learn about multi-paradigm languages like OCaml or Oz. Learn about weird Lisp dialects with syntax like Rebol or Dylan.
Realize that library design is language design. Realize that asynchronous programming with callbacks and explicit state in a world where lightweight coroutines were around in the days of fucking Simula in the 60s for Christ's sake is cruel and unusual torture. (Sorry, pet programming construct.) Realize that the programming language research community, while considering systems programming a solved problem and generally not interested in talking about human factors, is doing some genuinely promising work. Did you know that there are conc -
Or what about?Seaside? This is more obscure than RoR but just as powerful and effective. It doesn't have all of the autoconfiguration and templating bells and whistles but can adopt something called scriptaculous for total AJAX style goodness.
I have used RoR and am impressed with what it has to offer. Check back in a year and it might mature to the level for larger scale projects that aren't as vanilla boilerplate as is the case now. I have used Smalltalk as an OO language and am starting to teach myself Seaside since it looks to be a good fit for certain potential freelance work.
-
Re:Difficult to answer
Thanks for this very interesting comment, and also for the link to your post-scarcity software article. While reading that, I was reminding of Avi Bryant's thoughts on how Smalltalk seems to have addressed many of these same areas of concern.
There's also an increasingly interesting set of work related to web development coming out of that the Smalltalk world at the moment such as Seaside and the related tools (e.g. Magritte and Pier), not forgetting of course dabble. -
Re:Smalltalk?
Lots of niches, actually.
See, for example sorting french fries, or in this larger PDF, scheduling all of Deutsche Bahn's trains (page 38) or derivatives trading (page 33 and here), as well as a a variety of other applications. Or there's an example of controlling a semiconductor fab facility, a good many of which are controlled by Adventa's Smalltalk-based products. Or there's continuation-based web stuff like Seaside or Dabble. etcetera. If you'd really like to know more, you might be interested in upcoming conferences such as Smalltalk Solutions. -
Re:Tapestry Making Web Development a Breeze?....
Why other frameworks like Seaside http://www.seaside.st/ doesn't receive the attention of Slashdot?
Seaside is technically superior, it uses continuations to mantain state and this make it really transparent...
Maybe because Seaside runs in Squeak http://www.squeak.org/, is open source and...
Wait is not sponsored by any big name (like IBM, or Sun)... mmm both IBM and Sun publishes its ads in slashdot...
Ahhh now I see why
No, it is because systems like Squeak, no matter how technically wonderful it is (and it is!) is not a production-ready system for high volume websites.
If you want to use continuations (which are surely the future of web development), there are Java frameworks that allow you to do this - WebWork is a good example. -
Tapestry Making Web Development a Breeze?....
No!
The post looks like an ad.
I have used Tapestry several times since its firsts versions (pre-Apache). It sucks.
Yeah is much better than Struts and others, but is really complicated... a lot of XML :(
Why other frameworks like Seaside http://www.seaside.st/ doesn't receive the attention of Slashdot?
Seaside is technically superior, it uses continuations to mantain state and this make it really transparent...
Maybe because Seaside runs in Squeak http://www.squeak.org/, is open source and...
Wait is not sponsored by any big name (like IBM, or Sun)... mmm both IBM and Sun publishes its ads in slashdot...
Ahhh now I see why -
Re:Seaside ?
Apparently GNU Smalltalk technically could have a Seaside port (see the bottom of the download page), but nobody wrote one.
-
Seaside Smalltalk
Another VERY good framework that allows for rapid web development is Seaside ( http://seaside.st/ ). It's a framework for smalltalk, which is similar in some ways to Ruby. It's well worth checking out, once you get over the initial curve it's fantastic. Personally the ability to edit live code in your web-app while its running is wonderful and the "halos" feature just kicks a**.
-
Seaside ?While Ruby on Rails is nice, particularly for CRUD applications, I wonder why nobody speak of Seaside
...\begin{rant}
Ok, I know, it's probably because it's written in that extremely complex and arcane language, Smalltalk... not. Smalltalk is extremely simple to use -- literally a child's play ;-)
\end{rant}Anyway, Seaside is an incredible framework to develop Web Applications -- not just CRUD apps. It has a wonderful component system, inspired by WebObjects (another wonderful framework !), and leverage Smalltalk: you have compilation on the fly, you can modify something at runtime (and I mean, even without quitting the current web session !), use the incredible debugging/refactoring possibilities, and reuse of the zillions of libraries and code available for Squeak.
More over, it has continuations. And that's really useful (as Paul Graham demonstrated..) for building neat webapps. Basically with Seaside you program applications nearly the same way you'd program a "normal" application. The whole HTTP process is completely abstracted (check the videos).
Frankly, it's really a joy to develop with Seaside, and you should have a look
:-) -
Seaside ?While Ruby on Rails is nice, particularly for CRUD applications, I wonder why nobody speak of Seaside
...\begin{rant}
Ok, I know, it's probably because it's written in that extremely complex and arcane language, Smalltalk... not. Smalltalk is extremely simple to use -- literally a child's play ;-)
\end{rant}Anyway, Seaside is an incredible framework to develop Web Applications -- not just CRUD apps. It has a wonderful component system, inspired by WebObjects (another wonderful framework !), and leverage Smalltalk: you have compilation on the fly, you can modify something at runtime (and I mean, even without quitting the current web session !), use the incredible debugging/refactoring possibilities, and reuse of the zillions of libraries and code available for Squeak.
More over, it has continuations. And that's really useful (as Paul Graham demonstrated..) for building neat webapps. Basically with Seaside you program applications nearly the same way you'd program a "normal" application. The whole HTTP process is completely abstracted (check the videos).
Frankly, it's really a joy to develop with Seaside, and you should have a look
:-) -
An "arrr" solution.
I much prefer a seaside solution.
--
The "are you a script" word for today is platform. -
Re:Continuations
Another great web application framework that uses continuations is Seaside. Implemented in Smalltalk.
-
Re:Your links prove his point.
Well, eToys are used for example on about 60000 PCs in schools in Spain. Squeak is used for developing commercial web applications using Seaside framework.
-
Re:Maybe there's a reason it's free.WebObjects was (and still is) one of the most powerful web application system. Much more sensible than a lot of stuff
:-)EOF -- an object relational mapper, providing isolation from the database and from the database model -- in particular is very, very nice. Not the final answer to everything, but still quite cool
:-)The sad thing with Apple's current WebObjects is that it's only java (it's even a J2EE environment), while originally (at NeXT) it was Objective-C based (plus WebScript, an ObjC-like script language). They dropped the Objective-C bit with WebObjects 5, sadly (4.5 had ObjC and Java). Well, ok, beeing a J2EE env has its own advantages, but still...
The documentation of WO 4.5 is here, the documentation for the current WO is here.
There is a free software implementation of WebObjects 4.5 from the GNUstep project, GNUstepWeb, which work well. OpenGroupware.org also has its own WO 4.5 implementation, NGObjWeb, which works very well too (it's the foundation of SOPE). I wrote an article showing how to do simple (html) components, but it's in french
;-)Though, if you want to discover a really interesting project, have a look to Seaside. It's inspired by WebObjects, with an excellent component model, but is even better (support of continuations, etc). And it's completely dynamic, letting you change things at runtime easily (Smalltalk rulez
;-). It's one of the best thing I know :-) -
Re:The usual point that comes up with this issue.
If you're happy using wxWidgets, there are now bindings for Squeak (http://homepage.mac.com/rgayvert/wxsqueak.html).
And of course Squeak has an incredible web development framework - Seaside (http://seaside.st/). Try the tutorial -- you will be blown away!
There is a lot of interesting development happening in Squeak at the moment; if you've not played with it in the last couple of years, it's well worth giving it some attention. If you're having trouble getting into Squeak, have a look at some of the tutorial material on http://minnow.cc.gatech.edu/squeak/377 . -
Re:Squeak as in Smalltalk Squeak?
Smalltalk dead? Riiight.
Seriously, people don't know what they're missing. Quick example: one of the most advanced web application development framework around is coded under Squeak in Smalltalk: Seaside.
And people right now are wetting themselves over "Ruby on Rails", while this isn't even comparable in term of flexibility and power.
Pity the masses who ignore advanced programming languages technology. -
Re:Scripts
are you kidding ? Here's a hello world in Smalltalk:
Transcript show: 'Hello World !'.
Effectively, that looks extremely complex. You send a message "show:" to the object Transcript, with a string 'Hello World!' as a parameter.
Btw, you can use Smalltalk for scripting (although I personally didn't tried it
;-) -- try GNU Smalltalk.But better, you should have a look on Squeak, and to be on-topic, you *absolutely* need to try Seaside if you're interested by extraordinary technologies to create websites. Ruby On Rails is quite nice, but I was blown away by Seaside. It's inspired by WebObjects, and it's really fantastic (as it leverage the fact that it uses Smalltalk
;-)Definitely a good idea to check, imho..
-
why onLAMP?-LAML-Seaside.