The first person I started freelancing for is Joshua Schachter. Joshua is well known as the founder of del.icio.us, the bookmarking website which made “social filtering”, “tagging” (at the same time as Flickr) and “Web 2.0” common buzzwords.
I stumbled upon his tweet one day that he was looking for remote Python developers for his pet projects, I said “Hey, I’m interested” and next thing I know he is throwing ideas (and he has lots of ideas) and I’m furiously thinking about the fastest way to implement it. Over time, what interested me the most was not the idea itself but rather the evolution of the idea while iterating over prototypes and how Joshua creates this evolution. It has been fascinating to be a “fly on the wall” in this process.
The first project was ClueDB, a “tips and tricks” website, or a “lifehacker, by the people” as I like to call it. Built using MongoDB, Flask, my flask-boilerplate project, HTML5 Boilerplate, jQuery, jQueryUI, Twitter/OAuth integration, and Fabric. Standard stuff.
Joshua started with a simple answers / tricks site and slowly hacked on features. For example, he said “let there be tags” but there was a twist. The tagging would not be done by the submitter of the clue him/herself but by other people visiting the site. “It would be less spammy this way” he said. Boy, was that an eye-opener to me on how a simple social “tweak” could make a big change to the content and hence the trustworthiness of a site.
The second aha moment for me was when he said “let there be votes” :
This was a very interesting scheme of voting where we ask for the direct action by the user and not a simple plus/minus counter which doesn’t say anything about the usefulness of a clue (as opposed to popularity).
Things were going along, and then Joshua said “let there be user profiles” and things were going along again.. and then Joshua said “let there be a page listing all the clues that the user has voted ‘Plan to try it’” and we created such a page. The beauty of this was that now there was a single page that a user can use as a bookmark, homepage or share it with friends – voila, viral and useful at the same time.
Similar aha moments was creating a link called “random clue you haven’t voted” which would encourage the user to both explore more content as well as encourage to vote at the same time, and so on.
The latest project is StackParts.com – a simple catalog of parts for a web stack so that developers can weigh in their options and discover new ones for their next webapp. Built using Tornado, Python, Fabric and YAML files as the NoSQL database ;-).
This project was again interesting for the use of tags to organize the projects and the relationships between them, which you can see in action when you visit any project page on stackparts.com.
(As an aside, the site is also a testament to my total lack of design skills.)
And all the while, Joshua is busy with his own startup!
In summary, it’s been a fascinating experience where Joshua is doing the product management and I’m doing the coding.
My two favorite lessons from this experience are: