Why I fell in love with Meteor

Warning, this is a bit of a long post…

I have seen a lot of hand-wringing about the future of Meteor. I share in that hand wringing because I have seen core developers move away, and third party packages atrophying. It is very worrying. But I bloody love Meteor. It saved my bacon, and that counts for me :smile:

A bit about my history. For the longest time, I was a C guy. I still am. If you held a gun to my head to write something, I would have chosen C until last year. I have dabbled with other languages including a heavy dose of Obj-C (I am one of the original authors of a somewhat popular terminal emulator on OS X). But I am essentially the ultimate backend guy where front-end was a foreign term to me. I did hardware bringup, backend apps, SQL database apps, but always had a bit of contempt for the web world. That was not hard stuff, I told myself.

Until I had to build one. The last time I did anything web related was back in 2002 :slight_smile: I hadn’t thought it had moved on much :wink:

So, here I was in April 2016. I had been working on a new OpenStack platform, a cloud virtualization environment. I wanted to launch this platform. I needed a web UI platform and and a backend for doing some business logic like accounting and usage tracking and such. So doing this on Wix or something similar was not an option. So I outsourced this job. The contracting company essentially chose MySQL and PHP. Nothing wrong with those technologies, but crap, the implementation sucked. I refused to put my name behind that. I needed to rewrite the frontend. I had 10 days to launch.

I was scrambling. I did a very hasty review of web technologies that I could use. I didn’t have much time. I knew instinctively that I needed to look at JavaScript frameworks. But which one?

While I had a very inflated opinion about my own capabilities, I was in new territory. Google search after google search revealed many options. Way too many :slight_smile: I finally settled on Meteor.

Why Meteor? What attracted me was the full stack nature of this beast. I didn’t need to worry about plumbing the various parts. I could focus on my needs in the next 10 days. Most other stacks (and I admit I might have missed a few) demanded I understand plumbing various components together.

At that time, I needed a frontend for people to use and a backend for our solution to connect to. I didn’t care about pub/sub, Blaze vs React, mongo vs others, etc. I just needed to get this done in 10 days. Here were my challenges:

  • I needed to bone up on JavaScript after 14 years
  • I needed to learn a new framework, and possibly a NoSQL DB technology
  • I needed to learn how to write UI code
  • I needed to learn how to expose a REST API to the actual product to connect to
  • I had to release this stuff in 10 days!

Suffice it to say, I did not sleep much the next 10 days.

But damn, Meteor made it easy. It gave me Mongo. I figured it out. It gave me Blaze. I figured it out. It gave me reactivity that I didn’t need, but damn, I loved it. It didn’t have a REST API, but simple:rest was beautiful. I didn’t know anything about UI routing, but flow-router just worked, thank you Arunoda, and good luck!. The google/facebook oauth packages just worked. accounts-password worked. alanning-roles worked. Damn it, it all bloody worked!

Remember, I was running up against a clock. Tick-Tock :smile:

Fast-forward 10 days. A lot of sleepless nights. But it was NOT spent fighting the stack. It was spent relearning JS and implementing my business logic. Meteor got out of my way and helped me. Hell, I was worried about deployment until I learned about Galaxy :smile:

OK, so this launched. It’s all good. Thank you Meteor and your forums!!!

Well, the next project came along! This time, it was a mobile only app. I refused to use ionic or such types of technologies, sorry guys! i really wanted something native! I wanted something native like for both iOS and Android. And I really need pub/sub this time!

By this time, I was much more comfortable with JavaScript :slight_smile: But

Challenges:

  • As good as I am, I had never developed a mobile app, period!
  • Our app was bloody complex!
  • I didn’t know Swift (even though I was very comfortable with Obj-C), and was very rusty in Java
  • I wanted a common code base for iOS and Android
  • I needed data reactivity and pub/sub with the backend server

So, I ended up picking react-native for the mobile app stack, but I really wanted to use Meteor as the backed. Could that be done? Fortunately, I found react-native-meteor. Bloody hell, that is a sweet package.

Fast forward, We have a complete solution now with Meteor backend and a react-native mobile app. Would this have been possible without Meteor? Of course! But damn, I didn’t need to worry about the backend much. It just bloody worked!

So, all in all, you guys at MDG and everyone in the community saved my bacon. I know things are changing, and I am watching. I am excited about Apollo, Vulcan, etc., and I know there are scalability concerns, but I want you folks to never forget about folks like me :smile: This is why you shine!

52 Likes

Very Nice! Really enjoyed …Thanks for sharing!

Great story thanks for sharing

Great story. I think there are lots of developer gratitude for meteor out there like this which should be great for convincing devs to enter / grow the meteor community. I think there should be a space to leave this type of recommendations / developer stories for outside people to read when they are considering stack tech.

I also had 6 months to deliver a flexable BI tool, fast forward 10 month, and I’m running over 200 custom business dashboards with over 700 mongo aggregations delivering up to date reports for currently 500 business users and processing over 100k emails to date. This was also my first web app, and my first software project so a lot could have gone wrong. Attempting a project of this scale with only one full time developer was definitely crazy and sleep was also sacrificed, but it had to be done and meteor and react made it possible.

10 Likes

Awesome, thanks for sharing :slight_smile:

I really hope that Apollo will, with time, become a universal data solution that’s just as easy as Meteor! It’s slow going because there are so many more details, but I bet that with time writing a GraphQL query to get data from anything will be as simple as it has been to write a Mongo query in Meteor.

11 Likes

I sometimes fear, at some point in the future, Facebook may acq-hire/acquire the great team behind Meteor and Apollo - it’s only a matter of time.

1 Like

I’m extremely passionate about the idea of an open-source driven company where the business model and open source software have aligned incentives. Facebook’s business isn’t developer tools; it’s social networks.

6 Likes

I myself am moving away from Meteor, but jumping with both feet into Apollo. I’m really excited about its potential! IMO it’s one of the best things to happen in GraphQL land. That said, I’ll be eternally grateful for Meteor, because it renewed my passion in web development.

6 Likes

I thought you could have meteor-Apollo combo, or even react-meteor-Apollo combo.

I’m going serverless in the future (Lambda + Node.js + GraphQL + React + Apollo).

You definitely can have Meteor-Apollo – and it’s easy to hook them up. :slight_smile:

1 Like

I will give it a shot too. Do you happen to know if Apollo will break the DDP?

Apollo co-exists with DDP quite well. My app currently has Meteor accounts, in Mongo/DDP, and uses Apollo for all other data.

Node? or you mean JAMStack?

Nope, I do mean Node.js. To clarify the stack a bit more (in order from front-end to back-end, roughly):

  • React - obviously the web app itself
  • Apollo - network interface set up to talk to AWS API Gateway
  • AWS API Gateway - serves as a proxy to invoke AWS Lambda function
  • AWS Lambda - contains a Node.js script that uses the graphql-server-lambda package to set up a GraphQL endpoint

So Lambda spins up a GraphQL server on demand. No scaling worries, whether you’ve got 10 users or 100,000. And super cheap to run, too.

4 Likes

Thanks…very attractive set up…wasn’t aware of graphql-server-lambda…that’s super helpful!

2 Likes

I think you guys are going off on a tangent here. The thread was started to celebrate Meteor which many of us enjoy and not to discuss an alternative setup.

Not everyone is looking for a complex, highly flexible data layer endpoint, and the simple Meteor DDP with it’s RPC methods is enabling many with little to no experience to start their businesses, and that’s the point.

7 Likes

Yes indeed :slight_smile:

No offence though to the other discussions, it has been interesting

Get Outlook for iOShttps://aka.ms/o0ukef

1 Like

@ujwal

What’s the name of the product?