Meteor.js

It’s been a while since I last blogged, sort of lost the interest didn’t know what to write about but you don’t really care about that do you! Lets get to the point and I’ll tell you what has me so excited about Meteor.

New programming languages and frameworks keep coming along faster than the speed of light in the world of technology but most of them just whiz by and hardly interest me. There are however a few which stand out amongst the crowd and Meteor is one of them. I’ve had a bittersweet relationship with JavaScript, back in the day when I had only gotten started with programming with C++ in school I found it like a breath of fresh air. It could add that fancy rollover effect to pages or a bouncing ball on a webpage, I was amazed by it. But the cross browser issues, quirky behavior and it being a nightmare to debug I gave up on JavaScript.

For a few years it stayed that way, I taught myself some php got bored by it and moved to ruby tried dipping my feet in rails but without much luck as it was too magical. I boarded the Sinatra bandwagon, it is an awesome framework. No magic, no nonsense simply rest but then again Sinatra itself isn’t enough to make nice websites you need something for the front end too and that’s when I started to dive into jQuery rediscovering my love for JavaScript. I read a couple of books on jQuery embraced the asynchronous and restful nature of the web and it was such a joy to make web applications again.

After that for the last couple of years things have been slowed down, sure there have been performance enhancements in jQuery and node.js came along too. I had a brief look at node.js but really didn’t see how much more of a value add it was over Sinatra. Similarly Knockout.js didn’t really knock me out neither did backbone have that much of a backbone for me. Meanwhile at work I used GWT which in my opinion isn’t the best way to write a web application today(It may have been 5 years ago, not anymore). Had I discovered the ultimate framework? Had I achieved nirvana? I sure thought so.

That was untill a week ago when I was struck by meteor.js, I had watched the introductory video and my head was abuzz with such excitement after a long time indeed. I watched the second video and boy was I jumping up and down. Meteor isn’t just an evolutionary framework it’s revolutionary! It doesn’t split the client and server parts of your web app but presents them together. It’s how you would develop any application, sure you need to know about the security aspects but when you’re developing something it should be fun, you shouldn’t be spending time on downloading jQuery and your favorite bootstrap framework and other trivial details. Ideally you should be able to focus on the core of your application and all the secondary things should be dead easy to implement. I also like the social focus of meteor, it couldn’t be easier to integrate your app with Facebook/twitter or for that matter any other social networking site.

What trumps all those minor features and enhancements is it’s publish subscribe feature, if you asked me what was the one single feature that defines meteor. You don’t need to implement polling to write a fluid always up to date interface, this isn’t the 1980s. Meteor just works where most other frameworks make you do too much unnecessary work! Also the package management is pretty sleek, it compares and in some cases surpasses the ruby gems which I consider the ideal package manager.

Having heaped so much praise on meteor I still have a few doubts, the most important is about how well will meteor scale? This is one factor that will probably decide meteors future in the years to come. Will it end up as a toy for prototyping stuff or will it dislodge rails from its pedestal remains to be seen. From a technical perspective it’ll be curious to see what strategy they eventually take to scale and perform under high load. Another thing that is probably on meteor’s roadmap is to support the various other nosql stores other than mongo db. It’ll be interesting to see how they implement this, right now the syntax is quite specific to mongo it’d be better if it was neutral so that there could be support for stores like dynamo db with no change in the existing application code. One last thing that would be absolutely awesome is integration with Native Mobile Apps, even though web apps work well on mobile devices native apps are miles ahead. It remains to be seen how easily can one write the app in meteor and then hook up the presentation onto the native platforms. Boy would that be sweet!

All in all this makes meteor a very interesting framework to watch out for even if you don’t write too much JavaScript, it has so much potential where it will be in two or three years time is an open question. Regardless of how it ends, the ride along the way promises to be a lot of fun. I don’t know about you but I’m boarding it right now!