Meteor.js
Michael Elfassy 
twitter: @michaelelfassy 
github: elfassy 
stackoverflow: montrealmike 
website: smashingboxes.com 
Durham, NC | San Francisco | Montreal
What’s Meteor.js? 
and where is the free pizza?
Meteor is an open-source full-stack 
javascript framework for building 
modern web and mobile applications
Really?
Yes! In fact you’ll build apps that: 
● are more responsive 
● have built-in collaboration 
● are more fun (and faster) to write 
● support hot code push 
● are easily compiled for multiple platforms
Demos! 
https://github.com/alanshaw/meteor-blackboard 
https://github.com/p4bloch/x3dom-meteor 
https://github.com/meteor/meteor/tree/devel/examples
How does it work? 
An can you justify those bold claims
7 principles of meteor 
● Data on the Wire 
● One Language 
● Database Everywhere 
● Latency Compensation 
● Full Stack Reactivity 
● Embrace the Ecosystem 
● Simplicity Equals Productivity
Apps feel responsive 
Latency compensation 
● Database everywhere 
● One language 
● Data on the wire (aka: Client side rendering) 
BONUS: 
No network 
compensation 
http://manning.com/hochhaus/Meteor_MEAP_CH01.pdf
Apps have built-in collaboration 
Full-stack reactivity 
● Livequery - Watch DB for changes 
● DDP - Send data back and forth to the client 
o replay cache 
o publish / subscribe 
● MiniMongo - store data and do database queries on the client 
● Tracker 
o recomputation is done automatically 
o view updates with no extra code 
● Blaze - rendering 
Read more about these components on meteor.com/projects
Database, Security, Business Logic, User interactions 
Rendering 
HTTP / HTML 
Database, Security, Business Logic Rendering, User interactions 
HTTP / XML (AJAX) 
DDP / JSON 
Rendering, User interactions, 
Security Business Logic, Database 
1995 
2005 
2014
Apps are more fun / faster to write 
● One language 
o share code between client and server (DRY) 
o Write less code 
● Embrace the ecosystem 
o Packager 
o http://atmospherejs.com 
● Simplicity (KISS) 
o all the components, not just a library to solve one problem 
o configuration-free minifier, deployer... 
o no need to write code to update the view 
o no need to write code to sync data
Apps auto-reload 
● Hot code push 
o don’t lose your user’s state 
o work even when adding new packages 
● Bypass Apple! 
o use wisely
Apps that are cross platform 
demo! 
> meteor run ios 
> meteor run android
Don’t be a dinosaur 
Your clients expect: 
● apps that feel native 
● collaborative apps 
● you to write these apps in days, 
not months
Questions? 
Join the community 
http://montreal.meteor.com
Learning resources 
● meteor.com/install 
● Discover Meteor Book 
o book.discovermeteor.com/starter 
● docs.meteor.com 
● stackoverflow 
● meteorpodcast.com 
● meteorpedia.com 
8 chapters 
free today 
only
Packages 
● mquandalle:jade 
● stylus 
● coffeescript 
● kaptron:minimongoid (ORM) 
● dburles:collection-helpers 
● underscore 
● reywood:publish-composite 
● mrt:moment 
● aldeed:collection2 
● accounts-ui, accounts-google, accounts-github, accounts-password 
● matb33:collection-hooks 
● iron:router

Meteor

  • 1.
  • 2.
    Michael Elfassy twitter:@michaelelfassy github: elfassy stackoverflow: montrealmike website: smashingboxes.com Durham, NC | San Francisco | Montreal
  • 3.
    What’s Meteor.js? andwhere is the free pizza?
  • 4.
    Meteor is anopen-source full-stack javascript framework for building modern web and mobile applications
  • 5.
  • 6.
    Yes! In factyou’ll build apps that: ● are more responsive ● have built-in collaboration ● are more fun (and faster) to write ● support hot code push ● are easily compiled for multiple platforms
  • 7.
  • 9.
    How does itwork? An can you justify those bold claims
  • 10.
    7 principles ofmeteor ● Data on the Wire ● One Language ● Database Everywhere ● Latency Compensation ● Full Stack Reactivity ● Embrace the Ecosystem ● Simplicity Equals Productivity
  • 11.
    Apps feel responsive Latency compensation ● Database everywhere ● One language ● Data on the wire (aka: Client side rendering) BONUS: No network compensation http://manning.com/hochhaus/Meteor_MEAP_CH01.pdf
  • 12.
    Apps have built-incollaboration Full-stack reactivity ● Livequery - Watch DB for changes ● DDP - Send data back and forth to the client o replay cache o publish / subscribe ● MiniMongo - store data and do database queries on the client ● Tracker o recomputation is done automatically o view updates with no extra code ● Blaze - rendering Read more about these components on meteor.com/projects
  • 13.
    Database, Security, BusinessLogic, User interactions Rendering HTTP / HTML Database, Security, Business Logic Rendering, User interactions HTTP / XML (AJAX) DDP / JSON Rendering, User interactions, Security Business Logic, Database 1995 2005 2014
  • 14.
    Apps are morefun / faster to write ● One language o share code between client and server (DRY) o Write less code ● Embrace the ecosystem o Packager o http://atmospherejs.com ● Simplicity (KISS) o all the components, not just a library to solve one problem o configuration-free minifier, deployer... o no need to write code to update the view o no need to write code to sync data
  • 15.
    Apps auto-reload ●Hot code push o don’t lose your user’s state o work even when adding new packages ● Bypass Apple! o use wisely
  • 16.
    Apps that arecross platform demo! > meteor run ios > meteor run android
  • 17.
    Don’t be adinosaur Your clients expect: ● apps that feel native ● collaborative apps ● you to write these apps in days, not months
  • 18.
    Questions? Join thecommunity http://montreal.meteor.com
  • 19.
    Learning resources ●meteor.com/install ● Discover Meteor Book o book.discovermeteor.com/starter ● docs.meteor.com ● stackoverflow ● meteorpodcast.com ● meteorpedia.com 8 chapters free today only
  • 20.
    Packages ● mquandalle:jade ● stylus ● coffeescript ● kaptron:minimongoid (ORM) ● dburles:collection-helpers ● underscore ● reywood:publish-composite ● mrt:moment ● aldeed:collection2 ● accounts-ui, accounts-google, accounts-github, accounts-password ● matb33:collection-hooks ● iron:router

Editor's Notes