Rails, as stated by its creators, is opinionated software, so you're stuck with their preferred way of doing things, which fortunately is not too bad as of now. So if you're a control-freak like me who also wants to squeeze more juice out of your CPU cycles, then go for python. If you want to put your trust in a well-integrated framework of components cherry-picked by smart folks, then go for rails or django (also python, but a little less flexible).
Here's a fairly up-to-date overview of python web dev options: http://jesusphreak.infogami.com/blog/vrp1
If a project needs a database you'll know it pretty quickly...and it's easy to convert to using a database at that point. The only time I've ever regretted a decision about databases was when I designed a log processor that didn't immediately have relational needs...over a couple of weeks of implementing the requirements I ended up writing a relational layer in Perl against a Berkeley DB backend. That was stupid, and I should have thought a little harder about the requirements. But it was my first big solo project, so I blame inexperience for not recognizing a relational problem from the start. Luckily, SQLite had just been released, and converting my app to use it (and losing a hundred lines of code) was a one day operation. It made the app approximately 100 times faster for my data set.
But, well over half of my applications since then have not required a database and have been well-served by flat files.
This is not just a Scheme thing. If you use Java you have serialization. Python calls it 'pickle'. I'm sure whatever else you are using probably has something equally simple.
My webapps are requiring a lot of client side logic to be really interactive, so I've found that the biggest producivity factor is what I'm doing with Javascript. The Rails code I've been writing is mostly trivial; as long as it lets me talk to the database easily, I feel like any language could be used on the backend. However, I do love scripting in Ruby, and Rails makes it easy to use its DB abstractions in external scripts.
The best gains on the client-side come from using a good library. I've gone from Prototype/scriptaculous to YUI-ext to Mootools. I love Mootools. I've never been able to bring myself to try Dojo; it seems like it's trying to put the Java back into Javascript. What do you think?
I'm actually just starting to use merb for simple requests that don't need the full rails stack (merb being threadsafe whereas rails is not, so it's useful to delegate some of the simple stuff to merb).
I still plan on investigating flex and seaside in the short term, just to see if there is any good ideas I can learn... (in a longuer term, I'll dedicate some time to lisp)
Python is a lot better than Java for agile startups.
He is extremely happy about lisp, especially after hacking java for years. (The code-base I had built up over the last few years as well as PG's writings helped convince him to give it a try even though he was very skeptical about lisp at first, There is no going back now :)
Ironically, we decided on a different (more focused) idea to pursue for the current startup for which my architectural firm is the current first customer (my hair was on fire for this app), so the initial code base is waiting for a later date. (It will be used to extend the feature set of the current app by adding a conceptual interface)
My partner is concerned about Aserve's ability to handle massive numbers of sessions at the same time, so we are considering going to a java websever and using the lisp side to generate all the html. (The html macro in Aserve is proving very fast and reliable) We're definitely looking for the best solution out there right now as we are planning to go live in about 2 months.
Is there any specific reason to use Lispworks as oppose to a free implementation (say SBCL)?
I remember the author of portable allegroserve mentioned that he wrote it mostly for demonstration purposes, and might not perform well. Are you guys finding this to be an issue at this stage?
As for session, would it be possible to store session objects in AllegroCache, which comes with the paid version of AllegroCL? (I'm just a newbie speculating :) )
Java for data mining, image manipulation and data shoveling, like in xml transformation. You can't really use Ruby for this... We also chose a servlet for one of our web services for performance reasons.
I try to pick the best tool for the job and run with it.
Of course, I'm about ten lines of code in, so I probably don't count.
- sql, (mysql)