picking a server-side language

I made my girlfriend a one-page website for Valentine’s day. It’s cheesy and I won’t link to it, but it’s basically a slideshow of our photos with dates and some commentary. It’s pure html/css/javascript right now. The next step is adding a way to authenticate users and adding an interface for them to upload images and commentary. Which means I now have to decide which server-side language to use. I’m listing some of my options below to help myself decide.

  • php – can host on inexpensive web services & my domain is already setup on one. PHP experience never hurts, but it hasn’t been a focus for me like c# and javascript. However I could make a wordpress plugin out of this and learn a lot more about wordpress in the process.
  • c# – can host freely on appharbor.com but a custom domain costs $10 a month. It would be easiest to code in c# since i’ve done similar things before and my dev environment is already running. Maybe I could just add a cname or rewrite to the appharbor sub domain instead of paying for the custom domain.
  • python – can host freely on google app engine, but a custom domain requires setting up google apps account for it. Free, but complicates things. Python is an excellent language and easy to learn, but not ideal for me since I can’t use it at the office and it’s not often called for when doing contracts.
  • node.js – can host freely on heroku, and custom domains are free too. but runs version 4.7 by default. upping it to 6.2 could be a pain, judging from this post by Pat Patterson. I have zero experience with node, but I’m very interested in it. it will have far fewer libraries for it since it’s so new, but I may have already found one for authentication.

Update (3/6/2012)

I decided on node and got the current version of the my app migrated into it in about an hour thanks to express and jade. Luckily, I just found out that Heroku now supports many versions of node and npm, up to the latest. You just need to specify the node version you want in package.json.

I tried to get it working initially with iisnode and WebMatrix. But I wasn’t able to figure out how to get express working with it. Come to find out, it’s actually an open bug. iisnode is more than I need anyway for this simple app.