My progress with learning Mongo and Ember

I’ve spent about 16 hours running through tutorials, reading and rebuilding Poopee. This post will cover what I’ve learnt so far and how.

Poopee currently uses a MySQL database fronted by PHP that returns XML. The front-end is JQuery. My aim is to rebuild it with Mongo and Ember.


I’m comfortable with Mongo. I run through a basic interactive tutorial at Mongly. The main reason I wanted to use Mongo was that it had a simple way to handle geospatial queries. This was covered by Mongly with a geospatial tutorial.

The next step was to learn how to use Mongo as part of an API. Christophe Coenraets has a good two-part tutorial on how to build a simple site with Node.js, Express, Mongo and Backbone. The first part is a good guide on building the API, which I followed. The second is really a link to a github repository for the finished product. I used the first post to build the API for Poopee. That included importing the lastest batch of Australian Toilet data. Importing the XML data was the single task that I spent the most time on.


Outside the day and a half I spent on the API, I read about the good, bad and the ugly of pretty much every javascript framework I could find. I settled on Ember as the framework that I’d tackle. Ember is popular enough to have documentation and good tutorials. The decision was a toss-up between Angular and Ember. I rejected Angular because I didn’t like the way it extended HTML. I prefer to keep my HTML clean. Obviously, I can change my mind later, once I delve deeper into Ember. It’s highly likely I’ll end up using Backbone for Poopee, because it’s such a straight forward web app.

So far, I’ve spent my time coming to grips with the new (to me) concepts in Ember. After reading the Ember guides, the article/tutorial that I saw recommended was Advice on & Instruction in the Use Of Ember.js.

The next step is to run the Ember and Rails tutorials. The concept that I struggled with was how the API connection worked with the routing. I’m expecting this tutorial to help me understand that.