Review: Discover Meteor

I was following the genesis of the book: “Discover Meteor” since I heard about it the first time. That’s already a few month ago now, I guess, and the book was still named “The Meteor Book” back then.

Discover Meteor
Discover Meteor by Tom Coleman and Sacha Greif

Since I decided that Meteor will be my web framework of choice for the forthcoming projects, I have heavily anticipated the publish date. A first book gives a new technology the appeal of being maintained and active the following months, as well.

But then. $39. I was stunned.

Then angry.

After a few days struggling, I decided to not spend so much money for information that I thought of being freely accessible, and that is certainly outdated in a year or so.

Granted the authors give us some additional material, but for me this didn’t make up for the ridiculous price tag.

After reading it, I must say it’s a decent book, and it taught me really a lot. But still I don’t get this pricing policy.

$10 and I would have bought it straight away. Without even thinking twice. I would have bought it for $20 also, I guess.

I have a not-really-bad-paid full time job (or maybe it is badly paid, I’m still trying to figure that out). I’m intrigued by the technology. I have some experience using it. I’m building an app with real users. I read books and don’t mind to pay for them. I plan to use the technology in further projects. And still, I wasn’t willing to spend 39 dollars.

I’m certainly a member of the book’s target audience, even if underpaid. So who actually would buy it? I expect that sales are not going pretty well. But I can be absolutely wrong here.

Luckily I received the chance to read it for free (in exchange for this review). Thanks Sacha. So let’s forget the price tag for now and concentrate on the content.

Structure

For me one of the most important things in non-fiction and specifically in technical focused guides and manuals is a decent structure. Some readers prefer to go linearly through their technical books and others prefer to pick out chapters they are most interested in. Both styles should be supported. The authors did a pretty good job here.

They choose the path of building an example app (called “Microscope”) as the guiding principal. Every main chapter adds some specific functionality to the app. But it’s not only that new features are added, which would have resulted in a quite boring read. No, every chapter introduces a new aspect of Meteor, enhances or enriches an earlier introduced aspect or cleans up the previous code by applying some thought through pattern.

This structure works well for a sequential read. To help the random-access readers there are Github submits for every chapter. So you can pick up the apps state quickly and cleanly. Then progress through the chosen chapter.

Besides those main chapters, that build the example app, the authors have, strategically well, placed more technology oriented aspects in separate chapters, called sidebars. Those chapters take the reader deeper into the inner workings and concepts of Meteor and provide her with proper background information to build her own real world Meteor application.

The Good Things

Most aspects of building a Meteor app are covered well and to great detail. I’m missing a chapter about including arbitrary client side JavaScript frameworks, though. A fulltext editor, for example. Or something simpler, like a library to translate time spans into natural language.

The authors found a good balance between readability and accuracy. It was even fun to read this book. That’s not a small feat to achieve in a technical book.

For me the presented code looks well, it’s not to much to disturb the reading flow and the following discussion picks out the main aspects at the right level of detail. Another not so small feat achieved by the authors.

It’s absolutely believable that the authors speak from experience and achieved those insights by intensely using Meteor over the past month. They refer to their real-word app: “Telescope” from time to time, and use it as an example to hint at even more advanced topics.

Throughout the book the authors keep security aspects at high significance. The sequential reader builds his example app step by step, as if it was planned to be used out in the wild-wild internet.

Different aspects of data security and how to deal with them properly are often discussed. I haven’t touched those aspects, since I’m currently building an inhouse app with low (to none) security requirements. So there was much to learn for me.

I liked the chapter about the different deploying options and will try the path of an inhouse deployment soon.

There is one thing I learned the hard way, it is much simpler to use multiple collection instead of building complex nested document structures. The book would have saved me some headaches in this area.

The topic of structuring your Meteor app properly isn’t really discussed in absolute depth, but I think by following the example’s structure I would have spared me some other headaches, when I was struggling with source files, that where loaded in the wrong order.

The Bad Things

The authors use Meteorite right from the beginning. It’s understandable, since Tom Coleman is the author of Meteorite. But I don’t like introducing technology that isn’t really necessary – I’m still using plain Meteor. I would even go so far and discourage the use of Meteorite since Meteor is going to open up its built-in package system in the near future. Last time I checked it was planned for 1.0.

The book doesn’t feel complete:

  • Bootstrap is added to the app without loosing a word for what reason. Only later the authors say a little bit about it.
  • The whole stylesheet for the final app is presented with little fuss. In the animation chapter (close to the end) the missing introduction to CSS strikes back.
  • Underscore.js and jQuery are used without much comment.
  • The books rather ends abruptly. Some finishing words, an outlook on the features to expect in the future and some links to in-depth literature would have been really nice.

I think the authors should have used yet another category of chapters. There they could have introduced the used supporting technologies (CSS, Bootstrap, Underscore.js, JQuery, …) properly. This way the books audience would be much larger. Inexperienced readers could build a web app from scratch, picking up the essentials about underlying technology while they progress through the book.

Node.js – as the underlying technology – is flagged as being volatile to rapid changes. But there is no word of caution (I remember) about Meteor itself. The Meteor folks title it as being pre-alpha, so major changes are going to be expected. I had to refactor some majors aspects of my app due to Meteor updates in the four month I’m working on the app now. I remember at least twice.

I don’t like the one sentence paragraph writing style very much and sometimes I wished the writing would have been a little more ornate. A little more detail. Or a little more to consider and to keep in mind. But that’s a matter of taste.

Conclusion

If you are looking for a good introduction to Meteor. If you seriously plan to build something with it. If you already have some experience with modern web technologies. And if you don’t mind spending $39. Then I can highly recommend “Discover Meteor”.

If there were to many IFs in the paragraph above, you can alternatively invest some time to look up the information yourself. Even if this means you have to explore the sources of Meteor. But keep in mind, that you might do things wrong or suboptimal at first.

I really learned a lot by reading “Discover Meteor” and understand certain aspects of Meteor much better now. Actually, I’m facing a major refactoring of my current app because of this book. So you can spare you some trouble and buy it.

I’m to much a tinkerer at heart, as to recommend it without constraint, though.

4.5 out of 7 points (with a realistic price tag: 6 out of 7)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s