SlideShare a Scribd company logo
1 of 20
Download to read offline
Meteor : Blazing a trail..
¡  Background	
  
¡  The	
  7	
  Principles	
  
¡  Ge6ng	
  Started	
  	
  
¡  Core	
  Concepts	
  
¡  More	
  Resources	
  
¡  Advanced	
  Topics	
  
¡  Q&A	
  
	
  
	
  
¡  A	
  pla@orm	
  for	
  building	
  
‘next-­‐gen’	
  of	
  web	
  apps	
  
¡  JavaScript	
  all	
  the	
  way	
  
(client,	
  server,	
  database)	
  
¡  Ecosystem	
  friendly	
  (mix	
  
and	
  match	
  with	
  ‘DDP’)	
  
¡  InnovaQve	
  ideas	
  (‘data	
  
everywhere’,	
  reacQvity..)	
  
Meaningful	
  Mission	
  
+	
  Meaningful	
  Funding	
  
+	
  
Incredibly	
  Smart	
  &	
  Passionate	
  Team	
  
	
  
Mix	
  of	
  entrepreneurs,	
  researchers,	
  
engineers	
  (ex-­‐MIT,	
  Stanford,	
  Asana,	
  
Google,….)	
  	
  
Controller	
  
Controller	
  
Application	
  
Logic,	
  Controllers	
  
&	
  Helpers	
  
Model	
  
Model	
  
Model	
  
SMART	
  SERVER	
  
View	
  
View	
  
Application	
  
View	
  
User	
  Events	
  
Server	
  Events	
  
DUMB	
  CLIENT	
  
Render	
  returned	
  
	
  ‘page’	
  views	
  
DATABASE	
  
Send	
  user	
  	
  
event	
  
Cache	
  
Maintain	
  state	
  
Controller	
  
Controller	
  
Application	
  
Logic	
  
Model	
  
Model	
  
Model	
  
SMART	
  SERVER	
  
Application	
  
View	
  
User	
  Events	
  
Server	
  Events	
  
SMART	
  CLIENT	
  
Update	
  view	
  	
  
page	
  inline	
   DATABASE	
  
Request	
  templates,	
  
Get	
  data	
  
Controllers	
  &	
  
Helpers	
  
Handle	
  events	
  
Cache	
  
Maintain	
  state	
  
Controller	
  
Controller	
  
Application	
  
Logic	
  
Model	
  
Model	
  
Model	
  
SMART	
  SERVER	
  
Application	
  
View	
  
User	
  Events	
  
Server	
  Events	
  
METEOR	
  CLIENT	
  
Sync	
  data	
  	
  
proactively	
  
DATABASE	
  
Subscribe	
  	
  
to	
  data	
  
Controllers	
  &	
  
Helpers	
  
React	
  to	
  events	
  
Cache	
  
React	
  	
  
to	
  data	
  
Session	
   DDP	
  
Distributed	
  
Data	
  Protocol	
  
Controller	
  
Controller	
  
Meteor	
  “bundle”	
  	
  
(app	
  +	
  core	
  
packages)	
  
Model	
  
Model	
   BSON/
JSON	
  
NODE	
  RUNTIME	
  
Handlebars	
  
Templates	
  
User	
  Events	
  
Server	
  Events	
  
BROWSER	
  
Sync	
  data	
  	
  
proactively	
  
MONGO	
  CLUSTER	
  
Subscribe	
  	
  
to	
  data	
  
JavaScript	
  
Mini	
  
Mongo	
  
¡  Data	
  on	
  the	
  wire.	
  Client	
  craSs	
  all	
  the	
  HTML.	
  
¡  One	
  language.	
  Client	
  +	
  server	
  +	
  database	
  =	
  all	
  JS	
  
¡  Database	
  everywhere.	
  Same	
  API	
  at	
  client,	
  server	
  
¡  Latency	
  compensaQon.	
  Fake	
  it	
  Qll	
  you	
  make	
  it	
  
¡  Full	
  Stack	
  ReacQvity.	
  “Real-­‐Qme”	
  is	
  the	
  default	
  
¡  Embrace	
  the	
  Ecosystem.	
  Integrate	
  before	
  replace	
  
¡  Simplicity	
  =	
  ProducQvity.	
  Clean	
  and	
  classic	
  APIs	
  
http://docs.meteor.com/#quickstart
¡  Define	
  ‘collecQons’.	
  Data	
  models	
  for	
  Mongo	
  DB.	
  
¡  Publish	
  data	
  ‘cursors’	
  on	
  server.	
  Query	
  results	
  
¡  Subscribe	
  to	
  cursors	
  on	
  client.	
  Auto-­‐updated	
  
¡  Write	
  view	
  templates.	
  Structures	
  &	
  Styles	
  
¡  Write	
  view	
  helpers.	
  ‘Bind’	
  cursor	
  results	
  to	
  view	
  
¡  Define	
  routes	
  &	
  controllers.	
  Navigate	
  views	
  
¡  Make	
  it	
  reacQve.	
  Use	
  dynamic	
  Session/cursor	
  vars	
  
¡  ApplicaQon	
  Structure	
  Maaers	
  
¡  Data	
  Security	
  (pub-­‐sub,	
  cache,	
  simulaQon)	
  
¡  ReacQvity	
  (in	
  data	
  source	
  +	
  computaQon)	
  
¡  Live	
  HTML	
  (in-­‐place	
  reacQve	
  DOM	
  updates)	
  
¡  Templates	
  (clear	
  separaQon	
  of	
  view	
  &	
  helper)	
  
¡  Packages	
  (core	
  +	
  official	
  +	
  unofficial)	
  
¡  Name-­‐spacing	
  (automated	
  wrappers)	
  
¡  Deploying	
  (run	
  vs.	
  bundle	
  vs.	
  deploy)	
  
¡  ContribuQng	
  (wriQng	
  packages)	
  
	
   http://docs.meteor.com/#concepts
¡  Directory	
  structure	
  impacts	
  inclusion	
  
§  /client	
  loaded	
  to	
  client	
  only,	
  /server	
  loaded	
  to	
  server	
  only,	
  /tests	
  never	
  loaded	
  
§  /public	
  files	
  ‘served’	
  (staQc	
  assets),	
  /private	
  files	
  access	
  to	
  server	
  (via	
  Assets)	
  
§  Other	
  files	
  are	
  loaded	
  (and	
  shared)	
  across	
  client	
  and	
  server	
  
¡  Name,	
  locaQon	
  depth	
  impacts	
  load	
  order	
  
§  /lib	
  loaded	
  first,	
  main.*	
  loaded	
  last	
  
§  Subdirectories	
  before	
  directories,	
  in	
  alphabeQcal	
  order	
  within	
  directory	
  
¡  Deployment	
  (as	
  bundle)	
  
§  Server	
  runs	
  in	
  Node	
  fiber	
  (1	
  thread/request)	
  
§  Client	
  Templates	
  (HTML)	
  converted	
  to	
  JS	
  funcQons	
  (Template.*)	
  
§  Client	
  CSS	
  bundled,	
  JS	
  minified	
  &	
  bundled	
  (creates	
  1	
  file	
  each)	
  
¡  Client	
  &	
  Server	
  have	
  the	
  same	
  database	
  API	
  
§  Queries,	
  validators,	
  etc.	
  are	
  idenQcal	
  BUT	
  
§  Code	
  on	
  server	
  runs	
  against	
  actual	
  DB,	
  code	
  on	
  client	
  runs	
  against	
  cached	
  DB	
  
§  ‘Autopublish’	
  and	
  ‘insecure’	
  packages	
  to	
  ‘fine-­‐tune’	
  access	
  levels	
  	
  
	
  	
  
¡  Mongo	
  as	
  ‘signature’	
  database	
  (only	
  opQon)	
  
§  Document-­‐oriented	
  database	
  organized	
  into	
  ‘CollecQons’	
  	
  
§  Documents	
  in	
  JSON-­‐like	
  format,	
  good	
  query/aggregaQon	
  support	
  
§  Uses	
  ‘minimongo’	
  as	
  client-­‐side	
  Mongo-­‐compliant	
  in-­‐memory	
  cache	
  
	
  
¡  AuthenQcaQon	
  (Accounts),	
  Input	
  ValidaQon	
  (check)	
  
¡  Automated	
  re-­‐computaQon	
  on	
  data	
  changes	
  
§  Writer	
  regular	
  code	
  (imperaQve	
  style	
  programming)	
  
§  Create	
  reacQve	
  data	
  sources	
  (add	
  dependency	
  on	
  ‘Session’	
  variables)	
  
§  Trigger	
  reacQve	
  computaQon	
  (when	
  variable	
  value	
  changes)	
  
	
  	
  
¡  ReacQve	
  Data	
  Sources	
  
§  Session	
  variables,	
  CollecQon	
  queries	
  (cursors),	
  Meteor.user,	
  …	
  
	
  
¡  ReacQve	
  Data	
  ComputaQon	
  
§  Template	
  handlers,	
  Deps.autorun,	
  …	
  
	
  
Simplicity	
  
(JavaScript)	
  
Reactivity	
  
(Event	
  Driven)	
  
Interoperability	
  	
  
(via	
  DDP)	
  
Community	
  
(smart	
  packages)	
  
Maturity	
  
(changing,	
  not	
  yet	
  v1.0.)	
  
Scalability*	
  
(need	
  for	
  patterns)	
  
Consistency*	
  
(legacy	
  creep)	
  
Testability	
  
(but	
  wait	
  for	
  it..)	
  
*	
  “With	
  great	
  power	
  comes	
  great	
  responsibility”	
  
On	
  September	
  25,	
  2013	
  (public,	
  on	
  Trello)	
  -­‐-­‐	
  (current	
  Meteor	
  version:	
  0.6.5.1)	
  
¡  Best	
  Learning	
  Resources	
  (link)	
  
¡  Discover	
  Meteor	
  (Book)	
  
¡  Evented	
  Mind	
  (Tutorials)	
  
¡  Meteor	
  Hacks	
  (Posts)	
  
¡  Atmosphere	
  (packages)	
  
¡  Stack	
  Overflow	
  (quesQons)	
  
¡  GitHub	
  (examples)	
  
	
  
¡  How	
  Does	
  It	
  Work?	
  
§  Data	
  Consistency	
  (CollecQons	
  &	
  ‘Smart’	
  CollecQons)	
  
§  ReacQvity	
  (Dependency	
  tracking	
  and	
  automaQon)	
  
§  Interoperability	
  (DDP,	
  The	
  Distributed	
  Data	
  Protocol)	
  
	
  
¡  How	
  Do	
  I	
  do	
  “X”?	
  
§  TemplaQng	
  (with	
  Handlebars)	
  &	
  Styling	
  (with	
  Bootstrap)	
  
§  RouQng	
  (with	
  Iron	
  Router)	
  
§  TesQng	
  (with	
  Laika)	
  &	
  CI	
  (with	
  Travis)	
  
§  Asynchronous	
  Ops	
  (with	
  Node	
  Fibers	
  &	
  Future)	
  
 
QuesQons	
  or	
  Feedback?	
  
(influence	
  content	
  and	
  coverage	
  in	
  future	
  talks)	
  
	
  
	
  
Close	
  the	
  loop	
  ..	
  
¡  Twiaer	
   	
  è	
  @nitya	
  or	
  #meteor-­‐nygdg	
  
¡  Google+	
  	
  è	
  hap://gplus.to/nitya	
  
¡  Meetup	
   	
  è	
  NYC-­‐GDG	
  ‘comments’	
  
	
  

More Related Content

What's hot

D2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerD2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerWO Community
 
Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Kallex
 
Azure doc db (slideshare)
Azure doc db (slideshare)Azure doc db (slideshare)
Azure doc db (slideshare)David Green
 
Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBJan Hentschel
 
MongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB
 
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB
 
The First Contact with Java EE 7
The First Contact with Java EE 7The First Contact with Java EE 7
The First Contact with Java EE 7Roberto Cortez
 
CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPDavide Bellettini
 
Reactive Hypermedia
Reactive HypermediaReactive Hypermedia
Reactive HypermediaKevin Swiber
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english versionSabino Labarile
 
Web Technologies - forms and actions
Web Technologies -  forms and actionsWeb Technologies -  forms and actions
Web Technologies - forms and actionsAren Zomorodian
 
Reactive Hypermedia APIs
Reactive Hypermedia APIsReactive Hypermedia APIs
Reactive Hypermedia APIsKevin Swiber
 
Effiziente Datenpersistierung mit JPA 2.1 und Hibernate
Effiziente Datenpersistierung mit JPA 2.1 und HibernateEffiziente Datenpersistierung mit JPA 2.1 und Hibernate
Effiziente Datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overviewukdpe
 
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsOUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsAndrew Morgan
 
FITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JSFITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JSFITC
 

What's hot (20)

D2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRollerD2W Branding Using jQuery ThemeRoller
D2W Branding Using jQuery ThemeRoller
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014Scalable Architectures - Microsoft Finland DevDays 2014
Scalable Architectures - Microsoft Finland DevDays 2014
 
Azure doc db (slideshare)
Azure doc db (slideshare)Azure doc db (slideshare)
Azure doc db (slideshare)
 
Cool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDBCool NoSQL on Azure with DocumentDB
Cool NoSQL on Azure with DocumentDB
 
Grails Controllers
Grails ControllersGrails Controllers
Grails Controllers
 
MongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless WorldMongoDB.local Berlin: App development in a Serverless World
MongoDB.local Berlin: App development in a Serverless World
 
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and TypescriptMongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
 
The First Contact with Java EE 7
The First Contact with Java EE 7The First Contact with Java EE 7
The First Contact with Java EE 7
 
CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHP
 
Reactive Hypermedia
Reactive HypermediaReactive Hypermedia
Reactive Hypermedia
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english version
 
Web Technologies - forms and actions
Web Technologies -  forms and actionsWeb Technologies -  forms and actions
Web Technologies - forms and actions
 
Reactive Hypermedia APIs
Reactive Hypermedia APIsReactive Hypermedia APIs
Reactive Hypermedia APIs
 
Effiziente Datenpersistierung mit JPA 2.1 und Hibernate
Effiziente Datenpersistierung mit JPA 2.1 und HibernateEffiziente Datenpersistierung mit JPA 2.1 und Hibernate
Effiziente Datenpersistierung mit JPA 2.1 und Hibernate
 
Realm mobile database
Realm mobile databaseRealm mobile database
Realm mobile database
 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overview
 
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worldsOUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
OUG Scotland 2014 - NoSQL and MySQL - The best of both worlds
 
Ajax and Jquery
Ajax and JqueryAjax and Jquery
Ajax and Jquery
 
FITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JSFITC presents: Mobile & offline data synchronization in Angular JS
FITC presents: Mobile & offline data synchronization in Angular JS
 

Viewers also liked

MeteorJS - How to start
MeteorJS  -  How to startMeteorJS  -  How to start
MeteorJS - How to startDan Tran
 
Scaling a MeteorJS SaaS app on AWS
Scaling a MeteorJS SaaS app on AWSScaling a MeteorJS SaaS app on AWS
Scaling a MeteorJS SaaS app on AWSBrett McLain
 
Directory structure for large meteor apps
Directory structure for large meteor appsDirectory structure for large meteor apps
Directory structure for large meteor appsAkbar Ahmed
 
How To Deploy And Scale Meteor Applications
How To Deploy And Scale Meteor ApplicationsHow To Deploy And Scale Meteor Applications
How To Deploy And Scale Meteor ApplicationsDesignveloper
 
Building a production ready meteor app
Building a production ready meteor appBuilding a production ready meteor app
Building a production ready meteor appRitik Malhotra
 
Whatsmeteor a whatsApp like Chat App writen in Meteorjs
Whatsmeteor a whatsApp like Chat App writen in MeteorjsWhatsmeteor a whatsApp like Chat App writen in Meteorjs
Whatsmeteor a whatsApp like Chat App writen in MeteorjsMichael Lazarski
 
Meteor intro-2015
Meteor intro-2015Meteor intro-2015
Meteor intro-2015MeteorJS
 

Viewers also liked (9)

MeteorJS - How to start
MeteorJS  -  How to startMeteorJS  -  How to start
MeteorJS - How to start
 
Scaling a MeteorJS SaaS app on AWS
Scaling a MeteorJS SaaS app on AWSScaling a MeteorJS SaaS app on AWS
Scaling a MeteorJS SaaS app on AWS
 
D3 & MeteorJS
D3 & MeteorJSD3 & MeteorJS
D3 & MeteorJS
 
Directory structure for large meteor apps
Directory structure for large meteor appsDirectory structure for large meteor apps
Directory structure for large meteor apps
 
Rendering in meteor
Rendering in meteorRendering in meteor
Rendering in meteor
 
How To Deploy And Scale Meteor Applications
How To Deploy And Scale Meteor ApplicationsHow To Deploy And Scale Meteor Applications
How To Deploy And Scale Meteor Applications
 
Building a production ready meteor app
Building a production ready meteor appBuilding a production ready meteor app
Building a production ready meteor app
 
Whatsmeteor a whatsApp like Chat App writen in Meteorjs
Whatsmeteor a whatsApp like Chat App writen in MeteorjsWhatsmeteor a whatsApp like Chat App writen in Meteorjs
Whatsmeteor a whatsApp like Chat App writen in Meteorjs
 
Meteor intro-2015
Meteor intro-2015Meteor intro-2015
Meteor intro-2015
 

Similar to MeteorJS Introduction

Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
MongoDB World 2016: Get MEAN and Lean with MongoDB and Kubernetes
MongoDB World 2016: Get MEAN and Lean with MongoDB and KubernetesMongoDB World 2016: Get MEAN and Lean with MongoDB and Kubernetes
MongoDB World 2016: Get MEAN and Lean with MongoDB and KubernetesMongoDB
 
Advanced web application architecture Way2Web
Advanced web application architecture Way2WebAdvanced web application architecture Way2Web
Advanced web application architecture Way2WebMatthias Noback
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbonezonathen
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaJames Falkner
 
Practical AngularJS
Practical AngularJSPractical AngularJS
Practical AngularJSWei Ru
 
Integrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST APIIntegrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST APIEspresso Logic
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital.AI
 
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)Daniel Bryant
 
jclouds High Level Overview by Adrian Cole
jclouds High Level Overview by Adrian Colejclouds High Level Overview by Adrian Cole
jclouds High Level Overview by Adrian ColeEverett Toews
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamBrian Benz
 
WSO2Con EU 2016: An Introduction to the WSO2 Analytics Platform
WSO2Con EU 2016: An Introduction to the WSO2 Analytics PlatformWSO2Con EU 2016: An Introduction to the WSO2 Analytics Platform
WSO2Con EU 2016: An Introduction to the WSO2 Analytics PlatformWSO2
 
StackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStackStackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStackChiradeep Vittal
 
Akka Microservices Architecture And Design
Akka Microservices Architecture And DesignAkka Microservices Architecture And Design
Akka Microservices Architecture And DesignYaroslav Tkachenko
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Emerson Eduardo Rodrigues Von Staffen
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
 

Similar to MeteorJS Introduction (20)

Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
MongoDB World 2016: Get MEAN and Lean with MongoDB and Kubernetes
MongoDB World 2016: Get MEAN and Lean with MongoDB and KubernetesMongoDB World 2016: Get MEAN and Lean with MongoDB and Kubernetes
MongoDB World 2016: Get MEAN and Lean with MongoDB and Kubernetes
 
Advanced web application architecture Way2Web
Advanced web application architecture Way2WebAdvanced web application architecture Way2Web
Advanced web application architecture Way2Web
 
Mres presentation
Mres presentationMres presentation
Mres presentation
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbone
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Practical AngularJS
Practical AngularJSPractical AngularJS
Practical AngularJS
 
Integrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST APIIntegrate MongoDB & SQL data with a single REST API
Integrate MongoDB & SQL data with a single REST API
 
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and KubernetesMongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
MongoDB Evenings DC: Get MEAN and Lean with Docker and Kubernetes
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
 
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
 
jclouds High Level Overview by Adrian Cole
jclouds High Level Overview by Adrian Colejclouds High Level Overview by Adrian Cole
jclouds High Level Overview by Adrian Cole
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
WSO2Con EU 2016: An Introduction to the WSO2 Analytics Platform
WSO2Con EU 2016: An Introduction to the WSO2 Analytics PlatformWSO2Con EU 2016: An Introduction to the WSO2 Analytics Platform
WSO2Con EU 2016: An Introduction to the WSO2 Analytics Platform
 
StackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStackStackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStack
 
Akka Microservices Architecture And Design
Akka Microservices Architecture And DesignAkka Microservices Architecture And Design
Akka Microservices Architecture And Design
 
Nuxeo JavaOne 2007
Nuxeo JavaOne 2007Nuxeo JavaOne 2007
Nuxeo JavaOne 2007
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 

More from Nitya Narasimhan

Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)Nitya Narasimhan
 
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Nitya Narasimhan
 
AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)Nitya Narasimhan
 
The Evolution of Social Search
The Evolution of Social SearchThe Evolution of Social Search
The Evolution of Social SearchNitya Narasimhan
 

More from Nitya Narasimhan (6)

Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)Introduction To Dart (GDG NY Jan 2014 Meetup)
Introduction To Dart (GDG NY Jan 2014 Meetup)
 
From 'Meteor' to 'Maker'
From 'Meteor' to 'Maker'From 'Meteor' to 'Maker'
From 'Meteor' to 'Maker'
 
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)Chrome Dev Summit Highlights (NYC GDG Dec 2013)
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
 
AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)
 
Angular js gtg-27feb2013
Angular js gtg-27feb2013Angular js gtg-27feb2013
Angular js gtg-27feb2013
 
The Evolution of Social Search
The Evolution of Social SearchThe Evolution of Social Search
The Evolution of Social Search
 

Recently uploaded

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

MeteorJS Introduction

  • 1. Meteor : Blazing a trail..
  • 2. ¡  Background   ¡  The  7  Principles   ¡  Ge6ng  Started     ¡  Core  Concepts   ¡  More  Resources   ¡  Advanced  Topics   ¡  Q&A      
  • 3. ¡  A  pla@orm  for  building   ‘next-­‐gen’  of  web  apps   ¡  JavaScript  all  the  way   (client,  server,  database)   ¡  Ecosystem  friendly  (mix   and  match  with  ‘DDP’)   ¡  InnovaQve  ideas  (‘data   everywhere’,  reacQvity..)  
  • 4. Meaningful  Mission   +  Meaningful  Funding   +   Incredibly  Smart  &  Passionate  Team     Mix  of  entrepreneurs,  researchers,   engineers  (ex-­‐MIT,  Stanford,  Asana,   Google,….)    
  • 5. Controller   Controller   Application   Logic,  Controllers   &  Helpers   Model   Model   Model   SMART  SERVER   View   View   Application   View   User  Events   Server  Events   DUMB  CLIENT   Render  returned    ‘page’  views   DATABASE   Send  user     event   Cache   Maintain  state  
  • 6. Controller   Controller   Application   Logic   Model   Model   Model   SMART  SERVER   Application   View   User  Events   Server  Events   SMART  CLIENT   Update  view     page  inline   DATABASE   Request  templates,   Get  data   Controllers  &   Helpers   Handle  events   Cache   Maintain  state  
  • 7. Controller   Controller   Application   Logic   Model   Model   Model   SMART  SERVER   Application   View   User  Events   Server  Events   METEOR  CLIENT   Sync  data     proactively   DATABASE   Subscribe     to  data   Controllers  &   Helpers   React  to  events   Cache   React     to  data   Session   DDP   Distributed   Data  Protocol  
  • 8. Controller   Controller   Meteor  “bundle”     (app  +  core   packages)   Model   Model   BSON/ JSON   NODE  RUNTIME   Handlebars   Templates   User  Events   Server  Events   BROWSER   Sync  data     proactively   MONGO  CLUSTER   Subscribe     to  data   JavaScript   Mini   Mongo  
  • 9. ¡  Data  on  the  wire.  Client  craSs  all  the  HTML.   ¡  One  language.  Client  +  server  +  database  =  all  JS   ¡  Database  everywhere.  Same  API  at  client,  server   ¡  Latency  compensaQon.  Fake  it  Qll  you  make  it   ¡  Full  Stack  ReacQvity.  “Real-­‐Qme”  is  the  default   ¡  Embrace  the  Ecosystem.  Integrate  before  replace   ¡  Simplicity  =  ProducQvity.  Clean  and  classic  APIs  
  • 11. ¡  Define  ‘collecQons’.  Data  models  for  Mongo  DB.   ¡  Publish  data  ‘cursors’  on  server.  Query  results   ¡  Subscribe  to  cursors  on  client.  Auto-­‐updated   ¡  Write  view  templates.  Structures  &  Styles   ¡  Write  view  helpers.  ‘Bind’  cursor  results  to  view   ¡  Define  routes  &  controllers.  Navigate  views   ¡  Make  it  reacQve.  Use  dynamic  Session/cursor  vars  
  • 12. ¡  ApplicaQon  Structure  Maaers   ¡  Data  Security  (pub-­‐sub,  cache,  simulaQon)   ¡  ReacQvity  (in  data  source  +  computaQon)   ¡  Live  HTML  (in-­‐place  reacQve  DOM  updates)   ¡  Templates  (clear  separaQon  of  view  &  helper)   ¡  Packages  (core  +  official  +  unofficial)   ¡  Name-­‐spacing  (automated  wrappers)   ¡  Deploying  (run  vs.  bundle  vs.  deploy)   ¡  ContribuQng  (wriQng  packages)     http://docs.meteor.com/#concepts
  • 13. ¡  Directory  structure  impacts  inclusion   §  /client  loaded  to  client  only,  /server  loaded  to  server  only,  /tests  never  loaded   §  /public  files  ‘served’  (staQc  assets),  /private  files  access  to  server  (via  Assets)   §  Other  files  are  loaded  (and  shared)  across  client  and  server   ¡  Name,  locaQon  depth  impacts  load  order   §  /lib  loaded  first,  main.*  loaded  last   §  Subdirectories  before  directories,  in  alphabeQcal  order  within  directory   ¡  Deployment  (as  bundle)   §  Server  runs  in  Node  fiber  (1  thread/request)   §  Client  Templates  (HTML)  converted  to  JS  funcQons  (Template.*)   §  Client  CSS  bundled,  JS  minified  &  bundled  (creates  1  file  each)  
  • 14. ¡  Client  &  Server  have  the  same  database  API   §  Queries,  validators,  etc.  are  idenQcal  BUT   §  Code  on  server  runs  against  actual  DB,  code  on  client  runs  against  cached  DB   §  ‘Autopublish’  and  ‘insecure’  packages  to  ‘fine-­‐tune’  access  levels         ¡  Mongo  as  ‘signature’  database  (only  opQon)   §  Document-­‐oriented  database  organized  into  ‘CollecQons’     §  Documents  in  JSON-­‐like  format,  good  query/aggregaQon  support   §  Uses  ‘minimongo’  as  client-­‐side  Mongo-­‐compliant  in-­‐memory  cache     ¡  AuthenQcaQon  (Accounts),  Input  ValidaQon  (check)  
  • 15. ¡  Automated  re-­‐computaQon  on  data  changes   §  Writer  regular  code  (imperaQve  style  programming)   §  Create  reacQve  data  sources  (add  dependency  on  ‘Session’  variables)   §  Trigger  reacQve  computaQon  (when  variable  value  changes)       ¡  ReacQve  Data  Sources   §  Session  variables,  CollecQon  queries  (cursors),  Meteor.user,  …     ¡  ReacQve  Data  ComputaQon   §  Template  handlers,  Deps.autorun,  …    
  • 16. Simplicity   (JavaScript)   Reactivity   (Event  Driven)   Interoperability     (via  DDP)   Community   (smart  packages)   Maturity   (changing,  not  yet  v1.0.)   Scalability*   (need  for  patterns)   Consistency*   (legacy  creep)   Testability   (but  wait  for  it..)   *  “With  great  power  comes  great  responsibility”  
  • 17. On  September  25,  2013  (public,  on  Trello)  -­‐-­‐  (current  Meteor  version:  0.6.5.1)  
  • 18. ¡  Best  Learning  Resources  (link)   ¡  Discover  Meteor  (Book)   ¡  Evented  Mind  (Tutorials)   ¡  Meteor  Hacks  (Posts)   ¡  Atmosphere  (packages)   ¡  Stack  Overflow  (quesQons)   ¡  GitHub  (examples)    
  • 19. ¡  How  Does  It  Work?   §  Data  Consistency  (CollecQons  &  ‘Smart’  CollecQons)   §  ReacQvity  (Dependency  tracking  and  automaQon)   §  Interoperability  (DDP,  The  Distributed  Data  Protocol)     ¡  How  Do  I  do  “X”?   §  TemplaQng  (with  Handlebars)  &  Styling  (with  Bootstrap)   §  RouQng  (with  Iron  Router)   §  TesQng  (with  Laika)  &  CI  (with  Travis)   §  Asynchronous  Ops  (with  Node  Fibers  &  Future)  
  • 20.   QuesQons  or  Feedback?   (influence  content  and  coverage  in  future  talks)       Close  the  loop  ..   ¡  Twiaer    è  @nitya  or  #meteor-­‐nygdg   ¡  Google+    è  hap://gplus.to/nitya   ¡  Meetup    è  NYC-­‐GDG  ‘comments’