Alex MacCaw

Ruby/JavaScript developer & entrepreneur. O'Reilly writer and open source developer. Working for Stripe.

I'm @maccman on Twitter.

I'm maccman on Github.

I'm oldmanorhouse on Skype.

I'm here on Linked in.

I'm here on Delicious.

Current OS projects:
I've created/written:
Email me

I am now blogging at

My book and other news

May 04, 2011


Well, according to this blog I'm still in Cambodia. Unfortunately, that's way out of date, I've been through Cambodia, Vietnam, Australia, New Zealand and am now in Hawaii - I've just been really negligent in updating the blog. What's the excuse reason for all the radio silence? Well, I've just finished writing the first draft of that JavaScript Book for O'Reilly I mentioned a while back.

You can get the rough cuts version right now off O'Reilly's site. Here's a bit of blurb to explain it:

Stateful JavaScript Applications is a new book by Alex MacCaw, published by O'Reilly, written to help you build the next generation of rich internet applications. Building rich JavaScript applications that bring the desktop experience to the Web is now possible, thanks to powerful JavaScript engines and the CSS3 and HTML5 specifications. The key is moving state from the server to the client side; but that’s no simple task. This book takes you through all the steps necessary to create state-of-the-art JavaScript applications, including structure, templating, frameworks, communicating with the server, and many other issues.

The core of the book covers the MVC (Model, View, Controller) pattern, and how to best structure and manage dependencies inside your JavaScript applications. State management and routing is also covered, with a special emphasis on using hash fragments in the URL, and HTML5's history API. Learn about rendering views with client-side templates and data binding. New APIs, such as HTML5 drag/drop, WebSockets, file reading and Ajax file uploading are explained in detail, with practical real-world examples given at ever stage.

Penultimately the book covers the testing and deployment stage of building web applications. Finally, if you're keen to learn more about Backbone, JavaScriptMVC, or Spine, we have chapters in the appendix giving your a full introduction to each framework, as well as step by step tutorials for building example applications. If you want to see a full table of contents, see the pre-release site.

Traveling & writing

Traveling and writing wasn't as difficult as I first thought it might be; it beats working and writing, that's for sure. I just took an hour or two every evening for writing, and progressed slowly but steadily. Often I didn't have internet access for a few days, so I'd have to save certain articles and libraries offline to continue writing. At other times where were power issues, i.e. no electricity in some parts of Africa and Cambodia. Forward planning was the key in the latter case, making sure the laptop's batteries were charged. All in all it was a great experience, and kept the brain ticking over, instead of turning to mush as it often does when un-used.


Spine is a JavaScript library for building Web Applications I wrote in New Zealand. It has a similar approach to other libraries, like Backbone, but also some unique differences. Check it out. In addition, I've re-written Holla and created a lot of example applications for the library:

Todos is a very simple to-do application. Users can CRUD tasks, and mark them as complete. The source is available on GitHub. [Demo]

Spine Todos

Spine contacts is a simple address book, allowing users to CRUD contacts. The full source is available on GitHub. WebKit only. [Demo]

Spine Contacts

Holla is the most advanced example, and can be found on GitHub. Holla is a group chat application, and uses a combination of Rails, Juggernaut and Spine to let users chat in realtime. WebKit only. [Demo]


Finally Addy Osmani has written a great tutorial on building Spine applications.

Next stop

Next destination is New York City! I'll be there for TechCrunch Disrupt and the Hackathon. See you all there!