Chicken Scheme
Why is it interesting?
It is a scheme variant with plenty of libraries and a good FFI for linking C code that can produce binary executables on Windows. It looks like it could fill a niche in between C++ and Perl for any projects outside work I want to do.
Why not?
This will have to compete with O’CAML and Haskell for my time.
O’CAML
Why is it interesting?
Like Chicken, O’CAML has a good set of libraries for the problem set that I’m interested in. Also, it has a very funky-sounding debugger that can go backwards as well as forwards in time and profiling tools. With my code, I spend a fair amount of time in the debugger so that would be a great advantage!
Why not?
- I think I’m leaning more towards the dynamic language side of the fence.
- It is more of a Unix-centric language and my development box is Windows.
- Some of the syntax looks a bit grim (but hey… who am I kidding when I’m interested in scheme ;)) e.g. adding floats together.
Haskell
Why is it interesting?
Again, the libraries cover pretty much everything. Lazy evaluation gives some possibilities for creating new syntax that seems a little more tricky in O’CAML. Also, the community seems a little more active in comparison with O’CAML.
Why not?
- Again, it is more of a Unix-centric language.
- It seems like you need a PhD to become conversant with it.
Seaside
Why is it interesting?
It is, according to a number of articles, the oldest and most robust continuation based webserver with a built-in debugger and profiler. I’m a web programmer from way back when and we used basic CGIs so something that promises to abstract the session away from web development sounds fantastic.
Why not?
It is yet another language to learn (SmallTalk)
Questions to ask
- How well does it scale?
- It looks like you can edit the components from any web-browser (is that correct?) That being the case, is it possible to restrict edits to a certain set of developers?
- I’m guessing the answer must be yes or it simply wouldn’t be viable for production use. Can you imagine a wiki where the pages are scripts and any random user can edit them?
Hi Curious,
My day job is writing web apps in Seaside, so I thought I’d try to answer your questions.
Scaling is always a contentious topic, but here are some things I’ve observed. Seaside apps tend to use more memory than REST applications, simply because they store all those continuations. Not huge amounts, but enough that when scaling an app up, it’s one of the things to keep an eye on. Fortunately Seaside has tools for memory profiling, so you can measure just how much memory is used by a given session, and what’s being stored.
The other scaling issue is session affinity. Since Seaside stores continuations and callbacks in memory, all the requests for a particular session have to be handled on the same server. These means some load-balancing schemes won’t work with Seaside.
On the other hand, you can run Seaside apps on a cluster of webservers, so scaling becomes a matter of adding hardware. Once you exhaust that strategy, you’re probably in Amazon/Ebay/Google land, where all bets are off anyway.
As for editing components via a browser, Seaside runs in one of two modes. “Development mode” includes lots of tools and utilities that make development easier: halos, time profiling, memory profiling, HMTL validation, and yes, a component for editing the code for other components. All that is turned off in “deployment mode,” so you don’t have to worry about random users monkeying with your app.
The editing component makes a really cool demo and can be handy in a pinch, but it can’t hold a candle to the Smalltalk IDE, so nobody uses it for day-to-day development anyway.
Hope this helps,
Colin
Hi Colin,
Thanks for the comment – you’ve answered all of my concerns regarding Seaside (apart from the learning a new language thing, but that is what I’m interested in at the end of the day anyway). Seaside will be the next thing I take a look at, cheers.
Ian