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.
[sc:mongodb-book]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
Table of Contents
- 1 How Will Your Life Change After You Learn Meteor Properly?
- 2 Meteor Transcends (Goes Beyond) Typical JavaScript Frameworks
- 3 What Exactly Is Meteor?
- 4 Alternatives to Meteor
- 5 What Specifically Does Meteor Offer Developers?
- 6 Best Text Editors and IDEs for Meteor
- 7 Should You Be Excited or Skeptical About Meteor?
- 8 A Chorus of Praise and Appreciation for Meteor
- 9 Justifiable Criticisms, Known Limitations, and Frequently Asked Questions about Meteor
- 10 Learn Meteor Now If…
- 11 When to Consider Other Technologies Over Meteor
- 12 Meteor Developer Jobs
- 13 Most Helpful Meteor Resources
- 14 Meteor Tutorials Needed
- 15 Notes
- 16 Acknowledgments
- 17 Learn Meteor Properly Overview
- 18 The Ultimate Study Guide for Learning Meteor Properly
- 19 A Comprehensive Study Guide for Learning Meteor Properly
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:
- 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
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
- 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?
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
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.
-
Meteor: an ultra-simple environment for building modern websites, using the familiar MongoDB API @meteorjs http://t.co/1tqx7DaK
— MongoDB (@MongoDB) April 17, 2012
-
Crowded meteor.js workshop at #spainjs happily hacking already 🙂 pic.twitter.com/ecqwJx2lWz
— Fernando (@oinak) July 4, 2013
-
The dawning of a new age of Javascript on both web client and server. http://t.co/slOK9Iet Impressive tech. JS FTW
— Garry Tan (@garrytan) April 10, 2012
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 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
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:
- Crater.io: A Hacker News style news site for Meteor. Get the latest Meteor news, updates, and blog posts from around the web.
- Meteor Cookbook: An exhaustive resource with invaluable Meteor tips
- 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.
- Meteor Help: This site has you covered from head to toe in Meteor resources. What else do you need?
- Discover Meteor Blog: A reputable blog from the acclaimed authors (Sacha Greif and Tom Coleman) of the DiscoverMeteor book.
- Meteor Talk: Ask questions, discuss, share, meet up, and more
- Meteor Academy: Be inspired and learn from a transformational Meteorite bursting through the atmosphere
- The Meteor Podcast: Kick back with a cup of coffee and enjoy; I do.
- MeteorPad: Write Meteor code in the browser, like JSBin
Other Noteworthy Meteor Resources
- Follow Meteor.js (@meteorjs), EventedMind (@EventedMind), and DiscoverMeteor (@DiscoverMeteor) on Twitter
- 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.
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
- Poor college student taught herself Meteor
- Meteor beginner built virtual rubik’s cube in a week
- Tattoo artist (non-programmer) built Meteor POS application for his business:
- How to Scale Meteor.js Apps
- EventedMind em Scaffolding Tool
- Why Meteor Created a New Build System
- Some Considerations in [Meteor] Package System Design
- Meteor Cordova Phonegap Integration
- Apple Allows Hot Code Push in Mobile Apps
- Meteor’s new $11.2 million development budget
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
- Discover Meteor book ($39 $31.20)
- 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
- EventedMind:
What is Meteor? - EventedMind:
Getting Set Up - EventedMind:
Using Git, Github and Meteor Versions - DiscoverMeteor: Read the Introduction chapter
- DiscoverMeteor (This is optional): Read the Using Git & GitHub chapter
Chapter 1: Anatomy of a Typical Meteor Application
- EventedMind:
Build a Simple Application Part 1 - EventedMind:
Build a Simple Application Part 2 - EventedMind:
Build a Simple Application Part 3 - EventedMind:
Build a Simple Application Part 4
Day 2
Chapter 2: Reactive Programming and Meteor Frontend Framework
- EventedMind:
Creating the Project with Iron Scaffolding - EventedMind:
Views (specifically, learn how to generate templates) - ModernWeb.com: Functional Reactive Programming in JavaScript
- Meteor Manual:
Deps Introduction
(Read sections 1 to 4) - Meteor Manual:
Intro to Blaze.js, Meteor frontend framework
Read sections 0 to 3. The sections are brief but illuminating - DiscoverMeteor: Read the Getting Started chapter
- DiscoverMeteor: Read the Templates chapter
Chapter 3: Meteor Collections and Mimimongo
- EventedMind:
How do Client Cursors Work? - EventedMind:
Anatomy of a Collection Insert - EventedMind:
How does the Client Synchronize Writes with the Server? - DiscoverMeteor: Read the Collections chapter
- 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
- EventedMind: PubSub in Meteor
- EventedMind:
Publishing a Cursor - EventedMind:
Merging the Client View of Data - EventedMind:
The Connection Data Store - Meteorhacks:
Meteor Subscription Optimization - DiscoverMeteor: Read the Publications and Subscriptions chapter
- DiscoverMeteor.com:
A Primer on Meteor Security
Chapter 5: Routing In Depth (Using Iron Router)
- EventedMind:
Using Iron Router—Getting Started - EventedMind: Dynamic Paths
- EventedMind: Link Helpers
- EventedMind:
Rendering with Data - EventedMind:
Layouts and Regions - EventedMind:
Using Route Options - EventedMind:
The New RouteController - EventedMind:
Subscribing to Data - DiscoverMeteor: Read the Routing chapter
Day 4
Chapter 6: Meteor Reactivity In Depth
- Meteor Manual:
Deps Continued—Meteor Reactive Programming In Depth
Read sections 5, 6 and 7 - DiscoverMeteor: Read the Reactivity chapter
- DiscoverMeteor: Read the The Session sidebar
Chapter 7: Introducing the Meteor Accounts Package
- MeteorTips.com:
How To Make a Custom Registration (and Login) Form in Meteor - DiscoverMeteor: Read the Adding Users chapter
- Eventedmind.com:
Customizing Login with Meteor OAuth
Chapter 8: Understand Meteor Methods
- EventedMind:
What are Meteor Methods? - EventedMind:
The Mechanics of Methods - EventedMind:
Using the Write Fence - EventedMind:
Synchronizing Method Writes - EventedMind:
Collections use Methods - EventedMind:
Saving and Retrieving Original Documents - EventedMind:
Unblocking a Method
Day 5
Chapter 9: Advanced Routing and Advanced Subscriptions
- EventedMind:
Generating Templates
(In this section, you will learn how to use the iron tool to create views.) - EventedMind:
Routing with Parameters
(In this section, you will learn how to use the iron tool to create routes.) - EventedMind:
Using the new waitOn Option - EventedMind:
Hooks and Plugins - EventedMind:
Server Side Routes - DiscoverMeteor: Read the Creating Posts chapter
- DiscoverMeteor: Read the Allow and Deny chapter
- 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.) - DiscoverMeteor: Read the Editing Posts chapter
- DiscoverMeteor: Read the Errors chapter
Chapter 10: Meteor Packaging System and NPM
- Meteor Hackpad Document:
The Essentials of Meteor Packages - MeteorHacks.com:
NPM Meteor Integration is Back for Meteor 0.6.5 (ignore the version number) - DiscoverMeteor: Read the Creating a Meteor Package chapter
- Discovermeteor.com Blog:
Wrapping NPM Packages for Meteor
Day 6
Chapter 11: Using the Meteor MongoDB API
- DiscoverMeteor: Read the following chapters:
Comments
Denormalization
Notifications
Meteor Security Overview
-
DiscoverMeteor.com: A Primer on Meteor Security
https://www.discovermeteor.com/blog/meteor-and-security/ -
MeteorHacks.com: Cross Site Scripting(XSS) and Meteor
https://meteorhacks.com/xss-and-meteor.html
Chapter 12: Complete the Social News Application
- 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
- EventedMind:
What is Meteor? - EventedMind:
Getting Set Up - EventedMind:
Using Git, Github and Meteor Versions
Chapter 1: Anatomy of a Typical Meteor Application
- EventedMind:
Build a Simple Application Part 1 - EventedMind:
Build a Simple Application Part 2 - EventedMind:
Build a Simple Application Part 3 - EventedMind:
Build a Simple Application Part 4
Day 2
Chapter 2: Reactive Programming and Meteor Frontend Framework
- EventedMind:
Creating the Project with Iron Scaffolding - EventedMind:
Generating Templates - ModernWeb.com: Functional Reactive Programming in JavaScript
- Meteor Manual:
Deps Introduction
(Read sections 1 to 4) - 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
- Meteorhacks.com:
Introduction to Latency Compensation - EventedMind:
How do Client Cursors Work? - EventedMind:
Anatomy of a Collection Insert - EventedMind:
How does the Client Synchronize Writes with the Server?
Day 3
Chapter 4: Publications and Subscriptions
- DiscoverMeteor.com:
Understanding Meteor Publications & Subscriptions - EventedMind: PubSub in Meteor
- EventedMind:
Publishing a Cursor - EventedMind:
Merging the Client View of Data - EventedMind:
The Connection Data Store - EventedMind:
Meteor Subscription Optimization - DiscoverMeteor.com:
A Primer on Meteor Security
Chapter 5: Routing In Depth (Using Iron Router)
- EventedMind:
Using Iron Router—Getting Started - EventedMind: Dynamic Paths
- EventedMind: Link Helpers
- EventedMind:
Rendering with Data - EventedMind:
Layouts and Regions - EventedMind:
Using Route Options - EventedMind:
The New RouteController - EventedMind:
Subscribing to Data
Day 4
Chapter 6: Meteor Reactivity In Depth
- Meteor Manual:
Deps Continued—Meteor Reactive Programming In Depth
Read sections 5, 6 and 7
Chapter 7: Introducing the Meteor Accounts Package
- MeteorTips.com:
How To Make a Custom Registration (and Login) Form in Meteor - Eventedmind.com:
Customizing Login with Meteor OAuth - 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
- EventedMind:
What are Meteor Methods? - EventedMind:
The Mechanics of Methods - EventedMind:
Using the Write Fence - EventedMind:
Synchronizing Method Writes - EventedMind:
Collections use Methods - EventedMind:
Saving and Retrieving Original Documents - EventedMind:
Unblocking a Method
Day 5
Chapter 9: Advanced Routing and Advanced Subscriptions
- Discovermeteor.com:
Meteor Methods vs Client-Side Operations - EventedMind:
Generating Templates
(In this section, you will learn how to use the iron tool to create views.) - EventedMind:
Routing with Parameters
(In this section, you will learn how to use the iron tool to create routes.) - EventedMind:
RouteController Event Handling - EventedMind:
Using the new waitOn Option - EventedMind:
Hooks and Plugins - EventedMind:
Server Side Routes
Chapter 10: Meteor Packaging System and NPM
- Meteor Hackpad Document:
The Essentials of Meteor Packages - 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
-
DiscoverMeteor.com: A Primer on Meteor Security
https://www.discovermeteor.com/blog/meteor-and-security/ -
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
Worth mentioning that Meteor has bought a new database company: https://www.meteor.com/blog/2014/10/07/fathomdb-joining-meteor
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.
Thanks for the tip, Stephan. I added Meteor Help to the list. It does have an abundance of useful Meteor resources.
Awesome Richard! I’m happy to see a new post on Js is Sexy!
Here another list of useful links for who want to learn Meteor: https://github.com/ericdouglas/Meteor-Learning
Hi Eric, Thanks. I am impress with the work you have been doing on your Portuguese JS blog :).
Hi I was wondering where we could input the coupon code at the discovermeteor website
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
No worries, I look forward to your future posts.
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 🙂
Thank you, Sven. I am very proud of you, Mate. Keep going; you will no doubt become a successful developer. When you complete your second app, post a link to it here so we can check it out.
re: easy blog setup
meteor create myblog
meteor add ryw:blog
meteor
less typing than rails 🙂
Ry, Is that part of Meteor core or something you set up on your own?
This is great news!
Glad to see you back.
Your blog has helped me many times in the last year.
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).
http://meteortips.com/book/
Jerry
Doh!
Just noticed you have already mentioned ‘Your First Meteor Application’ by David Turnbull as an introduction to the course.
Thanks for the post!
I’d be happy to see the study guide that uses only free resources.
You are doing a great job.
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.”
How important is meteor in terms of Job employment? Seems like the hot thing right now is Angular. Can one get hired by knowing meteor as well?
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.
Excelente
I will coment hoy my progres after follow this guide
Yes, we need your feedback on the study guide after you complete it.
There is a “Creating Views” video on Day 5 that is the same as the “Creating Views” video on Day 2. Was this done on purpose? I don’t mind refreshing the concepts, it’s been a great course so far.
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.
I am looking forward to get your feedback on the overall study guide.
First: Awesome site refresh!
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.
Thanks, Josh.
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.
Do I need to learn Node.js before trying Meteor.js?
Thanks
Not at all. You can start small with just knowing JavaScript and getting your feet wet with Meteor. As you go along you may or may not dig deeper into Node.js, but it is not a requirement.
Thanks Stephan.
Why should people learn Meteor, if there are not jobs? I believe Meteor is a technology like Scala, F#, Haskell. Good to develop and play with it but few support in the job market.
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.
How do you know Meteor will be in high demand?
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.
HI Erick,
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.
Thanks, Arvi. I will fix those typos.
Hi
Thanks for such a great blog,i want to ask should i learn mongoDB first to learn meteor and what level of mongoDB would be enough to move ahead to learn meteor.
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.
Kind regards,
Steve
I’m glad to hear from you, StevenJS. It took me a while to back to writing again, but I am glad to hear you went ahead and learned Meteor and have a solid plan to become a web app developer.
Any update on Free ebook version of this article?
Now that I have completed the affordable study guide (just minutes ago), I will work on the eBook. I will try to have it ready within three days.
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”)
Hi Linojon, I meant you should follow along (i.e., while reading or watching) by typing out all the example code.
If you follow along, I suggest building the two projects (DiscoverMeteor microscope and EM todos) separately in separate directories
Pingback: Learn Backbone.js Completely | JavaScript is Sexy
Pingback: 16 JavaScript Concepts JavaScript Professionals Must Know Well | JavaScript is Sexy
Pingback: sexy.com | JavaScript is Sexy
Pingback: A Helpful Roadmap | Let's Learn Meteor
Pingback: A Helpful Roadmap For Learning Meteor.js | Let's Learn Meteor
Pingback: Learn Node.js Completely and with Confidence | JavaScript is Sexy
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.
Well, Meteor hits 1.0 : On October 28th 2014, the Meteor Development Group announced the availability of version 1.0 of their isomorphic JavaScript platform Meteor.
https://www.yauh.de/meteor-hits-1-0/
Pingback: A Helpful Roadmap For Learning Meteor – Day 4 | Let's Learn Meteor
Pingback: Jumping Off The Roadmap | Let's Learn Meteor
“[…] become familiar with the latest, experience the now, and embrace the inevitable.” I will put it on my wall:) Thanks for this guide.
Pingback: How to Learn JavaScript Properly | JavaScript is Sexy
I am at day 4 in the study guide, and I get stuck in this video on Accounts package: https://www.eventedmind.com/feed/meteor-customizing-login.
Can’t get {{currentUser.profile.username}} to work, anyone had the same issue? Also there are a couple of other issues in this video, which are adressed by other users in the comments below it.
Hi Ali, I told Chris about the issue. He will get to it as soon as he can. He is away right now.
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”????
Jeff
Thanks for the kind words and welcome to the blog, Jeff. And thanks for pointing out the broken links. A WordPress plugin has been killing some of my external links.
I just fixed all the links. If you see any other issues or any more broken links, please don’t hesitate to let me know.
Pingback: Programmation | Pearltrees
Blatant self promotion warning. Created a Meteor 1.0 ‘app from scratch’ guide for newcomers if anyone is interested: http://www.webtempest.com/meteorjs-fromscratch-1
Hi Richard,
Correction suggestion:
At Day 3 – Chapter 4: Publications and Subscriptions, the following line,
5. EventedMind: Meteor Subscription Optimization
should be:
5. Meteorhacks: Read – Meteor Subscription Optimization
The link redirects to Meteorhacks page instead of EventedMind video link 🙂
Thanks a lot, Yuichi. I will fix it. You have cool name, btw. 🙂
Very helpful. Thanks so much for this Richard!
Tiny correction: In “What Specifically Does Meteor Offer Developers?” section, item 7, last sentence: “as” missing before “Angular.js” 🙂
Thanks a lot, Jonas. That is a good catch. I just fixed the issue and gave you credit for taking the time to point out the typo :).
The site http://manual.meteor.com/ doesnt seem to be maintained. The official manual appreas to be http://docs.meteor.com/ including the rename of Deps to Tracker
Richard,
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.
Brendan
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.
Richard, that is perfect. Thanks again!
Brendan
Hey Brendan,
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.
Hope this helps!
Cheers,
Steve
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
I Chris,
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.
If you are looking for an illustrated intro to Meteor you might like the first (free!) chapter of the upcoming Manning book Meteor in Action. Grab the free PDF here: http://manning.com/hochhaus/Meteor_MEAP_CH01.pdf
Pingback: Never stop adapting knowledge - Lily Sahiful Bahari | Lily Sahiful Bahari
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.
Hey, cool site, great info/insight/food for thought. I keep this site bookmarked. Definitely on point, imho – Meteoric rise coming during 2015.
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?
Hey Gpowers,
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.
Hi Richard, any word on the release dates?
Hi Richard,
will AngularJS be included in the new courses?
Hi Richard,
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).
There is also a really great tutorial on how to build a todo list with meteor http://kukuruku.co/hub/javascript/meteor-how-to-build-a-todo-list
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?
Chris Mather from the wonderful Eventedmind.com is aware of the broken links on his site, and he will send me the updated links soon. As for the other broken link, I will fix it.
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.
Thanks.
I use the Sublime and command line built in mac, seems all fine to me,
Maybe should check out the routes.js file to see which template set to be the first default page.
Hope that work soon~
http://i1.kym-cdn.com/photos/images/facebook/000/264/200/acb.jpg
Hello All,
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!
I’m sure Richard’s website will be worth the wait. In the meantime, if anyone is looking to get started on a very very well planned curriculum – The Odin Project is something I am doing right now.
http://www.theodinproject.com/
Alright, I just moved many of the comments relating to the upcoming Career Paths and Course from this post to the new post at link below.
http://javascriptissexy.com/discuss-career-paths-and-courses/
I will follow up with my replies on that post. I figured we needed a dedicated place to discuss the courses, since we have hijacked this “Learn Meteor.js” post.
Chris, Steve, John, and everyone else who I haven’t replied to yet, I will reply to your comments on the new post and I will reply to all emails today. I have a bunch of emails to reply.
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.)
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.
Note that I have posted this same comment on the new post for discussing our Career Paths and Courses. Here is the link:
http://javascriptissexy.com/discuss-career-paths-and-courses/
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
Pingback: Meteor-Learning | 懒得折腾
Justifiable Meteor Criticisms, point 2:
there’s plenty of tools for scaffold generation, eg: https://github.com/AdamBrodzinski/meteor-generate or even my solution https://github.com/ofcapl/scaffolder (alpha code)
Pingback: Meteor | Pearltrees
Pingback: Learning Meteor | Pearltrees
Pingback: GETTING STARTED WITH METEOR.JS | 懒得折腾
sdfsdfsd
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.
“it’s a tutorial that will take about 30 minutes” – actually, it took me 2 days!!!!
Nice blog…Very useful information is providing by ur blog.Very clear and helpful for beginners.
The EventedMind MeteorJS tutorial is really not for beginner users.
Uses helper functions…doesn’t explain what they are.
Uses different notation for event handling…doesn’t explain anything about it.
The EventedMind tutorials are for people that are at least a little familiar with MeteorJS and are looking to review material. It’s horrible for beginners and a total waste of money in that regard.
I would much rather recomment “Your First Meteor Application: A Complete Beginner’s Guide to the Meteor JavaScript Framework” by David Turnbull for a complete MeteorJS beginner.
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?
Pingback: My Meteor Journey (Meteor learning resources) | Stephen Leung
Pingback: Разбираемся с Meteor.js | Devdocs.ru
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!!!
Pingback: [ASK] programming - Choosing Framework For Web Development | Some Piece of Information
Nice Article
Meteor seems like a very interesting system, and I feel inspired when I hear the positive comments of users and the positive hype of its website. But when I actually installed it on Windows 10, I found that running even the smallest of apps (getting to the point where the browser can display the app) is very time-consuming.
After typing “meteor” in an app directory, it types back “Preparing project”, then pauses for several seconds. What could it possibly be doing? My bet is something very inefficient, but I can’t imagine what “Preparing project” means or why it takes so much time.
Then it gives a list of “building …” messages for various components. This whole process takes 10 seconds or more, an enormous amount in terms of what computers can do. Why are components built each time an app is run? Ordinary websites take a second or two to do the internet I/O, then they are displayed.
While I am willing to concede that Meteor might be wonderful by comparison with old-fashioned manual website building, using HTML, CSS, and JavaScript, its glacier-like loading time as compared with any other technology I have learned in my many years of Web programming and design is not acceptable.
I’ve written a number of apps for browser rendering over the years, and all of them load and display almost instantly, even when they are doing relatively sophisticated processing in PHP behind the scenes. They also have the advantage of just requiring the entering of a URL, not the running of a telnet or “DOS-box” console and the entering of commands separate from the browser.
Am I missing something?
What a very great article about meteor coding you share there , and nice info.
Keep spirit on posting https://www.bonanza88.love/ thank you.
Very interesting and informative article. Thanks for sharing such type of precious article.