Skip to content

Instantly share code, notes, and snippets.

@debergalis
Last active May 5, 2016 21:42
Show Gist options
  • Star 23 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save debergalis/bf76084cdb1434d8733d to your computer and use it in GitHub Desktop.
Save debergalis/bf76084cdb1434d8733d to your computer and use it in GitHub Desktop.
Notes on Meteor for CS 294-101

Brief notes on Meteor for CS 294-101. Many of the key architectural ideas in Meteor are described at https://www.meteor.com/projects.

  1. BSD as example of great system design. Application primitives: processes run by a scheduler, sockets, sys calls, virtual memory, mbufs. What makes something a platform. Unix vs Multics.

  2. History of application architectures. Mainframes (e.g. IBM 360 / 3270), client-server (e.g. Win32), web (e.g. LAMP), cloud-client. Oscillation of where the software runs. Thin vs thick clients, data vs presentation on the wire. Changes driven by massive forces (cheap CPUs, ubiquitous internet, mobile). New architecture for each era.

  3. What it takes to make modern UI/UX. Mobile. Live updating. Collaboration. No refresh button. All drive the need for “realtime” or “reactive” system. Very different from HTTP era.

  4. Four questions: 1 — how do we move data around; 2 — where does it come from; 3 — where do we put it; 4 — how do we use it?

  5. DDP — the distributed data protocol. It’s all about the wires. Problems with HTTP and REST. Websockets. Publish and subscribe. RPC. EJSON. Authentication. Separation of client and server. https://www.meteor.com/ddp https://www.meteor.com/ejson

  6. Livequery — observable database queries. Mongo poll-and-diff vs Oplog tailing. Strategies for other databases: redis, SQL. https://www.meteor.com/livequery https://www.meteor.com/blog/2013/12/18/david-glasser-on-scaling-meteor-with-the-mongodb-oplog

  7. Full stack database drivers. Mini databases. Isomorphic APIs. Distributed caching. Latency compensation. https://www.meteor.com/full-stack-db-drivers https://www.meteor.com/mini-databases

  8. Blaze and reactive templates. https://www.meteor.com/blaze

  9. Generalized reactivity on the client. Tracker. Autorun. https://www.meteor.com/tracker https://github.com/meteor/meteor/wiki/Tracker-Manual

  10. Putting it all together: autopublish and the mind-melting screencast. https://meteor.com/screencast

BONUS TIME

  1. Concurrency and performance in JavaScript. Fibers. https://github.com/laverdet/node-fibers http://wiki.ecmascript.org/doku.php?id=harmony:generators

  2. Packaging. Single loading vs multiple loading. Meteor’s version solver. A* vs SAT. https://www.meteor.com/version-solver http://minisat.se/ https://www.npmjs.com/ http://bundler.io/

  3. Isobuild. https://www.meteor.com/isobuild

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment