TL;DR version: Down at the bottom is a simple naive RSS proxy written in Coffeescript for Node.js, written as an example. I explain how to install Node and Coffeescript, and how the proxy works.
Node.js runs on all modern Unix clones, including Apple OS. Node.js 0.5, the "unstable" build, also runs on Windows.
Once you've installed Node.js, you need the Node Package Manager. It will let you install common Node packages easily:
curl http://npmjs.org/install.sh | sh
Once you've installed NPM, Coffeescript is as simple as:
npm install coffeescript
Okay, enough talk. We're going to build an RSS proxy-- you'll be getting HTTP output formatted for RSS. This will work in all browsers but it's best in Firefox because Firefox still makes a heroic effort to parse RSS correctly.
Coffeescript is a whitespace-delimited language, with some vaguely Rubyesque parsing behaviors. Many people say if you know Ruby you'll love Coffeescript, but the Python partisan in me loves it too. Coffeescript's language is so regular that most often you can skip using parentheses. The example above is inconsistent-- sometimes I use them when they're not necessary, sometimes I don't-- but if you examine the two uses of .on() (in the handler, and in the server declaration), you can see the differences. The syntax '(argument, argument) ->' is a function declaration and returns an anonymous function. If you understand that, you understand 75% of all Coffeescript, and all you need to know now.
Start with the createServer entry. It takes a function that takes two objects, the request and the response. The very last line there starts the server, listening at a specified port. Whenever a browser hits that specified port, the function is called and passed a request object and a response object.
In my example, the function then creates its own HTTP client, makes a call to a specified URL, and sets a handler for the response.
The handler is that first defined function above. It return a function with the server's response object enclosed within it. This handler processes the response coming back from the client (in this case, by just storing it), and then, when the client's response is ended, forwards that response through the server's response object and ends the connection.
To run this, just copy the code into a file server.coffee, and run:
Point your browser to http://localhost:8124 and see the magic.