I’ve just about completely given up my Web design & development business as a way of making a living these days. I’m focusing instead on being a content creator for clients who can benefit from my ability to research and absorb information on a broad variety of topics quickly and to equally quickly render my knowledge into cogent words. These can then become blog posts, press releases, long guest articles or for that matter eBooks.
But that doesn’t mean I’m giving up my long and deep interest in building stuff for the Web. I’ve just decided that I no longer want to do so under deadline and for clients who have to depend on me to finish work on schedule and under budget. There are many reasons for this decision and they’re beyond the scope of this post. Suffice it to say that I’m now looking at Web development more as a hobbyist.
That has been incredibly freeing.
Since what I want to build for myself — and for the occasional friend or non-profit who is willing to wait for the result — are Web applications rather than standard Web sites, I want to choose a language in which to work that I can have fun writing, that doesn’t require me to spend too many hours poring over arcane (i.e., C-like) syntax, and in which I can be reasonably productive on both the client and the server side of the Web.
The first big problem I ran into is that there really isn’t a very good way to handle the client side in Python. There are kludges and vague attempts at translations, but none of them is either stable, well-supported or very clean in terms of the way they handle the output to be stored in the client. In essence, I can substitute Python for PHP with ease, but I’m still stuck with a four-language solution (HTML/CSS/JS/Python).
Smalltalk suffers from nearly the opposite problem: deployment on widely available Web servers is all but impossible. There are a couple of Web servers written in and for Smalltalk but they are little-used, and require me to become the maintainer of a server. That’s not my interest.
But then I remembered encountering CoffeeScript. I took a quick look, read and worked through a quick tutorial, and then spent a couple of hours investigating its use in Web development. I am impressed with the clean syntax of the “language” (it seems to me to be not quite a language but a sort of meta-language).
So my new approach is to master CoffeeScript and incorporate JQueryUI on the client side and (presumably) backbone.js on the server (though those choices are still wet paint) to support the creation of Web apps. CS compares fairly favorably to Python from a clean-syntax perspective, uses white-space formatting as its structuring mechanism (which I really like for a number of reasons) and has a pretty extensive collection of libraries, recipes and plugin/add-on tools.
I’ll keep you posted on my CoffeeScript journey. It may turn out to be another blind alley but I’m going to give it a fair try. My first step is to pick a good second book (beyond the Little Book on CoffeeScript with which I’ve already started to learn the basics.)