I first became aware of server side javascript about a year and a half ago. Hacking away on the server got me comfortable with JS itself, and I then started seeing the possibilities inherent on the client side. I have just now finished the prototype for a website construct that fully leverages JS on both the client and the server. My site (
luvluvluv.info) is pretty popular because of all the craziness that I pull in the "real world". (Let's just say that I'm an "interesting character", haha.) Anyway, I'm trying to get my site visitors aware of what I'm really doing, in terms of this new paradigm that I'm trying to promote.
When you go to the site, it "looks" like any plain-jane site, circa 1997. Not much to it in the visual department at the moment. But then you see things like close buttons on the major sections of the page. If you click one, that section will completely disappear from the page. Then you ask, "How do I get that section back?". Simple! If you just press the 'c' key, a "controller" menu will pop up. The closed sections appear in red. To bring it back up, just click on it! And to reorder how the sections appear on the page, just right click it in the controller menu, and use the up/down arrow keys. Then right click again to deselect it.
You can activate the major sections of the page by just clicking on them. It should change to a light red background when you do that. When you activate the "Journal" section, you can scroll through the entries with the right/left arrow keys. Holding down 'alt' at the same time will scroll according to the current "skip factor" and holding down 'ctrl+alt' will zoom it to the beginning or ending (this works on Macs... other operating systems will differ on how the arrow + meta key combinations work).
Okay... so that's not the really exciting part. Then fun only really begins when you press the 'd' key. I don't want to ruin the surprise... try it out for yourselves!
I developed the site primarily for Google Chrome, but of course any webkit based browser is going to work well.
On the backend, I just like to have a tight little server that just keeps the connection logic in order. I of course also need to save stuff, so I just use node-mysql for that. But as far as most tasks are concerned, I just like to offload as much work as I can onto the powerful little JS engine that is built into each Chrome browser. I use HTML5 Local Storage to save the state of the client.