Learn Meteor.js Properly

(Learn Meteor and Everything You Need to Know about It)

At the end of this article, I outline two comprehensive study guides to help you learn Meteor properly. The study guides are for both beginners and seasoned developers. The first study guide, which uses a book, a paid screencast, and some free online resources, teaches you how to build a sophisticated, modern social-media web application with Meteor. And the second study guide, which uses only free resources (one affordable screencast and free online resources), is just as instructive as the first, though you won’t build a specific web application throughout the course.

First, I give a comprehensive Meteor overview, in which I discuss just about everything you want and need to know about Meteor before you commit to investing your time and other resources in this still burgeoning though exceptional technology.

What You Will Learn in this Meteor Overview

I explain exactly what Meteor is, how it differs from typical JavaScript frameworks, what it offers developers specifically, its alternatives and contemporaries, whether you should be excited or skeptical about it, and where to find Meteor jobs. I also enumerate some of the endorsements written by Meteor converts, and I explore the justifiable criticisms, known limitations, and frequently asked questions that many have raised about Meteor. You will learn all this and much more.

I am honored that you have joined me and I am hopeful you will find this article helpful and illuminating and the accompanying study guides and recommended resources sufficiently instructive. If you don’t, then I would have failed and I would like to hear from you; please notify me in the comments below. Don’t hesitate to alert me of any grammatical errors, typos, general errors, misinformation, missing information, outdated content, or incomprehensible sentences or passages. You won’t hurt my feelings, for I am most interested in providing you accurate, clear, and comprehensible material, and only you can determine whether I have done that.

Learn Meteor Properly Study Group

People have already started study groups for this study guide. One study group starting today (November 3) on Facebook already has over 100 members. You can also find the group on Reddit.

Receive Updates

How Will Your Life Change After You Learn Meteor Properly?

No, you won’t be cleansed of your sins and washed of your immoralities after learning Meteor properly. Neither will you lose five pounds nor grow two inches.

However, if you have never developed any kind of application before, you will experience ecstasy, so powerful and liberating it will free you to envision, build, and realize your imaginations, like an artist discovering paint and canvas for the first time.

If you currently use Meteor (and even if you have read a Meteor book or some tutorials), you will emerge better equipped to understand and handle common Meteor errors and the often-misunderstood Meteor “magic,” allowing you to experience Meteor’s true efficacy. Efficient, productive, painless.

If you use Rails, Node.js, PHP, Django, Go, Scala, or Java, you will understand Meteorites’ (i.e., Meteor developers) unapologetic praise for Meteor. You wouldn’t be convinced that every facet of Meteor is better than every facet of Rails or Django (it isn’t) or that Meteor will kill Rails or Python (it won’t). But you will undoubtedly acknowledge and appreciate, even if reluctantly, the efficiency and painlessness Meteor affords, as well as its effectiveness in making you a more productive developer—indeed, a happier developer. But be careful, my friend, for even a faithful developer can be tempted by seduction, lured by betterment, and give in to pleasure.

If you currently use proven but old-school technologies to develop applications, learning Meteor properly will allow you to experience the current state of modern web application development. This will prepare you for the foreboding robotic and futuristic frameworks that will inevitably evolve out of technologies like Meteor. You will therefore become familiar with the latest, experience the now, and embrace the inevitable.

Or, if after learning Meteor properly you remain unmoved, unconvinced, or unimpressed, then we would love to hear from you. For you may have invaluable information about efficient web-development tools that we can all use.

Meteor Transcends (Goes Beyond) Typical JavaScript Frameworks

To characterize Meteor as a “JavaScript framework” would be to:

rob Meteor of its comprehensive and integrated ecosystem; that is, unlike typical JavaScript frameworks, Meteor offers much more than just a front-end, a backend, or a combination of the two with some libraries. It offers everything you need to build web applications: a seamlessly integrated ecosystem that includes frameworks, libraries, database, tools, and more

overlook its extensive usefulness; that is, you can not only develop traditional RESTful web apps and modern real-time web apps with Meteor, but you can also deploy and host web apps, build and deploy mobile apps, connect Arduinos, and more

and ignore its expansive efficacy; that is, Meteor has proven effective not only in helping developers build all sorts of applications and packages efficiently and painlessly, but also in empowering others—including the poor1, the nontechnical2, and the uninitiated3—realistically and inexpensively acquire a highly valued skill: the capacity to develop complete web and mobile applications in relatively short time and with limited resources

For these reasons—its comprehensive and integrated ecosystem, extensive usefulness, and expansive efficacy—Meteor transcends, or goes beyond, typical JavaScript frameworks, a characterization more apt for frontend frameworks like Backbone.js, Ember.js, Angular.js, and the like.

What Exactly Is Meteor?

Since Meteor is not a JavaScript framework, what is it then?

Written in JavaScript on the Node.js platform, Meteor is an open-source Isomorphic Development Ecosystem (IDevE) for efficiently and painlessly developing web and mobile applications. The Meteor ecosystem seamlessly integrates all the components (tools, libraries, databases, and frameworks [frontend and backend]) necessary for building and deploying applications.

In short, Meteor provides you with everything you need—except for your desire and a text editor—to develop and deploy complete applications.

Meteor makes developing applications efficient by providing a no-fuss API that works the same everywhere and by including many pre-built functionalities most applications need. And it makes the process painless (relatively painless) by removing many of the technical hurdles developers usually have to contend with when developing applications.

Isomorphic Development Ecosystem (IDevE)
Isomorphic. Isomorphic refers to using the same code on the frontend and the backend; that is, using the same API everywhere (frontend, backend, and even for mobile apps). For example, a piece of isomorphic code is Meteor.logOut(); calling this piece of code would work the same on the frontend and the backend, and even in your mobile Meteor apps. You can think of isomorphic as homogeneous (of the same kind).

Development. Meteor provides all the tools for the application development life cycle, from setup and configuration tools to API and deployment tools.

Ecosystem. To understand the difference between a JavaScript framework like Angular.js and a development ecosystem like Meteor, consider this: A framework is like an unfurnished kitchen; it has a sink with running water, a stove, and an empty refrigerator; you can cook in such a kitchen of course, but you must bring your own vegetables, pots, containers, and everything else you need, including cabinets for storage. An ecosystem, on the other hand, is like a furnished kitchen with a stocked refrigerator; you need only your desire, maybe a recipe too, and you can cook any kind of meal in the kitchen. The ecosystem provides you with everything you need—all the ingredients, all the utensils, all the containers, all the storage space, and more—to cook complete meals from beginning to end.

The Meteor ecosystem includes a seamlessly integrated frontend, backend, and database; a well-conceived isomorphic API linking the entire core system as well as linking third-party smart packages; and the tools and managers. The stocked Meteor kitchen—the Meteor ecosystem, with all the vegetables, cabinets, utensils, and ingredients—allows you to season, cook, and enjoy: setup, develop, and deploy.

Incidentally, you don’t have to deploy or host your Meteor apps with Meteor; you can use any other service provider or deploy your apps to your own server.

Alternatives to Meteor

The alternative to an IDevE (Isomorphic Development Ecosystem) is either an MDevE (Multifarious Development Ecosystem) or an MDevE Generator. An example of MDevE is Mean.js, which combines multifarious (i.e., of various types—different APIs: MongoDB, ExpressJS, AngularJS, and Node.js APIs) libraries, frameworks, and tools to create a development ecosystem somewhat similar to Meteor. Though the APIs are multifarious (not isomorphic), they are still integrated, such that Mean.js presents an integrated ecosystem like Meteor. Mean.io, which is nearly identical to Mean.js also deserves a mention as an MDevE.

Derby.js, also an alternative (though not a viable one as of November 2014) to Meteor, is the only other MDevE I am aware of; it presents an integrated ecosystem like Meteor and Mean.js, but Derby is simply incomplete and buggy at this juncture, and its documentation and examples need much work.

An example of an MDevE Generator is Yeoman, which allows you to easily use the command line to generate MDevE ecosystems like Mean.js. Indeed, Mean.js (an MDevE) and Yeoman (an MDevE Generator) are viable alternatives to Meteor.

Another IDevE like Meteor is Hoodie.js, a new open source ecosystem almost as ambitious as Meteor. But like Derby.js, Hoodie has a long way to go to be considered a viable alternative to Meteor. We can justly conclude then that Meteor is the only viable IDevE available today.

What Specifically Does Meteor Offer Developers?

As I noted above, IDevEs (like Derby.js and Meteor), MDevEs (like Mean.js), and MDevE generators (like Yeoman), pushing beyond modernity, offer developers similar automation, configuration, and suite of libraries, frameworks, and tools. Meteor, in particular, offers developers much more than those technologies, though, and, arguably, its seamlessly integrated ecosystem has no equivalence today, as you will see from the list of features outlined below:

Meteor not only has a one-step installation for configuration and setup, but it also has an isomorphic API, which refers to using the same code on the frontend or backend, or even for mobile and web apps. This saves developers hours, perhaps even days and weeks, since there is no need for developers to wrestle with installing, configuring, and learning disparate libraries, module managers, multifarious APIs, drivers, and the like.

It offers not only a front-end framework, like Backbone.js, but also a backend that seamlessly integrates with the frontend, and an easy-to-use API for communicating between the two; this provides developers with straightforward, no-fuss client-server data management (Collections, Models, etc.), server-side methods, and server session management.

It provides not only bidirectional persistent communication (like socket.io), but also simplified reactive programming (like Bacon.js). The reactive programming library works in conjunction with the front-end framework to reactively (that is, instantly and continuously) update the UI whenever dependable data or variables change. Moreover, a Meteor community developer has implemented the Meteor front-end templating engine on the server, providing server side templating for Meteor. I should caution that this implementation is still in its infancy.

It offers not only a stack that includes MongoDB database (with PostgreSQL and others planned), but also a front-end representation of MongoDB, called Minimongo, written entirely in JavaScript and available in every connected client. Meteor integrates the two (MongoDB on the backend and Minimongo on the frontend) in a well-conceived manner to mitigate latency, a concept called latency compensation. This results in considerably faster page updates and reloads, leading to a more satisfying user experience for developers and end users alike.

It not only has a standardized Mongo API on both the frontend and backend, but it also has Oplog tailing for MongoDB, resulting in applications using substantially less server resources.4

It has a standard front-end router (created by a Meteor community member) that implements the best features from other popular front-end routers, and this router also provides server side routing and includes a familiar API like Express.js’s routing API, even allowing for connect middleware, RESTful endpoints, and the like.

It has a lightweight front-end framework, Blaze.js, that has a templating engine that supersedes Handlebars.js, with a rendering engine similar to the WIP (Work in Project) HTMLBars. I should note that Blaze is neither as feature-rich and robust as Ember.js nor as expansive and extensible as Angular.js.

Its integrated live browser reload (also known as hot code load and hot code push) not only automatically reloads your live web page whenever you make development changes on the frontend (HTML, CSS, images, JavaScript, etc.), but it also automatically refreshes just the necessary DOM elements on the page (without reloading the entire page), even when there are dependent changes to data on the backend (MongoDB) or frontend (Minimongo).

It comes with requisite core packages to handle minification, preprocessing, concatenation, OAuth and custom user authentication (signup, login, forget password, etc.)., emailing, and coffeescripting; packages for popular frameworks like bootstrap, backbone, and jQuery; and even a package for SEO compatibility.

It has its own command line tool that provides many of the functionalities provided by tools such as grunt, NPM, NVM, and the like. And if you add EventedMind’s em5 scaffolding tool, you also have some (though not most) of the functionalities provided by popular scaffolding tools prominent in Rails and Yeoman.

It allows you to use NPM modules and it provides its own build system (a custom package manger) that transcends NPM, providing nearly all the worthwhile and crucial NPM functionalities and more. You can install third-party or custom Meteor packages from atmospherejs.com, the official repository for Meteor packages. So you have access not only to NPM’s 98,000+ modules, but also to Meteor’s AtomophereJS 2600+ smart packages. Let’s allow Geoff Smith, one of the founding members of Meteor, to expound on the advantages and goals of Meteor’s package manager:

The main [goal] is “Isomorphic JavaScript.” This has come to refer to JavaScript code that can run equally well on the client or on the server, meaning that you can write your JS once and run it anywhere…you can add the http package and use the HTTP.get() function on both the browser and the server. It works everywhere, so now your Facebook friends-fetching code can be used anywhere in your app.6

Two-level namespace, where packages that are “safe bets” (widely used, mature, supported, tested) get a short name like “forms”, and experimental, up-and-coming, or personal packages get a name prefixed with the author’s name, like “gschmidt:forms.7

The package system needs to integrate nicely with Meteor’s asset building/bundling system.7

When you update to Meteor [0.x.x or 1.x.x], you’re pulling a new set of core packages, which are guaranteed to work together (because we’ve tested them, a lot!) We want to keep this experience, where you don’t have to micromanage the versions of all of your packages, and where “meteor update” always gives you a consistent known-good snapshot.7

It uses synchronous style coding, courtesy of the Fibers JavaScript library. This provides an easy to read code structure that many find more appealing than the asynchronous structure of callback functions, common in most JavaScript frameworks. I should caution that you must pay close attention to the section in the road map that deals with making async calls in Meteor because many seem to have trouble when making async calls in Meteor.

It even provides support for mobile apps through Cordova Phonegap integration. You can easily deploy your Meteor app as a mobile app, using these simple commands:

meteor run ios

“runs your Meteor app in an iOS simulator and starts the server.”8

meteor run android

“runs your Meteor app in an Android simulator and starts the server.”8

If you are wondering, hot code reload does work on iOS apps. Apple approved this functionality for apps in the AppStore.9

Meteor takes a proactive approach to security, reportedly with a core developer dedicated to addressing security.

It has an official testing framework, Velocity,. With Velocity, you can use your favorite testing frameworks like Jasmine or Mocha, and run acceptance tests with Selenium.

Finally, it not only has a team of dedicated and capable engineers with a vision for changing the world (nearly every team has that), but it also has a lovely bank account: $11.2 million in funding10 (hardly any team has that). This essentially secures Meteor’s stability for the near future, guarantees frequent updates and timely responses to Github issues, and ensures constant interaction with the community (well, when they think it necessary anyway).

Best Text Editors and IDEs for Meteor

You will develop Meteor applications easier if you use an IDE like WebStorm 9, the only IDE that supports Meteor. Watch this WebStorm/Meteor 9 tutorial that shows you how to use Meteor with WebStorm:

You should also watch these WebStorm tutorials to learn a bit more about WebStorm. While not the most comprehensive tutorials, they do teach you a thing or two.

Sublime Text is also an outstanding editor for building JavaScript applications, and you can use it to develop Meteor apps.

Should You Be Excited or Skeptical About Meteor?

With such a comprehensive and seamlessly integrated suite of tools and libraries, and a database, as well as a package manager, in one ecosystem, Meteor does much more than popular front-end frameworks like Angular.js and Backbone.js do, and more than MDevEs like Mean.js and Derby.js do.

Does this mean you should use Meteor to develop every kind of web application, or that Meteor is a better choice in most situations? No. Arguably, the versatility (the sheer number of options it offers) and modularity (the sheer number of ingredients, that is, frameworks and libraries you can integrate with it) afforded by an MDevE Generator like Yeoman provide the freedom some developers prefer over an isomorphic ecosystem like Meteor, even though Meteor is inherently modular to some degree: some of its components can be swapped or used outside the Meteor ecosystem.

Nonetheless, even though Yeoman is more versatile (i.e., you can generate all sorts of ecosystems with it, including Meteor itself) and modular (i.e, you can swap any part of the ecosystem; e.g., Backbone.js for Angular.js) than Meteor, I wouldn’t be surprised if, by the time Meteor reaches version 2.x.x, its funding, effective marketing, seamlessly integrated ecosystem, and all the other benefits I enumerated above will make it a natural and preferred choice for many web developers.

Are you excited to learn more about Meteor, to learn Meteor properly, to start building apps more efficiently?

Yes? No? Maybe?

At this point, having read all the benefits that Meteor offers, you likely look forward to learning and using (or continuing to use) Meteor. You may even be grinning approvingly, giving the thumbs up or the peace sign while your neurons delight in anticipation of the Meteor experience:

On the other hand, you might be skeptical or critical about Meteor, a new and largely untested technology. Perhaps you might even dislike Meteor (for any number of reasons), and you could be biting your teeth disapprovingly, calling my previous paragraphs bull’s pizzle while your blood boils and your fingers convulsed with rage; or perhaps more politely, you could be crossing your arms in defiance while your brow knit in contempt:

If you are among the thumbs-up, nodding, smiling, neurons-sizzling majority, I am hopeful you will find (or continue to find) Meteor as useful and fun to work with as I have. And I trust the Meteor core developers will continue to stabilize, secure, and optimize Meteor so developers needn’t worry about its limitations.

On the contrary, if you are so far unconvinced of Meteor’s wizardry and you are among the teeth-grinding, blood-boiling, brow-wrinkling minority, I do understand and respect your skepticism, for skepticism often authenticates, validates, and even disproves. Nevertheless, please keep reading. By the time you finish reading this article, following the road map, learning Meteor, and developing at least a couple of applications with it, Meteor will have charmed you just as it has charmed many others. For even a proud and defiant heart can be made gentle and agreeable by a motherly hug that resonates, an intimate kiss that titillates, a delightful web technology that captivates:

A Chorus of Praise and Appreciation for Meteor

Convinced or unconvinced, smiling or smirking, thumbs up or arms crossed, you have learned enough from me about the virtues of Meteor, so let’s hear from others in the tech community. Read for yourself the chorus of respect, of admiration, of exuberance:

On Hacker News, Reddit, and Twitter:

Anonyfox:

The biggest step forward for JS development is Meteor, hands down. For anything “appy”, the productivity is just insanely good. … I spent the last months doing meteor exclusively, and compared to the usual node/RoR/php stuff on the server and angular/backbone/ember on the client, meteor is just superb IMO.

Rywalker:

I am a Rails dev since 0.8 — but since moving to Meteor the past few months, I’ll not go back to Rails

Superplussed:

I was initially put off by [It’s non-npm package manager] as well… Now I see the the benefits of the closed ecosystem. In Meteor you are dramatically constricted in choice, but everything that is available to you works effortlessly together. If you install a package, you pretty much know it’s going to work. I really think that what is currently seen as a negative regarding the ecosystem is going to develop into one of its over-riding strengths. Suffice it to say, I’m sold on Meteor. Both in its current state given its youth, and in the direction it is moving.

Sewdn:

I run an agency in Belgium (redandivory.com) and we switched completely to meteor for all of our new projects. I think it’s the framework of the near future.

Mark_l_watson:

I am very impressed by Meteor! Earlier this year I did an experiment: I coded a complete application in Clojurescript + Clojure back end, and then afterwards in Meteor.
I have tons of Clojure experience (with little bit of Clojurescript), and not too much use of Javascript. I spent much less time on the Meteor version and it had lots more features. Really no comparison. Unless you really dislike Javascript I suggest you try Meteor.

Chiurox:

Last week, we had a last minute project that required some sort of webapp that could allow X number of users viewing a certain page on the browser and editing things off simultaneously with good enough conflict resolution. Of course, I could have done it with Rails on the backend… But as curious as I am, I decided to checkout Meteor and it was perfect for my case. In less than an hour (with Meteor) I had everything working as expected. The app was for a big social event and all it mattered in the end is that it worked and impressed everyone involved. No one really cares what you build it with, as long as you deliver. In my opinion, Meteor is worth a shot if you’re building a small scale reactive system.

Thomash:

it has really come a long way since i started developing with meteor about 4 months ago. if the pace of development continues as it did so far i think it will become even more relevant as time passes. Blaze is an absolute delight to work with nowadays and the framework in general feels smaller and more flexible allowing easy use of individual components.

Hharnisc:

Over the past year I’ve been replacing the tools I’ve built with Django one by one (as well as a few new ones along the way). Because of the publish/subscribe model and reactivity I’m finding that my codebases are smaller when compared to most Django projects.

Justifiable Criticisms, Known Limitations, and Frequently Asked Questions about Meteor

Some developers have raised a number of justifiable and unjustifiable criticisms about Meteor. While some of the concerns and criticisms have been either debunked or resolved in recent versions of Meteor, some remain justifiable. The frequently asked questions, known limitations, and justifiable criticisms about Meteor follow, along with a comment or an answer to each:

Frequently Asked Meteor Questions

Q: Can I build mission critical applications with Meteor?

A: Sacha Greif, Coauthor of DiscoverMeteor
Meteor is still beta software, but it’s actually very close to the 1.0 release. So within the next few months, it’ll probably be safe to assume that Meteor is ready for whatever you can throw at it!

Q: What kinds of applications can I not build with Meteor?

A: Sacha Greif, Coauthor of DiscoverMeteor
Meteor isn’t great for anything that’s mainly static content, like blogs or simple static sites. As a general rule, Meteor is great for apps, but not for sites. Another factor to consider is the fact that Meteor doesn’t do server-side content generation yet, meaning that your app won’t work without JavaScript enabled.

Q: Do you have proof of Meteor holding up and scaling well in production?

A: (?? Awaiting an official response from Meteor Development Group)

Q: What big companies or funded startups are using Meteor?

A: Sacha Greif, Coauthor of DiscoverMeteor
There’s a list on the Meteor site, but it could probably be updated. Two companies not mentioned there are LookBack and Respondly.

Q: Does Meteor scale at least as well as Rails in production?

A: (?? Awaiting an official response from Meteor Development Group)

Known Meteor Limitations

Meteor works only on Mac, Linux 64, and Linux 32.

It does not officially support Windows, Solaris, and Freebsd.

It supports only one database: MongoDB.

It has no support for sharding on MongoDB.

Its frontend framework does not have reusable UI components.

It has only partial support for Redis.

It does not work well with SEO, even with its Spiderable hack.

Justifiable Meteor Criticisms

Dnprock: Reactive template is nice but can lead to very hard to debug issues…. There’s no really good way to debug reactive update trigger.

A: (?? Awaiting an official response from Meteor Development Group)

Lack of generators when compared with Rails and other frameworks
Neya: We’re talking about the basic reason why people choose rails: Productivity (Getting stuff done) and getting your product out to the market. I think in this perspective nothing beats rails:

rails new blog

rails generate scaffold Post title:string text:text

rails s

How many lines of actual code I have written so far to actually get my basic blog idea up and running? None.

A: (?? Awaiting an official response from Meteor Development Group)

Many [Atmospherejs.com, Meteor package management] packages don’t have the most vital information; the readme file for most packages is missing.

A: Tom Coleman, Developer on Atmospherejs.com and Coauthor of DiscoverMeteor
This is up to the package author to resolve, but the core Meteor packages are currently in the process of being “readme-ized” by MDG (e.g. Oauth Encryption)

Its front-end framework, Blaze.js, is neither as feature-rich and robust as Ember.js nor as expansive and extensible as Angular.js.

A: (?? Awaiting an official response from Meteor Development Group)

Learn Meteor Now If…

The noted Meteor limitations and criticisms are negligible when compared with the noted benefits, unless you absolutely abhor MongoDB or it cannot scale well for your particular use case.

Furthermore, Meteor is nearing version 1 (relatively stable), websites are already using it in production, you will no doubt develop applications quicker with it than you will with many competing technologies (after you learn it properly), you will be a more attractive job candidate (especially in the coming months), and you will be able to develop nearly any kind of application with Meteor that you can think of.

Accordingly, you should learn Meteor now if:

you plan to develop a startup (not a native mobile app) now or within the next year,

you have to develop a real-time, RESTful, or single page web app

you want to build an MVP (Most Viable Product) or a prototype of a large application

you are a javascript developer (node.js, or any of the many frontend JavaScript frameworks),

you are convinced that Meteor provides the best and most complete ecosystem for building web applications that work on both desktop and mobile clients (though mobile support is still embryonic as of October 2014)

you are a Ruby on Rails or PHP or Java developer and you want an alternative web technology to help you build applications and prototypes faster (note that Meteor lacks some of the generators prominent in Rails)

you are a hacker

you are cool and you like to be on the forefront of technological advancement

you think you are not cool (this means you are cool)

you consider yourself an old-school or hardcore programmer, and you dislike modern frameworks that are trying to make it easier to build applications; stay abreast and embrace the now and the future, my friend

you plan to build your own JavaScript (or some other language) framework or ecosystem

you want to learn or teach modern web application development

When to Consider Other Technologies Over Meteor

If you want to work for a large firm as a front-end developer, you may be better off learning a popular front-end framework like Angular.js, Ember.js, React.js, or Backbone.js. You should also learn one of these front-end frameworks if you want a high-paying front-end developer job soon, since, as you will see below, while Meteor jobs exist, you may not find as many opportunities for a Meteor developer as you would for an Angular.js or Backbone.js developer.

If your company has a strong and talented group of backend developers developing the backend, and the front-end is developed and handled separately from the backend, you may want to focus on using one of the noted front-end frameworks on the front-end.

If you need a robust SQL database like PostgreSQL or MySQL for your application, you may want to choose a different technology like Rails (if you know Ruby) or Node.js (if you know JavaScript), instead of Meteor, since Meteor doesn’t support these databases as of November 2014.

And, as Sacha Greif, coauthor of DiscoverMeteor, notes:

Meteor isn’t great for anything that’s mainly static content, like blogs or simple static sites. As a general rule, Meteor is great for apps, but not for sites. Another factor to consider is the fact that Meteor doesn’t do server-side content generation yet, meaning that your app won’t work without JavaScript enabled.

Moreover, not many large firms (if any) are using Meteor as of November 2014, so keep this in mind before you commit to learning Meteor now.

Meteor Developer Jobs

The biggest downside to learning Meteor today is that there doesn’t exist an abundance of Meteor jobs for Meteor developers. Unlike job postings for technologies like Ruby on Rails, Node.js, Backbone.js, and Angular.js (especially), comparatively fewer Meteor jobs exist today. And this shouldn’t be surprising since Meteor is a younger technology than those noted. This shouldn’t deter you from learning Meteor, however. Consider that you can find Meteor jobs now (see the links below) and large companies will soon discover that the Meteor magic can result in considerable productivity and financial gain, not to mention a boost in employee (developer) morale.

Meteor jobs:

For the most up-to-date Meteor jobs, follow MeteorJS Jobs on Twitter:@MeteorJobs

Most Helpful Meteor Resources

Somewhat surprisingly, given Meteor’s relative newness, you can find quite a few helpful Meteor blogs and websites. Knowing who, which Meteor guru, to follow and which websites to rely on requires a bit of research, so I will save you some time.

I don’t want to overwhelm you with Meteor resources (many are popping up almost daily, and most seem to overlap), so I will keep the list brief with those that I find most helpful:

Crater.io: A Hacker News style news site for Meteor. Get the latest Meteor news, updates, and blog posts from around the web.

Other Noteworthy Meteor Resources

Get on the Meteor mailing list. Go to this link and scroll down to “Get on the mailing
list”: https://www.meteor.com

Notable Hackers in the Meteor Community

To keep up with the latest Meteor news and happenings and to learn how to optimize and scale your production Meteor apps, you need to know and follow this gentleman:

Arunoda Susiripala
Arunoda (@arunoda) is arguably the most prominent Meteor hacker. He is also editor of the preeminent Meteor newsletter MeteorHacks.com, and founder of Kadira.

Meteor Cred:
He developed some important Meteor smart packages that help Meteor applications perform better (i.e., increase speed, scale, and use less server resources) in production. For example, he developed Smart Collections (it speeds up Meteor by using MongoDB Oplog; Meteor’s core developers have since implemented much of Smart Collection’s technology into Meteor’s core), Fast Render (it speeds up pages by as much as 10X, and it has been incorporated into Iron Router, Meteor’s primary router), Meteor NPM (it allows Meteor developers to easily use NPM modules in Meteor), Meteor Up (it allows you to deploy your Meteor apps to your own server), Meteor-SSR (it allows you to render Meteor templates server side, a huge limitation in the current version of Meteor), and many more packages crucial to helping your Meteor application perform and scale well in production. In addition, his Meteor performance and monitoring startup, Kadira, is used by many production Meteor apps.

Sign up for his Meteor weekly newsletter.
(This is all you need, really, to keep up with latest Meteor happenings.)MeteorHacks.com

Chris Mather (who created the indomitable Iron Router, and who probably has a clone because of all the seemingly insurmountable Meteor work, Meteor teaching, and Github issues he attends to); Tom Coleman (whose firm developed the official Meteor packaging system, Atomospherejs.com, and who created the first Meteor router, the first Meteor packaging manager and repository, and many useful Meteor packages); Abigail Watson (who maintains the exceedingly useful Meteor Cookbook, noted below, and other useful Meteor projects); and the versatile Sacha Greif (without whom, arguably, Meteor would not be as popular as it is today; every startup and open-source project need a Sacha Greif, for he can evangelize your technology like no one else can) have all contributed significantly to the Meteor community and ecosystem.

I know many others have contributed perhaps just as much if not more, so please forgive me for failing to list those names here. I may likely add more names as I am informed of them.

Acknowledgments

Thanks to Robin Coffman—perhaps the best editor, no doubt a fastidious and exceptional editor—for her punctilious effort editing this article.

Thanks also to Phil Howley, Tony Homer, Nathan Burkiewicz, Yuichi, and Jonas for thoughtfully taking the time to point out some typos and errors in this article, which I have modified many times after Robin officially edited it.

Learn Meteor Properly Overview

For the ultimate study guide, we are using a book, a paid screencast, and some free online resources. Don’t worry; I managed to negotiate 35% discount off the paid screencast and 20% off the book for you. (No, I don’t benefit in any way when you buy these resources.). So the total for the two resources is $50.05.

For the more affordable study guide, we are using one paid screencast and some free online resources. With the noted 35% discount, the screencast costs just $18.85. So that’s all you need, at least $18.85, to learn Meteor properly.

What’s the Difference Between the Two Study Guides?

The ultimate road map guides you through building a sophisticated social web application, while the more affordable road map does not guide you through building a specific web application. Other than that and other than the difference in cost for the resources, the two road maps are exceedingly similar; they both use the same screencasts from EventedMind and some free online articles.

Be Empowered
After you complete the study guide and experiment with Meteor, I invite you to use Meteor to develop a web or mobile app. And use your completed app to generate passive income ($) or massive income ($$$$), to empower a community, to prove Meteor’s effectiveness to your boss or colleagues, to solve world problems (I have many ideas I am eager to share with you), to solve problems among your peers or in your neighborhood, to get a job, to create the next Instagram or Facebook or any startup, or to do just about anything you like. If you do build something with Meteor (it needn’t be the next Facebook or Hacker News clone), please post a link to it in the comments below.

Prerequisite
You have to know JavaScript to develop applications with Meteor. Don’t make anyone mislead you. First, if you haven’t done so already, read the entire article above to understand what Meteor is, what you can do with it, and what it can do for your career. Then go Learn JavaScript Properly and come back and learn Meteor by following the road map below.

What You Will Learn
In the ultimate road map, you will learn how to build a relatively sophisticated web application (a feature-rich, real-world example of Hacker News—much better, in fact); how to use Meteor frontend framework; how the DDP protocol is used to communicate between the server and the client; how to implement collections and subscriptions (the data models for Meteor); how to use the latest (ver 1.0) version of IronRouter, the main Meteor router; how to create and use packages; and how to use every part of the Meteor ecosystem necessary for developing world class applications. We will dig deep, learning the basics and the digging deeper into each topic. You will learn more than you need to know to develop the social news application, but enough for you to feel comfortable using Meteor on your own.

In the more affordable road map, you will learn nearly everything taught in the ultimate road map, except you will not build a specific web application.

Duration: This course will take approximately 6 days (about 40 hours) of studying and coding to complete.

The paid resources for this road map:
Use this discount code (jsissexy_learn) to get 35% off the EventedMind screencast. And use this discount code (JAVASCRIPTISSEXY) to get 20% off the DiscoverMeteor book when you checkout:http://discovermeteor.com/javascriptissexy

The Ultimate Study Guide for Learning Meteor Properly

Have a Go at the Appetizer: A Gentle Introduction to Meteor

Before we begin the study guide, the main course, you should at least have a gentle introduction to Meteor. Go take either one of the following tutorials:

1. Your First Meteor Application: This free online book (it’s a tutorial that will take about 30 minutes) gives you a gentle introduction to Meteor, with basic instructions on using the terminal and more. If necessary, skip some of the elementary instructions.

Chapter 3: Meteor Collections and Mimimongo

DiscoverMeteor: Read the Latency Compensation chapterImportant Note: Don’t do the exercise yet. Don’t add the code from this chapter to your application yet. You will do that on day 5. Just read the chapter and study the code.

A Comprehensive Study Guide for Learning Meteor Properly

Let’s get to work.

Introduction to Meteor for New Programmers

Before we begin the study guide, if you have never developed a web application before, read the free online book at the link below. This brief book,Your First Meteor Application, gives you an elementary introduction to Meteor, with basic instructions on using the terminal and more. Be sure to come back and complete the entire road map after you finish the little book:Your First Meteor Application

Chapter 7: Introducing the Meteor Accounts Package

BenMcmahen.com:Building a customized accounts ui for Meteor
Notice: The section on “Installing the necessary packages” is a bit dated, so install the packages using to the DiscoverMeteor instructions you learned earlier.

Important Notice About MongoDB

At this point, you will definitely need my book,MongoDB for JavaScript Applications, to help you build your own Meteor applications, since none of the noted resources, or any other book for that matter, cover MongoDB in depth for Meteor applications.

From my point of view the quite recent http://meteorhelp.com is one of the best overviews of resources plus it reflects actual user’s opinions/ratings, which is why I like it a lot.
You should definitely check it out once you get started with Meteor.

Max, I am sorry that I didn’t have the code on the article when I published it. I added the discount link today.
Use this discount code (JAVASCRIPTISSEXY) to get 20% off the DiscoverMeteor book when you checkout:http://discovermeteor.com/javascriptissexy

Awesome man. I remember I did you Javascript path. In the meantime I played A LOT with MeteorJS and became pretty good with it. Made my mobile app (which I finished for 90%) and now working on my second app, based on Meteor, Famous (with Famous-Views) package. Thanks again for interesting me in JS

I would also like to recommend a free book by David Turnbull called ‘Your First Meteor Application’. It is geared toward beginners and it really has helped me understand a lot of what is going on in the Discover Meteor book. (his videos are really good also).

I am working on it. I must admit: so far the free-resources study guide doesn’t have as many quality lessons as some of the lessons in the current study guide. I might have to ask Chris Mather of EventedMind to make a few of his screencasts (those that I want to recommend) free.

Note that EventedMind actually has a bunch of free videos already, but most are not from the “Classes.”

Yes, Rich, Angular.js is certainly way more hot that Meteor right now, especially for jobs. Many big companies are willing to take a chance with Angular because it is a Google product, not necessarily because it is the best front-end framework.

If you are looking for a stable, full-time job soon, I would recommend you learn Angular.js now, not Meteor. You can always learn Meteor in your free time and build cool stuff with it.

In fact, I will update my article in a few days to make it clear that Meteor should not be the first technology you learn if you want a full time job asap.

Juan, Thanks for following the study guide. Since you are one of the first persons to follow it, we will depend on you for a full review.

Let us know what you like, what you don’t like, whether you learned enough or not enough, and which resource in particular was most helpful to you. Your feedback, along with feedback from others, will help me understand how to modify the study guide

That “Creating Views” video is a duplicate. It was my mistake, so I will remove it.

Second: I’m glad to see you’re back to creating quality posts. We talked a bit on Twitter about Meteor a few months(?) ago. A curriculum-based track like you’ve developed is so key to someone learning technology on the side.

I’d love a post discussing what aspects of Node and MongoDB you need to master to properly use Meteor. I especially think a MongoDB curriculum would be helpful, especially for people who have a tough time grasping it compared to SQL.

I hope to see more quality articles about Meteor, hopefully that builds from your JS work from last year.

I’d love a post discussing what aspects of Node and MongoDB you need to master to properly use Meteor. I especially think a MongoDB curriculum would be helpful, especially for people who have a tough time grasping it compared to SQL.

I am working on a MongoDB book right now; it is called “MongoDB for JavaScript Applications.” I plan to add a link to it on my blog some time later today or tomorrow. I will post a follow up.

Developers should learn Meteor for the reasons I noted in the article. I do plan to add a few reasons why you may not want to learn Meteor now, and chief among those reasons is if you need a full-time job asap.

No one ever knows anything for sure until it happens, but I’ll tell you that, personally, I have the same sense about Meteor that I had when I first saw Rails back in 2007. The next big thing, I thought, and I was right. Meteor’s time has come… Though it may take 2-3 years to become widely recognized and employable. I’m pretty certain that soon we’ll start seeing a lot more companies looking for Meteor developers, especially once mobile support is finished.

I don’t know for sure if Meteor will be in high demand, but I know that from the time Meteor launched to today, it has been adopted by tens of thousands of developers, and many of those developers are excited (prefer it over other web-dev technologies) about it because they are more productive building apps with Meteor than they are building apps with other competing technologies.

If this trend continues, and I don’t see why it won’t, then I think we can safely say many of these developers will convince their colleagues and employers to use Meteor. And this should in turn lead to more adoption, more demand, and more Meteor jobs.

But as with most things in life, it is not guaranteed to happen; it is just my (and many others) expectation on the matter of forecasting Meteor’s success in the coming months and 2 years.

Great read! Never heard of the term Isomorphic Javascript before… so that’s what it is technically called haha! Thanks!

I’m a web app developer mainly using PHP, MySQL and jQuery on my day job… read DiscoverMeteor book few months ago and gone through exercises whenever I can or over the weekend… but wasn’t able to continue it due to my lack of focus.

The study guide is really a big help for people like me. I’m going to start all over again. THANK YOU! I’ll let you know it goes not when I reach my Day 6 and also when I’m able to create a project I had in my mind using Meteor.

BTW, since you mentioned that you’d like to get informed about typos… there’s quite a few in no. 11 “What Specifically Does Meteor Offer Developers?” section.

The short answer is no, you don’t need to learn MongoDB before learning Meteor. It will help if you know something about databases though. If you know the basics about a database and you know JavaScript, you’re all set.

Thank you for sharing this with us Richard, I’ve long awaited this post. I picked up JavaScript in January with your post on “How To Learn JS Properly”, and I’ve come quite a long way. One of my dreams is to be a web applications developer/graphic designer. I’ve recently launched my own, albeit static, website http://www.brandie.ca using Meteor.js and am hoping to continue using Meteor to create applications over the next few weeks.

Hi, this is great. I’m trying to follow along but its not clear what you suggest we just read/watch versus follow along by coding (“be sure to write your own code and build the application as you follow the lessons”)

I was wondering if you could go into more detail about what the implications are for accessibility and also progressive enhancement when the entire app is rendered client side. It looks like server-side rendering is on their roadmap but doesn’t seem that important to them. There are a lot of implications involved with requiring JavaScript to be enabled to even view the HTML of a page and I was hoping you could discuss that in this article or in a separate one. I love JavaScript and really must thank you for your articles for getting me to where I am today with it, but I struggle with trying to adhere to web standards and progressive enhancement while also wanting to take advantage of frameworks like Angular and Meteor.

@Kyle, I definitely understand your concerns about accessibility and progressive enhancement. You can actually render server-side right now, although the server-side effort is still a work in progress. Check our this link:https://meteorhacks.com/server-side-rendering.html

Regarding accessibility, you can still do all the things you would normally do to make a standard web page accessible.

Stumbled onto your blog when trying to learn about “this” in JS. As a writer for many years, I love your comparison to pronouns. Thanks for all the stuff you do, you are a trusted source for me. Though I am surprised that so many of the links in this article led to “page not found”????

I have been using your blog to learn Javascript for the past couple months and it is really helping me out. I have a specific app/website I am planning to build, so frankly am trying to learn what I need for that purpose, rather than becoming a full-fledged developer – if the app should turn into something, I would bring in professionals.

Would it be possible to add a post (or direct me to it if you have one already) illustrating the relationships between the various languages and frameworks? As I ready through this post on Meteor, it certainly seems like something I should learn, however I am having trouble (as a complete beginner) understanding which tools work alongside one another and which ones are alternatives to each other. I see mentions of JS, Node, PHP, Ruby, Meteor, Angular, etc. I understand the use of libraries will be important in my coding, as I look for precedent examples. However, I am getting a bit confused as to which of these I need to learn and which I simply need to choose from (e.g., still confused as to framework vs. library).

Thanks again for all your hard work, it really is the best resource I have found. As a side note, for your Javascript roadmap, I read Duckett’s “Javascript & JQuery” for an introduction to the concepts and am now working through “JavaScript, The Definitive Guide”. Duckett reads much less like a textbook but I want to follow the roadmap exactly as it is laid out.

Hi Brendan,
I have precisely the thing to help you. First, I am releasing a comprehensive “Modern Development Technology Guide” within a few weeks, most likely before the end of this month. And it will answer your question directly.

Second, I am writing a couple of comprehensive articles, which will be part of our upcoming courses, that tell you specifically which technologies to use in every circumstance. This information cannot be found anywhere else online, as far as I know.

Unfortunately, I don’t have the specific answers for you right now. But I suggest you hold off with your decision for at least a couple of weeks. Making the wrong decision is usually costly in both time and resources.

12 months ago I was also a total beginner, until I stumbled upon this very website. So I’ll try my best to summarize what I’ve learned below. Feel free to jump in guys if I am wrong here:

You can think of Javascript, HTML, CSS in the following way
– HTML is like the bare bones, the skeleton of your website. It gives your website it’s format and structure.
– CSS is like the flesh and skin of your website. It gives you the look/feel/styling of your website.
– Javascript is like the mind, the brain of your website. It controls the behaviour and interaction with your website.

Most apps/website have a front-end (website) and back-end (database). Javascript is a programming language for controlling the front-end aspects of your webpage. Meanwhile PHP is used to program the back-end. However, with Node.js, programmers can use Javascript for programming the back-end as well, thus a developer can afford the convenience of using Javascript for both front and back end.

As you begin to develop your app/website, you may notice your code is getting too large and confusing. That’s where JavaScript frameworks come into play. Frameworks such as Angular.js, Backbone.js, Meteor.js etc. help you organize and structure your code in a way that makes sense.

If you pick up and learn JavaScript, HTML, CSS and one of the frameworks, you can pretty much build a website or web application.

Hello,
First of all, thank you for posting all the guides and info that you make available! I’m working my way through the Proper Way…JavaScript path and I have a question. When we read through the Beginners JavaScript Chapters are we meant to do the exercises as well? I did a couple and the code suggested is very old and wouldn’t run properly. Being a newbie, it took me quite a long time to figure out what the issue was. You specify to “read” the chapters, but my inclination was do the work as well. Thanks again for putting me on the right path.
Chris McCune

Yes, you should do the exercises in the book. Running into buggy code in programming books is inevitable. Almost every programming book seems to have a few errors in the programming code. You can usually find the updated code somewhere on the publisher’s website, however.

Nonetheless, I think you will definitely benefit from our upcoming “Essential JavaScript and Modern Web App Development” course. Sign up for our newsletter to receive updates.

Im confused when is this full stack javascript course being offered? it seems like it has been saying “in a couple of weeks” since last year? I am excited about this course so please let me know if it is still in the works – thank you.

No, the courses won’t be ready in a couple of weeks; the website will be launched soon, and you can enroll in courses and Career Paths then. But the actual courses are coming later, perhaps late February to mid March. I am hopeful they will start before March, but we have a ton of work left to do.

I’m really confused about the content of this website. The marketing sounds good (learn correctly and completely), but everything seems to say coming soon, and coming soon posts are from either many months ago or even two plus years.

What’s going on with this site? Is it defunct? Is it active, but in the middle of a business model shift? Did I just miss something obvious?

I believe I can answer your question. Richard, who runs the site left the last update on his progress with the new course material on dec 29th 2014. However because each of his posts can really stand alone as their own tutorials without external reference, he retroactively included the message in every post so no one can miss it. This gives the illusion that the announcement could be from years ago when it is really just a few weeks old.

Two questions for you:
– any suggestions on how to best get up-to-speed with databases in general? I’m following the Meteor roadmap right now and, while I know I don’t need to know Mongo in advance, it’s probably best to have some understanding of how these databases work (no prior experience)
– I’m working with the Meteor for Windows preview release that came out last week and using WebStorm. Since the Windows release is so new, the build time is incredibly slow (every time I change a line of code, it takes over a minute for the server to restart and app to relaunch). It looks like the Meteor team is aware and working on it. In the meantime, my question is: if I load Meteor through Vagrant (which everyone seems to suggest), can I still use WebStorm? I tried doing the same through Nitrous.io and it seemed like I could only use their text editor.

Thanks again for the great posts, slowly but surely making progress here.

Yes, Brendan, you can use WebStorm in your case. Regarding your MongoDB question, you can get by without knowing a lot of MongoDB while you are learning Meteor. But when you are ready to build a sophisticated or serious application, you will definitely need to know MongoDB very well. Two of our backend courses will cover both MongoDB and PostgreSQL in depth (you get to choose one).

THX for good instruction to the Meteor frameworks, however there are few things occurred as following:
1. The package of http-publish seems not stable, and the page of “improved async utilities in meteor-npm” not found
2. Is the “router controller” new way to instead of using specified PubSub with subscription package?

Has anyone had success in using the em scaffolding with meteor on nitrous.io (Windows)? I followed the instructions (as far as I can tell) for the “Building an Application with Meteor and Iron Router” on EventedMind but I can’t get a simple application to work – I am just trying to get it to display my HTML that is in the “app.html” of the “both” directory.

I’m not sure if this is the best place for such a question – I just wanted to see if someone encountered a similar problem and found a solution.

I was fortunate enough to be one of a few to have a preview just this past Monday of the site for the javascriptissexy.com web dev courses. Your patience in waiting for these courses will be worth the wait. Looks like a really thorough treatment of topics for all of the Career Paths mentioned above. Based on what I saw, you will have the opportunity to receive a real education on all necessary/pertinent topics and then create significant real-world projects to exercise and put what you have learned into practice – NOT a ‘rush job’ skimming over things and then creating only toys. Pricing is totally reasonable for the care taken in covering so much so completely. Get psyched – I’ll see you all there!

Zafr, John, Chris, and Sean, and anyone else running out of patience while waiting on our courses:

I don’t know if any of you have emailed me to get a sneak peek at our in-development (though almost ready) course website; I haven’t gotten to dozens of emails in the past few days. I think you should at least check out our course website to determine if our program is worthwhile waiting for. You will get to see our overall program, our features, our benefits, and our teaching methods and techniques; you will see that we provide specially designed lessons to maximize understanding, and we give our students uniquely prestigious final projects and final assignments; and you will also see the detailed writeup on all of our Career Paths and Courses. Then you can make a more informed decision about whether to enroll in another program now or enroll in ours shortly and wait a few months for it to begin.

Ponder these two hypothetical questions:

(We have these questions on one of our Career Paths.)

If you were to win the lottery, would you rather win $12,000 next week or $23 million in four months?

Would you rather attend a community college (set to begin in days) because you are in a hurry to get started, or would you rather wait to attend a more prestigious school like MIT or Oxford, even though you will have to wait three months to begin?

No, we are not MIT or Oxford, but the comparison (i.e., our comprehensive and highly-rewarding program vs. the ones noted above and others available online and offline) is valid.

Omph just finished the course and I have to say it was some kind of heavy lifting for my brain. Getting all the concepts and getting in the flow of templating, publishing and subscribe. Thanks for the really good course outline – but I needed some more time like 3 days more with an average of 4 to 6 hours a day. Nevertheless I recommend the course for everybody serious about getting started with meteor and building a fine understanding of how everything works together. thumbs up

Would love to see an end-to-end enterprise quality application development web course. There seems to be plenty of resources available regarding the individual moving parts of Meteor and related packages, but there is clearly a lack of resources on best practices when one wants to pull all these parts together to develop a large, cohesive Meteor project.

Thank you for this consideration. And good luck with this revolutionary product.

what are your thoughts on integrating react with meteor? it looks like using react instead of blaze might be the way forward to future proof? would you consider providing a branch within this path for people who’d like to work with react vs blaze?

Hey, I am doing the course right now and one thing confuses the sh*t out of me. How do I know when I should add some code and when I shouldn’t? Because the Eventminded thing and the book obviously don’t go hand in hand. I really like the contents of this, but I really don’t know about when to code. 😐 Thanks for the work!

Hi Richard. First of all big thank you for creating this course. I’m a little late to the party, but AWESOME WORK. I remember using your site as a tremendous resource when learning important js fundamentals such as callbacks, “this,” etc. I was wondering if you could provide a direct link to the course outline at the top of the page. Having to scroll halfway down a rather long page is a bummer. I know it’s a rather lazy request, but I don’t think it’s too big of deal to add a name tag in the requisite section. Thanks a bunch!!!