About this project
This book series will examine the things that trip up or confound even the most seasoned of JS devs. And I was one of them until (recently) I spent enough time poking at the tough parts to understand them. Now I want to help other devs have those "a-ha!" moments, too!
What if you could really deeply know how JS works? Would that change how you view the language? I think so. Really, I do. A big part of why I love JS is that I finally "get it".
This book series will consist of several mid-length (50-75 pages) books, primarily distributed as ebooks (with print copies upon demand). The marketing, publishing, and distribution will be fulfilled by O'Reilly, so you'll get a high quality book product, either digitally or in print.
The current books planned (though not necessarily in this order) are:
- "Types & References": Ever heard someone claim that JS is "dynamically typed" or even that it "has no types"? Turns out this is not terribly accurate, and there's tons of misconceptions about how types really do work in JS. We're going to look at what JS types are and how they work, including implicit and explicit coercion between them. We'll also look at how references work in their various usages across the language.
"Scope, Closure, this": Can you define/explain "lexical scope"? Do you know what the exceptions in JS are to lexical scope? Ever heard of "dynamic scope"? Know about the difference between function-scope and block-scope? Bet you didn't know that JS already has one instance of block-scope even before ES6, did ya?
Just what is a closure if you're not into the mathematical lambda calculus? Are you aware of the 4 different ways that this gets assigned inside a function execution? Do you know what hard-binding is, and are you aware of how it can be overridden? I hope this book will be enlightening for even the most experienced of JS devs.
"Objects & Prototypes": Sure, JS is "object-oriented", right? Or is it? What exactly does that mean? Why are "classes" and "inheritance" so awkward and verbose to express in JS? What exactly is the [[Prototype]] and how is it more related to "behavior delegation"?
How much simpler can we make our code if we do away with constructors and inheritance and deal only with objects linked to other objects? Nearly two decades of mostly incorrect information and thinking about JS's object mechanism have shrouded and confused the topic almost beyond hope. But not entirely. We're going to unwind it all.
And if you want to get a preview of this book, I've already written a good chunk of it in the form of this 3-part blog post series. Expect in the book even more details, code and examples of how to make our code truly "object-based" in the most natural way possible in JS.
In addition, I'd really like to explore these topics for further books in the series: "Functional" (monads, etc), "Performance" (how can we really even reason about JS perf?), "Async" (promises, generators/coroutines, etc), "Evented" (pubsub, Observer, etc), and much more!
The minimum funding goal for this campaign will get me started on the first couple of titles in the series. For sure one book will launch, and likely at least #2. The more funding is raised, the more sure we are to get to book 3 and beyond more quickly.
I'm kickstarting this book series primarily to establish audience demand for these book topics before spending time writing them. The money part is nice, of course, but I'm far more interested in proving there's enough JS developers out there who want and need this kind of content.
I believe the traditional publishing model is somewhat broken in that it requires far too much risk from authors and publishers long before anyone knows if the demand is there for the book. This is my experiment into solving that dilemma.
However, I chose O'Reilly for the back-end because I believe everyone deserves a high-quality book product for their money. I don't think I can do better than they can at any of the stuff they're best at, nor do I want to try.
Even if you are meh on the books themselves, I'd ask you to support with even a small donation, just to help us get this new hybrid publishing model off the ground, for the benefit of all tech authors! My editors at O'Reilly really want to see this new model succeed, and I need your help to prove it to them!
What Others Say
Here's a few quotes that developer attendees have given on my recent JS workshops. Hopefully it gives you more a flavor of what you can expect from the books!
"no fluff, just lots of good stuff" Henry Clark
"The in-depth coverage and examples were extremely helpful" VC
"...though I had an okay understanding of closures, it was the best presentation of them I have ever seen. The whole discussion of scope built perfectly up to the explanation." BD
"...the strategy of delving deep into a few important topics, rather a shallow, wide breadth of topics was brilliant and is missing from many of the resources I have studied independently." Benjamin Pearson
Risks and challenges
The biggest risk is that the funding will only be at the minimum goal which will only ensure the first one or two books in the series, depending on scheduling and logistics. The more funds I can raise now, the more certain I am I can take a big chunk of time and write all these books at once, so they can be released in a timely fashion.
The good news is, almost all the content for the currently planned books is already prepared in basic form in my "Advanced JS" training workshop curriculum that I've been teaching for the last 6+ months. I just need to take this content and write it down in prose form. Moreover, I have several blog posts where a lot of first-pass content for some of the books has already been written.Learn about accountability on Kickstarter
Those estimated delivery dates can seem a bit... misleading. Here's the deal.
The ebooks will be written, edited, and digitally published as we go, which means you'll get access to them on an ASAP basis (meaning you'll get them as they come out, not all at once). Printing however is not necessarily on the same schedule, where we might wait to print until we have 2 or 3 to run at once, etc. The t-shirts, if you pick one of those rewards, will be available much earlier, as soon as we decide on a final title/logo for the series that's suitable. The teaching/training, if you pick one of those rewards, will be available basically as soon as funding comes through.
A lot of developers now feel that the idea of a book form for a piece of content is outdated and no longer preferred.
There's obviously a lot of content out on the web about JS that you can freely and easily access. But, if we're nearly 20 years into the life of JS and there's still so much magical and confusing stuff in the language, is that content really good enough? I don't think so.
I want to write in a coherent and consistent voice about these topics, so it's a much more consumable form for the content than the mish-mash of blog posts out there today. I think books, even digital ones, are a more preferred way of getting a lot of deep content, whereas blog posts are great for highlighting a topic and piquing your interest to go deeper.
Once you read a great blog post and get interested, it's these books where I hope you'll end up to really learn the topic. :)
Support this project
- (33 days)