Why I Switched from Rails and .NET to Meteor

This week I realised that all of my recent web projects used Meteor, a platform that has only recently just made version 1.2.

The Reasons For Switching

...in rough order of importance:

  • Installing and maintaining rails on my mac and virtual machines drove me crazy
  • I needed to create modern user interfaces with reactive real-time support
  • I needed cross platform deployment for my open source Firework Real-time Logging App project to include:
    • Linux
    • OS X
    • Windows
    • IOT devices
  • I wanted a platform with built in package manager, build system, and web server - the less wrangling to build the better
  • I wanted the potential to port my web projects to IOS and Android
  • A no-sql database (e.g. MongoDB) suited the kind of projects I'm now building

Moving Away from Rails

It all came about after my final fight with Rails on the Mac...

I decided to have a look round at all the other options available.

Rails had been an excellent option for certain web projects for many years and I loved Ruby but was finding that it was taking a lot of effort to keep all the environments working.

My numerous projects had multiple versions of ruby, rails, gems... and upgrades weren't going that smoothly.

In addition I needed a more reactive interface option (e.g. Angular, Knockout) which therefore necessitated an API backend. If I kept going with Rails I'd need to implement new UIs plus an API... certainly possible but a lot of effort.

Why not see what was currently available that would give me what I now needed:

  • reactive front end
  • simple to implement backend
  • cross platform capability
  • potential to go to IOS and Android

Not .NET

.NET serves me extremely well in the corporate world with possibly the best tooling going (Visual Studio + Resharper), comprehensive documentation, plus a great language (c#) with all those nice modern features you get used too like Linq, lambdas, generics etc.

.NET is also pretty good on the web front nowadays with the later versions of MVC but the key issue is that it isn't cross platform (just yet).

I had to rule out my most used language and ecosystem for that single reason.

Meteor Comes into View

After a short flurry with UI options including Angular, Knockout, Ember plus backends such as Parse, Azure Mobile Services, Hoodie, Firebase I noticed Meteor.

Meteor promised a more integrated option including a reactive front end and MongoDb datastore accessed using the DDP protocol. I liked the concept of the mini mongo in-browser datastore and the MVVMalike templates.. something that had worked well for me in WPF.
Using both javascript for the backend code and fronted meant at least one less language to mentally juggle.

After installing and following the official tutorial I realised that Meteor was awesome for reactive front ends, fully cross platform and simple to setup and keep running.
As of v1.2 Meteor now includes ES2015 so even the javascript it uses is the latest available whatever the client browser.

Since then (a few months ago) I have rewritten Wakeboard UK from scratch and migrated my open source project Firework over from Angular/Azure Mobile Services.

In addition I'm now running Wakeboard.com on Telescope, another Meteor app from Sacha Greif.

I'm delighted with the results. Developing is a joy and setup a breeze.

I'm also getting good performance on modest hardware (100+ api calls/second in Firework) with the front end keeping up nicely to the updates being pushed out via DDP.

So far so good... here's to what MDG release over the next year or two.