Frameworks and languages, oh my

Recently, I've begun the painful process of actually deciding what core languages and frameworks will be used for the application.  Some things are kind of obvious for everybody, and leads to my favorite phrase from my days of studying for the SAT - PoE (Process of Elimination).

One dimension to start eliminating on is the breadth of the network supporting that technology over the coming 2-3 years.  Perl is a language that is great, rock solid, and also drifting into obsolesence.  I feel bad for Perl but what are you going to do?  This also leaves out old versions of languages like PHP 4.

Another issue is licensing and money.  That cuts out Microsoft products right off the bat as well as some of the supported platforms like WebSphere.  I haven't been a Microsoft guy for years although they're still the only game in town for word processing and spreadsheets.

At this point, there are some things that just go along with what I've done before.  I'll most certainly use a Linux flavor for the OS - either Ubuntu (which I've never used in production) or CentOS (which is the same as Red Hat but is free).  After having some frustrating days trying to deal with a font installation problem (of all things) on an Ubuntu server, I'm starting to consider CentOS.  Either way, it's not much of a difference, either will do.

This operating system needs to be on a machine of some sort.  I don't want to buy a machine and grow out of it though - I'd prefer to rent.  That leads to a slew of hosting options.  One of the big guys is Dreamhost.  I've worked with them on some minor projects and they're great in alot of ways.  However, I need full control, root access, the ability to create an entirely new instance, etc...  Dreamhost won't do.  It's time to take advantage of the cloud so I've been experimenting with Amazon Web Services Elastic Compute Cloud (AWS ec2) and Simple Storage Service (S3).  For about $72/month, I can have a dedicated 'server' on a premium network (Amazon's) with access to S3 which allows for such things as snapshots (backups) and getting data into a solid storage space.

This post will have to be continued - I can't nearly finish this work so quickly.  Does anybody have thoughts?  Here's the current plan:

  • Amazon Web Services ec2,S3, etc...
  • Linux (Ubuntu or CentOS)
  • Apache (I hadn't really thought about anything else, possibly lighttpd)
  • Python or Ruby (PHP feels passe and there's really no other option)
  • If Python, Django or Turbogears (probably Django because Google App Engine is using that)
  • If Ruby, Rails or Merb

I could still be convinced on alot of fronts - this is hard :-)