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

Become an Elite/Highly Paid Specialized Software Engineer (Frontend, Fullstack, etc.)

Within 8–10 Months, Earn MORE than the Avg. New CS Graduate Earns.

New Prices (Monthly Subscription):
Basic: $250/month, Pro: $350/month, Premium: $600/month

By the founder of JavaScriptIsSexy

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.

Time to read the Meteor Overview:

14 minutes 


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.

If you want to start a study group, send me Tweet or an email.

    Let’s begin with a comprehensive overview of Meteor.

    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:

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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
    6. 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.
    7. 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.

    8. 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).
    9. 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.

    10. 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.
    11. 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

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

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

      I should note that I have not tested the mobile support and it appears to be embryonic as of October 2014. Watch a demonstration. And read the documentation.

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



      



    14. Meteor takes a proactive approach to security, reportedly with a core developer dedicated to addressing security.
    15. 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. 

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

    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:
    JavaScriptIsSexy_Meteorites

    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:
    JavaScriptIsSexy_angry_skeptical

    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:
    JavaScriptIsSexy_happy_guys

    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:

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

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

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

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

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

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

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

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

    1. 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!


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



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

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



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

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

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



    Known Meteor Limitations

    1. Meteor works only on Mac, Linux 64, and Linux 32.
    2. It does not officially support Windows, Solaris, and Freebsd.
    3. It supports only one database: MongoDB.
    4. It has no support for sharding on MongoDB.
    5. Its frontend framework does not have reusable UI components.
    6. It has only partial support for Redis.
    7. It does not work well with SEO, even with its Spiderable hack.

    Justifiable Meteor Criticisms

    1. 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)




    2. 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)


    3. 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)
      



    4. 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 now learning to code and you want to build your first web application (Learn JavaScript Properly first)
    • 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

    We Work Meteor Jobs

    
StackOverflow Meteor Jobs

    

Indeed Meteor Jobs


    Odesk Meteor Jobs



    Simply Hired Meteor Jobs



    Linked in Meteor Jobs

    Meteor Jobs discussed and advertised on Meteor Talk Google Group

    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:


    1. Crater.io: A Hacker News style news site for Meteor. Get the latest Meteor news, updates, and blog posts from around the web.
    2. Meteor Cookbook: An exhaustive resource with invaluable Meteor tips
    3. Meteor Tips: Here you can find a number of quality Meteor tutorials from an author who always writes with the patience and diligence of an elementary school math teacher.
    4. Meteor Help: This site has you covered from head to toe in Meteor resources. What else do you need?
    5. Discover Meteor Blog: A reputable blog from the acclaimed authors (Sacha Greif and Tom Coleman) of the DiscoverMeteor book.
    6. Meteor Talk: Ask questions, discuss, share, meet up, and more
    7. Meteor Academy: Be inspired and learn from a transformational Meteorite bursting through the atmosphere

    8. The Meteor Podcast: Kick back with a cup of coffee and enjoy; I do.
    9. MeteorPad: Write Meteor code in the browser, like JSBin

    Other Noteworthy Meteor Resources

    1. Follow Meteor.js (@meteorjs), EventedMind (@EventedMind), and DiscoverMeteor (@DiscoverMeteor) on Twitter

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

    Meteor Tutorials Needed

    • How to Handle Errors in Your Meteor Application
    • Meteor Accounts UI Overview
    • Comprehensive Meteor Tutorial on Making Async Calls:
      Update: Phuc Nguyen has written a comprehensive tutorial on this very topic:
      Everything You Need To Know About Async & Meteor
    • Comprehensive Tutorial on Meteor Packages (for Meteor Version 0.9.x)

    Notes

    1. Poor college student taught herself Meteor

    2. 

Meteor beginner built virtual rubik’s cube in a week
    3. 

Tattoo artist (non-programmer) built Meteor POS application for his business:
    4. How to Scale Meteor.js Apps
    5. EventedMind em Scaffolding Tool
    6. Why Meteor Created a New Build System
    7. Some Considerations in [Meteor] Package System Design
    8. Meteor Cordova Phonegap Integration
    9. Apple Allows Hot Code Push in Mobile Apps
    10. Meteor’s new $11.2 million development budget

    Acknowledgments

    1. Thanks to Robin Coffman—perhaps the best editor, no doubt a fastidious and exceptional editor—for her punctilious effort editing this article.
    2. 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

    1. Discover Meteor book ($39 $31.20)
    2. EventedMind screencasts ($29 $18.85)

    Important Note: Don’t just watch the videos and read the book; be sure to write your own code and build the application as you follow the lessons.

    Cost of Resources (EventedMind plus DiscoverMeteor): $50.05

    The Ultimate Study Guide for Learning Meteor Properly

    Let’s get to work.

    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.

    2. The official Meteor Tutorial

    Be sure to come back and have a go at the main course after you finish the appetizer, or you may remain unfilled.

    Day 1

    Introduction: Setup and Getting Started

    1. EventedMind:
      What is Meteor?
    2. EventedMind:
      Getting Set Up
    3. EventedMind:
      Using Git, Github and Meteor Versions
    4. DiscoverMeteor: Read the Introduction chapter
    5. DiscoverMeteor (This is optional): Read the Using Git & GitHub chapter

    Chapter 1: Anatomy of a Typical Meteor Application

    1. EventedMind:
      Build a Simple Application Part 1
    2. EventedMind:
      Build a Simple Application Part 2
    3. EventedMind:
      Build a Simple Application Part 3
    4. EventedMind:
      Build a Simple Application Part 4

    Day 2

    Chapter 2: Reactive Programming and Meteor Frontend Framework

    1. EventedMind:
      Creating the Project with Iron Scaffolding
    2. EventedMind:
      Views (specifically, learn how to generate templates)
    3. ModernWeb.com: 
Functional Reactive Programming in JavaScript
    4. Meteor Manual:
      Deps Introduction
      (Read sections 1 to 4)
    5. Meteor Manual:
      Intro to Blaze.js, Meteor frontend framework
      Read sections 0 to 3. The sections are brief but illuminating
    6. DiscoverMeteor: Read the Getting Started chapter
    7. DiscoverMeteor: Read the Templates chapter

    Chapter 3: Meteor Collections and Mimimongo

    1. EventedMind:
      How do Client Cursors Work?
    2. EventedMind:
      Anatomy of a Collection Insert
    3. EventedMind:
      How does the Client Synchronize Writes with the Server?
    4. DiscoverMeteor: Read the Collections chapter
    5. DiscoverMeteor: Read the Latency Compensation chapter
      Important 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.

    Day 3

    Chapter 4: Publications and Subscriptions

    1. EventedMind: PubSub in Meteor
    2. EventedMind:
      Publishing a Cursor

    3. EventedMind:
      Merging the Client View of Data
    4. EventedMind:
      The Connection Data Store
    5. Meteorhacks:
      Meteor Subscription Optimization
    6. DiscoverMeteor: Read the Publications and Subscriptions chapter
    7. DiscoverMeteor.com:
      A Primer on Meteor Security

    Chapter 5: Routing In Depth (Using Iron Router)

    1. EventedMind:
      Using Iron Router—Getting Started
    2. EventedMind: Dynamic Paths
    3. EventedMind: Link Helpers
    4. EventedMind:
      Rendering with Data
    5. EventedMind:
      Layouts and Regions
    6. EventedMind:
      Using Route Options
    7. EventedMind:
      The New RouteController
    8. EventedMind:
      Subscribing to Data
    9. DiscoverMeteor: Read the Routing chapter

    Day 4

    Chapter 6: Meteor Reactivity In Depth

    1. Meteor Manual:
      Deps Continued—Meteor Reactive Programming In Depth
      Read sections 5, 6 and 7
    2. DiscoverMeteor: Read the Reactivity chapter

    3. DiscoverMeteor: Read the The Session sidebar

    Chapter 7: Introducing the Meteor Accounts Package

    1. MeteorTips.com:
      How To Make a Custom Registration (and Login) Form in Meteor
    2. DiscoverMeteor: Read the Adding Users chapter
    3. Eventedmind.com:
      Customizing Login with Meteor OAuth

    Chapter 8: Understand Meteor Methods

    1. EventedMind:
      What are Meteor Methods?
    2. EventedMind:
      The Mechanics of Methods
    3. EventedMind:
      Using the Write Fence
    4. EventedMind:
      Synchronizing Method Writes
    5. EventedMind:
      Collections use Methods
    6. EventedMind:
      Saving and Retrieving Original Documents
    7. EventedMind:
      Unblocking a Method

    Day 5

    Chapter 9: Advanced Routing and Advanced Subscriptions

    1. EventedMind:
      Generating Templates
      (In this section, you will learn how to use the iron tool to create views.)
    2. EventedMind:
      Routing with Parameters
      (In this section, you will learn how to use the iron tool to create routes.)
    3. EventedMind:
      Using the new waitOn Option
    4. EventedMind:
      Hooks and Plugins
    5. EventedMind:
      Server Side Routes
    6. DiscoverMeteor: Read the Creating Posts chapter
    7. DiscoverMeteor: Read the Allow and Deny chapter
    8. DiscoverMeteor: Add the code from the
      Latency Compensation chapter (You already read this chapter on day 2, but you didn’t add the code then. So add it now.)
    9. DiscoverMeteor: Read the Editing Posts chapter
    10. DiscoverMeteor: Read the Errors chapter

    Chapter 10: Meteor Packaging System and NPM

    1. Meteor Hackpad Document:
      The Essentials of Meteor Packages
    2. MeteorHacks.com:
      NPM Meteor Integration is Back for Meteor 0.6.5 (ignore the version number)
    3. DiscoverMeteor: Read the Creating a Meteor Package chapter
    4. Discovermeteor.com Blog:
      Wrapping NPM Packages for Meteor

    Day 6

    Chapter 11: Using the Meteor MongoDB API

    1. DiscoverMeteor: Read the following chapters:
      Comments
      Denormalization
      Notifications

    Meteor Security Overview

    1. 
DiscoverMeteor.com: A Primer on Meteor Security
      https://www.discovermeteor.com/blog/meteor-and-security/
    2. MeteorHacks.com: Cross Site Scripting(XSS) and Meteor
      https://meteorhacks.com/xss-and-meteor.html

    Chapter 12: Complete the Social News Application

    1. DiscoverMeteor: Read the following chapters:
      Advanced Reactivity
      Pagination
      Voting
      Advanced Publications
      Animations


    End of course ———————————–

    Extras

    Appendix A: Seven Meteor Techniques and Tips You Should Know

    Make a note of the topics in this section so you can refer to them when the need arises.
    Publishing to a Client Only Collection

    Writing Async Code in Meteor
    Wrap Async
    Using Async NPM Modules in Meteor
    

Improved Async Utilities in Meteor-NPM

    Implementing RESTful APIs in Meteor
    Learn to do it with Iron Router
    Or use this Meteor Package
    Details on this Github page
    Collection API

    For an detailed overview of various ways to implement a RESTful endpoint in Meteor,
    read more on Meteorpedia.com.

    Test Your Meteor Apps: Get The Meteor Testing Manual

    Meteor Performance and Scaling
    Does Meteor Scale?
    Scaling Meteor: The Challenges of Real-time Apps
    How to Scale Meteor?
    How Is the Meteor-MongoDB Combination Performing Under Production Load?

    Monitor Your Meteor Applications
    Kadira monitors your Meteor application for performance issues and it tracks errors.

    Awesome Error Tracking Solution for Meteor Apps with Kadira

    Building Static Websites with Meteor

    Meteor Security
    Meteor & Security: Setting the Record Straight
    

Meteor security resources

    Cost of Resources (EventedMind): $18.85

    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

    Day 1

    Introduction: Setup and Getting Started

    1. EventedMind:
      What is Meteor?
    2. EventedMind:
      Getting Set Up
    3. EventedMind:
      Using Git, Github and Meteor Versions

    Chapter 1: Anatomy of a Typical Meteor Application

    1. EventedMind:
      Build a Simple Application Part 1
    2. EventedMind:
      Build a Simple Application Part 2
    3. EventedMind:
      Build a Simple Application Part 3
    4. EventedMind:
      Build a Simple Application Part 4

    Day 2

    Chapter 2: Reactive Programming and Meteor Frontend Framework

    1. EventedMind:
      Creating the Project with Iron Scaffolding
    2. EventedMind:
      Generating Templates
    3. ModernWeb.com: 
Functional Reactive Programming in JavaScript
    4. Meteor Manual:
      Deps Introduction
      (Read sections 1 to 4)
    5. Meteor Manual:
      Intro to Blaze.js, Meteor frontend framework
      Read sections 0 to 3. The sections are brief but illuminating

    Chapter 3: Meteor Collections and Mimimongo

    1. Meteorhacks.com:
      Introduction to Latency Compensation
    2. EventedMind:
      How do Client Cursors Work?
    3. EventedMind:
      Anatomy of a Collection Insert
    4. EventedMind:
      How does the Client Synchronize Writes with the Server?

    Day 3

    Chapter 4: Publications and Subscriptions

    1. DiscoverMeteor.com:
      Understanding Meteor Publications & Subscriptions
    2. EventedMind: PubSub in Meteor
    3. EventedMind:
      Publishing a Cursor
    4. EventedMind:
      Merging the Client View of Data
    5. EventedMind:
      The Connection Data Store
    6. EventedMind:
      Meteor Subscription Optimization
    7. DiscoverMeteor.com:
      A Primer on Meteor Security

    Chapter 5: Routing In Depth (Using Iron Router)

    1. EventedMind:
      Using Iron Router—Getting Started
    2. EventedMind: Dynamic Paths
    3. EventedMind: Link Helpers
    4. EventedMind:
      Rendering with Data
    5. EventedMind:
      Layouts and Regions
    6. EventedMind:
      Using Route Options
    7. EventedMind:
      The New RouteController
    8. EventedMind:
      Subscribing to Data

    Day 4

    Chapter 6: Meteor Reactivity In Depth

    1. Meteor Manual:
      Deps Continued—Meteor Reactive Programming In Depth
      Read sections 5, 6 and 7

    Chapter 7: Introducing the Meteor Accounts Package

    1. MeteorTips.com:
      How To Make a Custom Registration (and Login) Form in Meteor
    2. Eventedmind.com:
      Customizing Login with Meteor OAuth
    3. 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.

    Chapter 8: Understand Meteor Methods

    1. EventedMind:
      What are Meteor Methods?
    2. EventedMind:
      The Mechanics of Methods
    3. EventedMind:
      Using the Write Fence
    4. EventedMind:
      Synchronizing Method Writes
    5. EventedMind:
      Collections use Methods
    6. EventedMind:
      Saving and Retrieving Original Documents
    7. EventedMind:
      Unblocking a Method

    Day 5

    Chapter 9: Advanced Routing and Advanced Subscriptions

    1. Discovermeteor.com:
      Meteor Methods vs Client-Side Operations
    2. EventedMind:
      Generating Templates
      (In this section, you will learn how to use the iron tool to create views.)
    3. EventedMind:
      Routing with Parameters
      (In this section, you will learn how to use the iron tool to create routes.)
    4. EventedMind:
      RouteController Event Handling
    5. EventedMind:
      Using the new waitOn Option
    6. EventedMind:
      Hooks and Plugins
    7. EventedMind:
      Server Side Routes

    Chapter 10: Meteor Packaging System and NPM

    1. Meteor Hackpad Document:
      The Essentials of Meteor Packages
    2. MeteorHacks.com:
      NPM Meteor Integration is Back for Meteor 0.6.5 (ignore the version number)

    Day 6

    Chapter 11: Using the Meteor MongoDB API

    Meteor Security Overview

    1. 
DiscoverMeteor.com: A Primer on Meteor Security
      https://www.discovermeteor.com/blog/meteor-and-security/
    2. MeteorHacks.com: Cross Site Scripting(XSS) and Meteor
      https://meteorhacks.com/xss-and-meteor.html

    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.

    End of course ———————————–

    Extras

    Appendix A: Seven Meteor Techniques and Tips You Should Know

    Make a note of the topics in this section so you can refer to them when the need arises.
    Publishing to a Client Only Collection

    Writing Async Code in Meteor
    Wrap Async
    Using Async NPM Modules in Meteor
    

Improved Async Utilities in Meteor-NPM

    Implementing RESTful APIs in Meteor
    Learn to do it with Iron Router
    Or use this Meteor Package
    Details on this Github page
    Collection API

    For an detailed overview of various ways to implement a RESTful endpoint in Meteor,
    read more on Meteorpedia.com.

    Test Your Meteor Apps: Get The Meteor Testing Manual

    Meteor Performance and Scaling
    Does Meteor Scale?
    Scaling Meteor: The Challenges of Real-time Apps
    How to Scale Meteor?
    How Is the Meteor-MongoDB Combination Performing Under Production Load?

    Monitor Your Meteor Applications
    Kadira monitors your Meteor application for performance issues and it tracks errors.

    Awesome Error Tracking Solution for Meteor Apps with Kadira

    Building Static Websites with Meteor

    Meteor Security
    Meteor & Security: Setting the Record Straight
    

Meteor security resources