Share this project

Done

Share this project

Done
A book series exploring the parts of JavaScript that we all think we understand but don't REALLY know.
A book series exploring the parts of JavaScript that we all think we understand but don't REALLY know.
500 backers pledged $16,400 to help bring this project to life.

About this project

"You Don't Know JS" (book series) project video thumbnail
Replay with sound
Play with
sound

$16,400

500

"You Don't Know JS" is an exploration of the mysterious, confusing, complex, and controversial parts of JavaScript.

If you write JavaScript for your primary job, odds are, you're pretty good at it. But honestly, how well do you really know the language? Most of us, myself included, spend years writing JS and never really going beyond a surface understanding. And then we blame our WTF moments on "the bad parts".

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".

How?

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.

Why Kickstarter?

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!

"I no longer have to smile and nod during hardcore JavaScript discussions at work." Matt Buck

"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

FAQ

  • 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.

    Last updated:
  • 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. :)

    Last updated:

Support this project

  1. Select this reward

    Pledge $5 or more About $5

    Cheerleader(x); you will be listed in the thank-you's of all books in this series as a supporter of the project.

    Less
    Estimated delivery
    2 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  2. Select this reward

    Pledge $10 or more About $10

    EbookMe(1); get 1 ebook of the *first* book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    41 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  3. Reward no longer available

    Pledge $15 or more About $15

    UpgradeMe(1); get 1 ebook of the *first* book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Reward no longer available 15 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  4. Select this reward

    Pledge $25 or more About $25

    EbookMe(x); get 1 ebook of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    269 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  5. Reward no longer available

    Pledge $30 or more About $30

    UpgradeMe(1); get 1 ebook of each book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Reward no longer available 15 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  6. Reward no longer available

    Pledge $31 or more About $31

    UpgradeMe(1); get 1 ebook of each book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Reward no longer available 20 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  7. Select this reward

    Pledge $35 or more About $35

    EbookMe(x) + BookMe(1); get 1 ebook of each book in the series, plus 1 printed copy of the *first* book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    18 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  8. Select this reward

    Pledge $35 or more About $35

    EbookMe(x) + TshirtMe(1); get 1 ebook of each book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    29 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  9. Select this reward

    Pledge $38 or more About $38

    AvatarMe(1) + EbookMe(x); get your name/nick + avatar on a challenge or reward card in the "You Don't Know JS" game, plus get 1 ebook of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project, plus be listed in the hall-of-fame of the game.

    Less
    Estimated delivery
    Limited 14 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  10. Reward no longer available

    Pledge $48 or more About $48

    CharacterMe(1) + EbookMe(x); get your very own named/designed character in the "You Don't Know JS" game, plus get 1 ebook of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project, plus be listed in the hall-of-fame of the game.

    Less
    Estimated delivery
    Reward no longer available 10 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  11. Select this reward

    Pledge $50 or more About $50

    EbookMe(x) + BookMe(1) + TshirtMe(1); get 1 ebook of each book in the series, plus 1 printed copy of the *first* book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Limited 23 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  12. Select this reward

    Pledge $68 or more About $68

    RoomMe(1) + EbookMe(x); get your very own themed room/area in the "You Don't Know JS" game, plus get 1 ebook of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project, plus be listed in the hall-of-fame of the game.

    Less
    Estimated delivery
    Limited 9 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  13. Select this reward

    Pledge $75 or more About $75

    EbookMe(x) + BookMe(x); get 1 ebook of each book in the series, plus 1 printed copy of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Limited 12 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  14. Select this reward

    Pledge $85 or more About $85

    EbookMe(x) + BookMe(x) + TshirtMe(1); get 1 ebook of each book in the series, plus 1 printed copy of each book in the series, plus an exclusive "You Don't Know JS" t-shirt, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Limited 14 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  15. Select this reward

    Pledge $100 or more About $100

    EbookMe(x * 10); get 10 ebook licenses of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    2 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.
  16. Select this reward

    Pledge $150 or more About $150

    EbookMe(x * 10) + BookMe(x); get 10 ebook licenses of each book in the series, plus 1 printed copy of each book in the series, plus be listed in the thank-you's of all books in the series as a supporter of the project.

    Less
    Estimated delivery
    Ships to Anywhere in the world
    Limited 2 backers
    $
    Kickstarter is not a store.

    It's a way to bring creative projects to life.

    Learn more about accountability.

Funding period

- (33 days)