Wednesday, August 29, 2007

Building Websites


One of my co-workers asked me today that he would like to build a website. A freewheeling discussion started from Google Calendar, software as a service, dynamic languages, web frameworks, open source and so on. But finally he asked me to send some material on building a dynamic website which is also cost effective. I hunted on Google and could not find a single resource that kind of captured the essence of our discussion and that results in this blog entry.


His idea was that he had a dance studio that wanted to get on the web. Basic stuff like events management, feedback, news and so on. A bit of e-commerce involving selling some salsa dance related goodies like dancing shoes and so on. So there it goes.



Domain Registration and Basic Hosting


If your site is a bunch of blog posts and set of static content, then you can get away with paying only for the domain. It would cost you about $10/year. Choose your domain registrar carefully and make sure that the registrar supports a good control panel to change your DNS entries as you wish. Some domain registrars require you to send a mail to them to change your CNAME records. And frankly, that sucks. NearlyFreeSpeech.Net supports a nice and elegant control panel to manage your domain entries.


Most blogging sites like Blogger allow you to host a blog on your own domain. One other thing that you have to do is to get Google Apps for your domain. That makes setting up email and calendar on custom domains really easy. Google Apps for your domain comes with Google Pages which are static HTML pages. Their page construction tools are not very helpful but some space is better than no space at all.




Cranking out your Web App


The next thing to do would be to crank out your web application. There are several choices you have. In fact, down right daunting. Since my good friend is a enterprisey kind of guy, let me place this advice right at the beginning.


Don't even try building a serious website with ASP.NET or J2EE. It would take forever and you are tying yourself down to a track facing an oncoming train. Chances of your survival are nearly zero. One of the hassle free solutions which would quickly get messy is to use some Content Management System like PHP Nuke or Post Nuke. This would help you get started very quickly but you cannot do much one you get started.


Alternatively you can crank your own PHP app with the Ruby on Rails wanna be frameworks like Cake or Symfony. I only suggest this because PHP hosting is well supported and easy to setup with a shared hosting partner. NSFN has some pretty cool plans. Check them out.


Alternatively, if you are ready to do some hard work, you can create a Ruby on Rails or a Django based web application. Both these frameworks are pretty good. I am not attempting to start a Ruby or Python war here. I have not hosted Ruby on Rails applications. But the word on the street is that Ruby on Rails deployment is a little more difficult than Python with mod_python. There are camps on either side throwing spit balls at each other. But I would like to refrain from commenting either ways. Look at it this way. Frameworks like RoR, Django, TurboGears (or is it Pylons??) help you achieve tremendous productivity. You will just have to swallow the pill and deal with deployment. Even though I love python and Django, I would have to commend the Ruby on Rails community for keeping change management in mind while designing the framework. You have stuff like Migrations and Capastrino to save several hours of upgrade headaches. I give two thumbs up for Ruby on Rails. :-)


If you are impressed by Django's admin interface capabilities. I would strongly suggest you to look at Streamlined. The amount of code you write to create a fully functional application would be considerably reduced by using these tools with prudence.


For static content, you must seriously consider Amazon's Simple Storage Service. It lets you park your static content for a very low fee. You would save tonnes of hassles if your hosting provider pulls you down for exceeding your bandwidth capacity.


If your target audience is small, I reckon that you might get away with paying about $10-$15 monthly and about $7-$10 yearly for the domain registration.



Suggestions for the Dance School


Now that I have scared you with the options and have left you dazed and confused, let me tell you how I would go about getting the dance studio on the web.



  • Calendar - Google Calendar (no doubts about it). It has simple and clear API to integrate it with your application.

  • Feedback - If the feedback is on particular articles, then you can simply use feedback articles on your blog. Google Calendar also supports comments.

  • Static Content - Use google pages or Nearly FreeSpeech.NET's hosting. Its pretty cheap and is pay as you use.

  • ECommerce - Now you are talking web-apps. I would strongly recommend Ruby on Rails. Throw the hosting question to the community. You will get tonnes of replies. Evaluate them and choose the best. Make sure that you ask the hosting provider about a reference customer so that you could validate your evaluations.


All the best to you all.