Tuesday, January 26, 2010

I'm a Semi-Published Author! (Closure: The Definitive Guide)

Today, I am officially a semi-published author in that the half of the book I am working on is available (for pay) online as part of O'Reilly's Rough Cuts program! The title is Closure: The Definitive Guide, and as you may have guessed, the aim is to create an (invaluable!) manual for the Closure Tools suite. When I am finished, the book will cover the Library, Templates, the Compiler, the Testing Framework, and the Inspector, though the six chapters that are available today are only on the Library. However, if you purchase the book through Rough Cuts, you will get the updates to the book as I publish them there, so it is more like buying a subscription than a book.

I am extremely excited about the Rough Cuts program because it allows me to get information out to you, the web developer, much faster than I could if I forced you to wait for the print version. It also gives you the opportunity to provide me with feedback to help ensure that the Guide contains the information that you need.

For those of you who have purchased a book via Rough Cuts before, you may be surprised to see how "rough" my book is compared to the other offerings. This is a fairly new program at O'Reilly, so the first books to go through Rough Cuts were not made available until a nearly complete draft of the book was done. By comparison, my book is half done and has gone through neither copy edit nor technical review. So when providing feedback, please bear in mind the staff at O'Reilly will ultimately help with things like the misuse of parallel structure, but I need your help in determining when something merits a code sample or more explanation.

The material that is currently available is:
  • Preface
  • Chapter 1: Introduction to Closure
  • Chapter 2: Annotations for Closure JavaScript
  • Chapter 3: Closure Primitives
  • Chapter 4: Common Utilities
  • Chapter 5: Classes and Inheritance
  • Chapter 6: Event Management
  • Appendix A: Inheritance Patterns in JavaScript
  • Appendix B: Frequently Misunderstood JavaScript Concepts
Although there is nothing that requires me to write the chapters in order, I was encouraged to start out that way in order to have something that would be well-connected for Rough Cuts readers. This meant that I had to draft the introduction earlier than I would have liked, but I am actually quite happy with what is there right now. Among other things, it contains a complete "Hello World" example that shows how to use all of the tools together, which is something I have yet to see on any blogs or even as part of Google's own documentation.

Currently, I am taking a break from writing more on the Library and am skipping a few chapters ahead to start focusing on the Compiler. As an active member of the Closure Google Groups, it is pretty clear to me that developers need more help in that area, so I hope to make that information available soon.

I also hope to improve Closure in the process of writing this book. When I run into things that I feel are hard to explain, sometimes I end up filing bugs or feature requests against Closure with proposed changes. It is so much easier to write a few paragraphs to report a bug than it is to draft several pages to explain away a quirk!

With 150 pages of content, I suspect I have given you enough to chew on while I put together more information on the Compiler. Please take a look and let me know what you think.

Update: Changed the book link from http://techbus.safaribooksonline.com/9781449381882 to http://my.safaribooksonline.com/9781449381882 where it is actually possible to purchase the book! There is a button that says "Purchase Options" on the upper-right.


  1. Link isn't working for me right now...

  2. Really -- are you using http://my.safaribooksonline.com/9781449381882? It is working for me.

  3. Link not working for me either =(
    Redirected to http://proquest.safaribooksonline.com/pagenotfound

  4. Seriously? I just tried http://my.safaribooksonline.com/9781449381882 and it still works. Are you trying to access it on an iPhone or something? I'm probably the only one who does that because I keep refreshing to see if there are any comments (ahem!), in which case I use http://my.safaribooksonline.com/9781449381882/?redirectmobile=false. I swear the link even works in Internet Explorer -- Internet Explorer!!!

  5. it depends on the network location. for example you cannot access title from the UC Irvine campus, but you can from a nearby city.

    something must be screwy on the safari site.

  6. typo on page 80: "... be used. (Ths is an anomaly in Closure ..."

    also there are a few code examples that should not work - set up on the purpose of illustration. I wish they were clearly marked up with some icon or something like that. It's not easy to pick up by skimming whether it's correct code or not.

    like this piece on page 80
    var none = goog.dom.getElementsByTagNameAndClass('span', 'footer copyright');

  7. If you would like feed back why make it so incredibly difficult to find an email.

    Anyways here is as good a place as any.

    - Great book one of the most enjoyable tech reads in a while
    - Upload file example does not work using chrome (disabling the file input breaks the upload)
    - IframeIo is not given the credit it deserves. Its awesome and you justs kip over it as an 'upload' control.
    - The chapter on UI components is too verbose. This chapter is critical to understating closure properly. The life cycle needs to be explained better (more succinct).

    I think what I'm trying to get to is that this chapter looses its effectiveness due to its huge volume of information (and sample code, closure does not sample code very well due to its enormous verbosity).
    - Overall a great book Michael, props to you and congrats on becoming a published author.

    Guido Tapia