Monthly Archives: August 2016

Moving On From Parse

My last post mentioned that the backend for all of my Android apps Parse was halting service early in 2017.  This meant all of my apps would stop working.  Nobody might ever notice except me, but still…

I was faced with a few options:

  1. Run through the Parse-approved migration to MongoDB/Heroku
  2. Setup my own backend and host it myself
  3. Find a roughly equivalent online service to switch to

I tried each of these choices with varying levels of enthusiasm.  The results…

Run through the Parse-approved migration to MongoDB/Heroku

I wasn’t very excited about this because well, MongoDB hosting a Parse Server on Heroku?  I don’t particularly care to go in depth in any of those three.  Nevertheless, if this was going to be a simple switch I thought it was worth doing.  It wasn’t.  I admittedly didn’t put much effort here, but I ran into issues every step along the way I did manage to attempt:  getting my data into Mongo, getting Mongo into Heroku, etc…  This was a while ago now so I forget the details, but after one night of annoyance, I threw in the towel here.

Setup my own backend and host it myself

This was much more appealing because I’ve been messing around with various server side frameworks for a while but never found anything to deploy.  This idea quickly dead-ended when I discovered how difficult it was to deploy any of the big frameworks to Dreamhost (Django, Rails, Flask, etc…).  I wasn’t ready to give into Heroku yet, so I moved on.

Find a roughly equivalent online service to switch to

I put this mess down for a few months after step 2.  I worked on other things and (more frequently) didn’t work on much at all.  Eventually I happened across a Reddit thread about back-ends for Android apps.  Somebody suggested Firebase which I had heard of but not looked at in a while.  Apparently they were purchased by Google, who knew (besides anyone paying attention…)?

This looked promising. It promised much of the same as Parse.  Single back-end to be used cross platform.  Authenticated users.  Analytics.  Etc…  I jumped in.

The Good

The API was incredibly straightfoward.  Like amazingly simple.  It took under 20 minutes for me to switch one of my Parse calls to a Firebase call in an app and start receiving data. I mean, 20 minutes?  The calls were much simpler as was retrieving and parsing the results of those calls.

The Different

I hesitate to use “bad” here because it was more unexpected than a negative for me.  The Firebase database is a JSON database.  Everything you enter has to be in JSON.  I’ve never taken more than a small baby step outside of the world of relational databases, so this was a shock.  Not bad, just different.  This changed the way I had to store the data and, more importantly, how I cross referenced data.  This required some thought, luckily the first app I was porting was the simplest of my three so it wasn’t bad.

Wrap It Up

So there’s what I did. Tried what should have been the easiest thing (migrating using a set of instructions written by the Parse team), the hardest thing (write my own), and the one in the middle (Firebase).  I ended up in the middle and found a great service in Firebase.  If someone has a Parse (I forget what formats they let you export to?) to Firebase DB conversion tool that would be amazing.  As it is, I’ll soon be finished with one out of three apps.  I will have remaining two apps worth of very simple code changes (Firebase is that easy, seriously, try it) and a mountain of data to transfer over.  Typing out loud gave me the idea of writing an app to read in Parse and export to Firebase, maybe that’ll be the subject of my next entry here…