Skip to main content

Book review: Sproutcore Web Application Development

TL;DR: Sproutcore is a huge framework, and this book will save you a lot of time (and headaches). Buy it.
Disclaimer: this is a review of a free copy that Packt kindly sent me.
SproutCore Web Application Development cover

Win a free copy of this book, scroll down to know how to participate!

If only I had this book 3 years ago!

3 years ago I started developing a Sproutcore app as a learning experience and, in all honesty, the path has been rough. Sproutcore is a massive framework with lots of features: some are well documented, some mentioned casually in the guides, some others...well you don't know they are there until you start reading the code or chat with one of the more knowledgeable devs in IRC.
Documentation has always been an issue for Sproutcore but now, thankfully, there is a book. If I had this book 3 years ago I would have gotten much quicker up to speed and the code base would have been (much, in fact) cleaner (and smaller!).

Sproutcore Web Application Development covers all most important areas of Sproutcore: installation, concepts and getting started, key-value-observing, the model, view and the controller/states objects, styling, domain objects modeling and using a data source to fetch them from a server, and, last but not least, deployment.
Sometimes Tyler will highlight a specific feature when it can be generally useful. For instance in Chapter 2 there is a whole section dedicated to mixins and how they can improve code sharing and reduce duplication when classical object inheritance cannot be used.
In other cases he provides guidance on avoiding common pitfalls, as in the chapter on statecarts.

Code fragments are always clear, coincise and generally well-written. I have not tried following through an example but I am quite sure it would work on the first or second try. Tyler is a rather gifted coder and I suggest you check out his github account for more Sproutcore resources.

One thing I would like to suggest is that in the future the source for example apps was made available through github or another public repository for easier checking out. As of now the code for the Contacts app is only available from the PacktPub website as a ZIP archive.

The book does not cover: routes, outlets, theming and some lesser used views or, to avoid unnecessary duplication, topics already documented in the guides.

Straight from the source: the author is the current project lead, the reviewers are or were prominent members of the community.

Absolutely recommended for beginners and heartily recommended even for medium-advanced users (as I would define myself).

Win a free ecopy of the book!


Readers would be pleased to know that Packt Publishing graciously offered to organize a Giveaway of the SproutCore Web Application Development book and three lucky winners stand a chance to win a free ecopy. Keep reading to find out how you can be one of the Lucky Winners.

Book Overview:
• Use SproutCore’s object model to organize code into classes, subclasses, and mixins
• Observe and bind properties across the code for efficient updates and error-free consistency
• Structure code and separate responsibilities using client-side MVC
• Define and build the user interface of extremely complex applications using SproutCore’s view library
• Interact with remote data sources and model and store data in the client for immediate use
• Connect an application together without messy, bug-prone controller code using SproutCore’s statechart library
• Combine all of these skills in a repeatable process to create production-ready software
• Test and deploy SproutCore applications

How to Enter?

All you need to do is head on over to the book page (SproutCore Web Application Development) and look through the product description of the book and drop a line via the comments below this post to let us know what interests you the most about this book. It’s that simple.

Winners from the U.S. and Europe can either choose a physical copy of the book or the eBook. Users from other locales are limited to the eBook only.

Deadline

The contest will close on Jan, 7 2014 PT. Winners will be contacted by email, so be sure to use your real disqus account when you comment!

Comments

Popular posts from this blog

Mirth: recover space when mirthdb grows out of control

I was recently asked to recover a mirth instance whose embedded database had grown to fill all available space so this is just a note-to-self kind of post. Btw: the recovery, depending on db size and disk speed, is going to take long. The problem A 1.8 Mirth Connect instance was started, then forgotten (well neglected, actually). The user also forgot to setup pruning so the messages filled the embedded Derby database until it grew to fill all the available space on the disk. The SO is linux. The solution First of all: free some disk space so that the database can be started in embedded mode from the cli. You can also copy the whole mirth install to another server if you cannot free space. Depending on db size you will need a corresponding amount of space: in my case a 5GB db required around 2GB to start, process logs and then store the temp files during shrinking. Then open a shell as the user that mirth runs as (you're not running it as root, are you?) and cd in

From 0 to ZFS replication in 5m with syncoid

The ZFS filesystem has many features that once you try them you can never go back. One of the lesser known is probably the support for replicating a zfs filesystem by sending the changes over the network with zfs send/receive. Technically the filesystem changes don't even need to be sent over a network: you could as well dump them on a removable disk, then receive  from the same removable disk.

How to automatically import a ZFS pool built on top of iSCSI devices with systemd

When using ZFS on top of iSCSI devices one needs to deal with the fact that iSCSI devices usually appear late in the boot process. ZFS on the other hand is loaded early and the iSCSI devices are not present at the time ZFS scans available devices for pools to import. This means that not all ZFS pools might be imported after the system has completed boot, even if the underlying devices are present and functional. A quick and dirty solution would be to run  zpool import <poolname> after boot, either manually or from cron. A better, more elegant solution is instead to hook into systemd events and trigger zpool import as soon as the devices are created.