
I've always had a love-hate relationship with JavaScript. On one hand, JavaScript will let you easily implement any multitude of sins - similar to languages like Ruby, Python, etc. On the other hand, you can also pull of some pretty neat tricks with an expressive language like JavaScript. As the level of interactivity that people expect from the web continues to increase, much of the logic that used to run on the server side has transitioned to the client side - e.g. executed in the browser via JavaScript. Usability features like auto-complete, date pickers, accordians, etc., can be easily accomplished with JavaScript and libraries like Jquery or MooTools.