InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese an...
Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the sprea...
matt debergalis
@debergalis
apps are moving
to the client
massive
architectural
change
increasingly
absurd stacks
remember LAMP?
you’re stuck solving
too many problems
fighting today’s battles
with yesterday’s solutions
WEB
URLs + hypertext
HTTP + REST
Relational DBs
tables (relations)
declarative algebra
ACID
UNIX
processes + signals
files + sockets
modularity + pipelines
cloud platform
JavaScript
JS is the new C
unified API
data on the wire
live data sets
remote methods
servers publish
sets of documents
Posts = new Meteor.Collection(“posts");
// server
Meteor.publish("newestPosts", function() {
return Posts.find({},
{sort: ...
clients call remote
methods on server
// server
Meteor.methods({
upvotePost: function (id) {
Posts.update(id, {$inc: {votes: 1}});
}
});
// client
Meteor.call(“...
DDP
CLIENT: {msg: “SUB”, name: “newestPosts”}
SERVER: {msg: “DATA”,
collection: “posts”,
id: 1,
set: {title: “First Post”,
aut...
<- SUB newestPosts [6a6cfe]
-> SET posts 1 title 'First Post'
-> SET posts 1 author 'Matt'
-> SET posts 2 title 'Followup'...
<- SUB newestPosts [6a6cfe]
-> SET posts 1 title 'First Post'
-> SET posts 1 author 'Matt'
-> SET posts 2 title 'Followup'...
<- SUB newestPosts [6a6cfe]
-> SET posts 1 title 'First Post'
-> SET posts 1 author 'Matt'
-> SET posts 2 title 'Followup'...
<- CALL upvotePost 1 [f2548c]
-> RES f2548c ‘okay’
<- CALL upvotePost 1 [f2548c]
-> RES f2548c ‘okay’
<- SUB newestPosts [2351cc]
-> SET post 1 title 'First Post'
-> SET pos...
<- CALL upvotePost 1 [f2548c]
-> RES f2548c ‘okay’
<- SUB newestPosts [2351cc]
-> SET post 1 title 'First Post'
-> SET pos...
-> CONNECT
<- CONNECTED 1234
-> CALL buyCredits 100.00 [f2548c]
-> CALL sendGift 'avital@meteor.com' 10.00 [9fda97]
<- RES...
-> CONNECT
<- CONNECTED 1234
-> CALL sendGift 'david@meteor.com' 10.00 [68e32a]
...
-> CONNECT
<- CONNECTED 1234
-> CALL sendGift 'david@meteor.com' 10.00 [68e32a]
... disconnect ...
-> CONNECT 1234
<- CONN...
DB on the client
you need a cache
don’t invent a new one
Reactivity
full stack is event driven
declarative DOM
Deps
Spark
Meteor.posts.allPosts = function () {
return Posts.find();
};
Meteor.posts.when = function () {
return this.toISOString();...
Distribution of packages
separable modules
packaging for cloud
stop making devs
QA the whole stack
www.meteor.com
@meteorjs
Meteor - Web Development Like You Never Seen
Meteor - Web Development Like You Never Seen
Meteor - Web Development Like You Never Seen
Upcoming SlideShare
Loading in …5
×

Meteor - Web Development Like You Never Seen

2,022 views

Published on

Video and slides synchronized, mp3 and slide download available at http://bit.ly/17OsVK4.

Matt DeBergalis introduces Meteor and some of its components, showing how they work together to shorten the development cycle, whether you're a team of expert developers or just getting started.Filmed at qconnewyork.com.

Matt DeBergalis cofounded the Meteor project and is the COO of Meteor Development Group. Before Meteor, Matt founded and ran ActBlue, the largest political fundraising platform in the world. Before that, Matt was a kernel hacker. Some of his technical credits include contributions to the NeXT port of NetBSD and work on the NFSv4 and DAFS specifications while at Network Appliance.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,022
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Meteor - Web Development Like You Never Seen

  1. 1. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /meteor
  2. 2. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  3. 3. matt debergalis @debergalis
  4. 4. apps are moving to the client
  5. 5. massive architectural change
  6. 6. increasingly absurd stacks
  7. 7. remember LAMP?
  8. 8. you’re stuck solving too many problems
  9. 9. fighting today’s battles with yesterday’s solutions
  10. 10. WEB URLs + hypertext HTTP + REST
  11. 11. Relational DBs tables (relations) declarative algebra ACID
  12. 12. UNIX processes + signals files + sockets modularity + pipelines
  13. 13. cloud platform
  14. 14. JavaScript JS is the new C unified API
  15. 15. data on the wire live data sets remote methods
  16. 16. servers publish sets of documents
  17. 17. Posts = new Meteor.Collection(“posts"); // server Meteor.publish("newestPosts", function() { return Posts.find({}, {sort: {when: -1}, limit: 10}); }); // client Meteor.subscribe(“newestPosts”);
  18. 18. clients call remote methods on server
  19. 19. // server Meteor.methods({ upvotePost: function (id) { Posts.update(id, {$inc: {votes: 1}}); } }); // client Meteor.call(“upvotePost”, “4256ec2a”);
  20. 20. DDP
  21. 21. CLIENT: {msg: “SUB”, name: “newestPosts”} SERVER: {msg: “DATA”, collection: “posts”, id: 1, set: {title: “First Post”, author: “Matt”}} SERVER: {msg: “DATA”, collection: “posts”, id: 2, set: {title “Followup”, author: “Matt”}}
  22. 22. <- SUB newestPosts [6a6cfe] -> SET posts 1 title 'First Post' -> SET posts 1 author 'Matt' -> SET posts 2 title 'Followup' -> SET posts 2 author 'Matt'
  23. 23. <- SUB newestPosts [6a6cfe] -> SET posts 1 title 'First Post' -> SET posts 1 author 'Matt' -> SET posts 2 title 'Followup' -> SET posts 2 author 'Matt' -> SET posts 8 title 'Today’s news' -> SET posts 8 author 'Sam'
  24. 24. <- SUB newestPosts [6a6cfe] -> SET posts 1 title 'First Post' -> SET posts 1 author 'Matt' -> SET posts 2 title 'Followup' -> SET posts 2 author 'Matt' -> SET posts 8 title 'Today’s news' -> SET posts 8 author 'Sam' -> UNSET posts 2 title -> UNSET posts 2 author -> SET posts 1 title 'Matthew'
  25. 25. <- CALL upvotePost 1 [f2548c] -> RES f2548c ‘okay’
  26. 26. <- CALL upvotePost 1 [f2548c] -> RES f2548c ‘okay’ <- SUB newestPosts [2351cc] -> SET post 1 title 'First Post' -> SET post 1 author 'Matt' -> SET post 1 upvotes 1
  27. 27. <- CALL upvotePost 1 [f2548c] -> RES f2548c ‘okay’ <- SUB newestPosts [2351cc] -> SET post 1 title 'First Post' -> SET post 1 author 'Matt' -> SET post 1 upvotes 1 <- CALL upvotePost 1 [f2548c] -> RES f2548c ‘okay’ -> SET post 1 upvotes 2 -> READY 2351cc
  28. 28. -> CONNECT <- CONNECTED 1234 -> CALL buyCredits 100.00 [f2548c] -> CALL sendGift 'avital@meteor.com' 10.00 [9fda97] <- RES f2548c 'okay' <- RES 9fda97 'okay'
  29. 29. -> CONNECT <- CONNECTED 1234 -> CALL sendGift 'david@meteor.com' 10.00 [68e32a] ...
  30. 30. -> CONNECT <- CONNECTED 1234 -> CALL sendGift 'david@meteor.com' 10.00 [68e32a] ... disconnect ... -> CONNECT 1234 <- CONNECTED 1234 -> CALL sendGift 'david@meteor.com' 10.00 [68e32a] <- RES 68e32a 'okay'
  31. 31. DB on the client you need a cache don’t invent a new one
  32. 32. Reactivity full stack is event driven declarative DOM
  33. 33. Deps Spark
  34. 34. Meteor.posts.allPosts = function () { return Posts.find(); }; Meteor.posts.when = function () { return this.toISOString(); }; <template name=”posts”> <div id=”posts”> {{#each allPosts}} <div class=”post”> {{title}} &mdash; {{when}} </div> {{/each}} </div> </template>
  35. 35. Distribution of packages separable modules packaging for cloud
  36. 36. stop making devs QA the whole stack
  37. 37. www.meteor.com @meteorjs

×