Working through Developing Backbone.js Applications

A mini-diary

Before I get completely seduced by Angular.JS and others equally as sweet for use on an upcoming and very important web app project, I really need to give Backbone.js another chance, a fair chance. Nothing could provide this with better timing than the publication now of the completed Developing Backbone Applications, by Addy Osmani. The book signifies a big change, in that it is simpler to dive into Backbone.js, and you can do it with more confidence since you are being shown a path following best practices.

Here’s the rub: Backbone.js is “not opinionated, meaning you have the freedom and flexibility to build the best experience for your web application however you see fit. You can either use the prescribed architecture it offers out of the box or extend it to meet your requirements.”

Wandering in the desert of plenty: An architect in search of an application architecture

I need to adopt a javascript dev and deploy stack as framework for my new venture Linguathon. I’m delighted about this project because it brings together language teaching and web app worlds, something I’ve postponed for decades. So I need to adopt a javascript MV* framework to give me a solid, sound, yet flexible foundation. I have been studying Addy Osmani’s Developing Backbone.js Applications (also see the fascinating work in progress mirror http://addyosmani.github.com/backbone-fundamentals/ ), and “What we know now” (as Steve Blank is fond of saying… BTW I’m taking his free online lean startup course and reading his book; don’t want to make all the same mistakes all over again 🙂 ) is that I at least don’t have the time or even the stupidity to build everything from scratch using a bare bones, self-made, untried and tested by the community dev and deploy stack.

Learning CoffeeScript (no, for historical reasons)

The task on Pivotal Tracker (love using it) says “Learn CoffeeScript”. The project this chore forms a part of is really important to me, and while several important projects I am working on still deserve to be based on Drupal, others deserve a new kind of architecture, something wildly new and at the same time something going back to my roots (learning C with Kernighan and Ritchie’s The C Programming Language enthralled with the hiding of detail overload prevalent in the Z80 and 8086 assembler languages I had been using) in the eighties (Turbo C…).

Updated code in a repo ready to run for two great and useful Node.js Express CouchDB (and MongoDB) tutorials

Up-to-date, executable code for two great tutorials on rolling a blog with express, Node.js and a noSQL database: https://github.com/victorkane/couchblogtut

The first, Blog rolling with mongoDB, express and Node.js, takes you “through the steps required to get a fully-functional (albeit feature-light) persistent blogging system running on top of node. It was first published on February 18, 2010 by Ciaran Jessup and last updated May 14, 2010.

The second, Blog rolling with CouchDB, Express and Node.js, was published on February 7, 2011 by Ian Wootten, and was commented on just this last April.

This pedagogical repo brings it up to date (as of June 22, 2011), makes a MongoDB branch basing the persistence on MongoDB; and a CouchDB branch (ultimately merged into Master) after the more recent article.

Hey Jade!

Far from being a wannabe “missing manual” for Jade this article is simply my own “path of understanding” of how the Jade template engine is utilized in the Express framework, expressed in a simple “work in progress” app which you can find here: https://github.com/victorkane/heyjade

Now, everyone complains that there is “no documentation” for Jade. Actually, just on github, there is a lot in the Readme.md, plus a huge examples directory, plus a jade example in the Express source. Not to mention the Express Guide, which enlightens us on many aspects of how Jade is used with Express.

So I thought I would just work my way through a good part of that, by building a little sample app on github that you can step through by branching through the commits. Again, please follow along here, and check back every now and then for updates as my comprehension goes deeper and deeper (I hope).: https://github.com/victorkane/heyjade

Simple Vim plugin management for Javascript development

I’ve written about vim as an IDE before. In this case, however, in order to prepare for node hacking, and also in line with a recent discussion about IDE’s on the node mailing list, I’m documenting here notes I made while getting geared up with gvim (macvim) for SSJS development with some of the more important plugins that were mentioned (you know, it’s that “so how do I actually do this” moment) (this should all work fine on either MacBook Pro or Ubuntu/Linux):

Diving into Node.js – getting started roundup, wrapped by two special gems

This article rounds up what is available on the internet right now for getting started with Node.js, and includes a gem at the beginning a special recommendation at the end.

  • Ryan Dahl’s 2009 presentation of Node.js at JSConf 2009
    As cited in the Node.js mailing list, this gem is still best single intro to the concepts, architecture and general overview of Node.js despite the passing of two years (a long time in SSJS land!).
  • 7 Free E-Books and Tutorials for Learning and Mastering Node.js lists several sources, and I will outline a general description of each below.
  • edit (best dive in deep free resource): The “Let’s make a web app” series of articles and accompanying github repo commits conforming the Nodepad editor project (built on Node.js, Express.js and MongoDB) on the dailyjs.com blog, written by Alex Young. Continually updated by Alex as different versions of node, npm, etc. emerge, it will “walk you through building a web app with Node, covering all the major areas you’ll need to face when building your own applications.”
  • edit (deserves special mention): Hands-on Node.js  http://nodetuts.com/handson-nodejs-book.html
    You can download the first 60 pages of this $3.99 book for free. My verdict: looks like it actually gives devs what they need to start building applications. Will write review after working with it.
    Code: https://github.com/pgte/handson_nodejs_source_code
  • edit: http://www.ibm.com/developerworks/cloud/library/cl-nodejscloud/
  • Chapter 14 of Test-Driven JavaScript Development is a gem! Work through this! Live like this! See comments below to see why.

How to clone the Node.js web development tool Express from github and easily run the examples

Sometimes the simplest, easiest things are not documented anywhere, or at least, not documented very clearly, so I just thought I would document what I did here in order to get started running the examples provided in the full Express codebase.

Let’s suppose that node and npm are already installed and I am in the home directory of a Linux user. I do:

$ git clone https://github.com/visionmedia/express.git express_examples

and Express is cloned to the express_examples subdirectory. I then change into that directory:

$ cd express_examples

and tell the npm package manager to check for all dependencies (if you are on the Express mailing list see discussion at http://groups.google.com/group/express-js/browse_thread/thread/166a75fdb33c4ea8):

$ git submodule update --init 
$ npm install

The package manager npm will now do a lot of work and pages will scroll by. After a short while the trundling will stop and a ./node_modules directory will be filled with dependencies.

Then you can run any example you like: