Meteor, MEAN, and LAMP oh my

For the techies out there…
Meteor

Most of you are familiar with LAMP — Linux Apache MySql PHP.
Of more recent vintage is MEAN – MongoDB Express Angular Node.

Each represents a technology stack that focuses on a set of tools to deliver web applications. Some significant difference between the 2 stacks would be:

  • LAMP is focused on Linux as an operating system for the stack, (though WAMP would certainly be another option)
  • MEAN obviates the operating system and Apache by using Node as the built in web-server stack that doesn’t care about OS
  • MEAN also does away with separate programming languages for the front-end (JavaScript) and the back-end (PHP), and uses JavaScript everywhere
  • MEAN is focused on the single page app (SPA), while LAMP development “could” be done that way, it’s more traditional heritage is associated with a multi-page approach

Certainly, there are SPA’s being developed out there on LAMP with jQuery being a leading player in dynamic page loading from the server. But that’s not really my focus here. It’s really to point out this historical bridge from the multi-page oriented LAMP stack to the SPA approach of MEAN.

So where does Meteor fit in? Meteor is the realization of the SPA toolset into a complete package. Rather than putting the parts together in the MEAN stack, Meteor’s encapsulates everything into their framework. Here are the coolest things I like about using Meteor:

  • Full Stack Reactivity — no code needed to have pages auto-update themselves as underlying data in the database changes…very nice
  • Database Everywhere — A mini-Mongo database is maintained on the client with Collections that are tailored to that user. This is an important component leading to…
  • Latency Compensation — traditionally when a data change is made by the user, they must wait for the server conversation to take place before the page is “updated” with that change. Latency compensation allows that change to appear immediately (via the “database everywhere” component), and then confirmed (or backed out) when the server conversation is completed

Continue reading