Posted by Joel Low on 25 August 2013 | 1 Comments

Tags: , , , ,

So the joke was on us when StartSSL refused to issue us a certificate to use with HTTPS. They cited "commercial intent." Not that it's completely false, but, we do just want to bootstrap the whole thing so we can test it together with Facebook over Secure HTTP.

Crowdbuy: The Story

Why Crowdbuy? The pet peeve of mine was getting shipments from overseas. The exact case I found myself in, after being introduced to the awesome concept of a Yubikey, was that it was just too darn expensive to get one. I wanted to get a bunch of friends to bulk-purchase and ship it here, but the amount of coordination just left me... too lazy to get it done.

So how can we rectify this? We can tap on the social graph that Facebook's built, so we can prod friends and get them to purchase and split the shipping cost. In the case of the Yubikey, we can even get a bulk discount if we buy enough of them. So that sounds like a good plan, right? But that's not good enough.

I also would like to milk the friendship relation to its maximum benefit, just like Sheldon would. If friends are overseas, and going to come back soon, it would be nice to shamelessly ask them to buy things back, while they were there. How long ago did you crave Marks and Spencer confectionery? :)

The Tools

So we tool a while to come up with a concept and run with it. We only actually started building the app on Friday. What did we decide to use?

  • LAMP Stack on backend, with CakePHP as our MVC framework
  • Backbone.js on frontend, which is also an MVC framework
  • Both interact completely using AJAX

So we have a dual-MVC stack. The frontend is thus completely independent of the backend. On hindsight, while this gave the frontend and backend teams full control over what they wanted to do, and yet build something fast and dynamic.

We also had some extra help from the guys at Semantics3. They have an awesome huge database of too much of what Mankind produces. And we're tapping on that to get the notion of products. Then, we let the users of our app start listing their wants!

The Good

The dual-stack MVC made it very easy to develop. We had the ability to make design decisions for each subsystem based on what was most straightforward, just making sure we adhered to our API spec. This allowed us to build each subsystem relatively independently of each other.

The Bad

Facebook's authentication and graph API seems extremely finicky. It appears to work for the most part, and then breaks (or gives me incomplete results) at the weirdest of times. Case in point: we wanted to convert the currencies the products came in, from USD to whatever the user set as his default currency. Facebook Graph doesn't expose that to anyone; you need a User authentication token for that. So we have to shuffle the token from the client to the server, and exchange the token for a long-term one. This took me one whole afternoon to figure out.

The Ugly

I don't think anything's too ugly at the moment. Then again, we've only been on this for 3 days. Jerome however thinks that the frontend code seems too hackish. I don't know. But this shouldn't be too bad, since the frontend is independent of the backend, so we can just replace it anytime we wish.

Moving Forward

Time to start instrumenting our app. Put in Analytics. Start dogfooding. Start getting users. This must work. Well.

With reference to last week's blog post, about not being proactive enough on forming teams, I'm happy to say I've already formed my teams for Assignments 2 and 3. That was comforting, because I find it really hard to talk to people. Hmmmph.

Till then, hope I survive to blog for week 3. Tutorials and assignments are coming in now :(