Saturday, November 22, 2008

The Most Rockin' Carpool Site on the Web

Introducing MyCarpoolRocks.com

This blog post marks the second launch party for MyCarpoolRocks.com, a ride sharing site so easy to use your 80 year old grandma could figure it out, and so awesome it’s going to be the talk of every college and work party.

Why ride sharing is awesome

For the past several months I’ve been actively pursuing ride sharing. My reasons are more economic than environmental (interestingly enough the two intersect here). Here’s why I think ride-sharing is awesome:

  • We (my wife and I) continue saving an extra car payment, and get along just fine with our vehicle which we’ve completely paid off
  • Save wear and tear on said vehicle
  • Lower monthly payment for auto insurance
  • Less gas money
  • The ability to be productive during my commute time (I’ve got a stomach of steel when it comes to getting car sick, my stomach is awesome!)
  • Opportunities to socialize with car-pool partners.
  • Helping to shrink government by being less dependent on government to make my transportation more cost effective. (OK, this will not be a political post)

Why I created a ride sharing site

Months ago when I was searching for a carpooling website to organize carpools in my church and community, and I found myself in Goldie Locks’ shoes, except the baby cub spit in his porridge and wet his bed. I couldn’t find a carpooling site that was “just right” – one I could recommend without any reservations. They were either difficult to figure out, or it was difficult to modify your commute once you’ve recorded it, or protect your privacy without listing your house as 5 miles away, or required WAY TOO MUCH information to sign up.

I don’t pretend to be so smart that I can create the perfect carpooling site, but I decided I was certainly going to try. I started out with these objectives in mind:

  • Any user must be able to INSTANTLY understand the tool
  • The sign up form should be as short and quick as possible (no email verifications!)
  • It should be fun
  • It should use be very visual (IE – if you can convey the information visually on a map, or control input visually without using a drop down box, do it)

How I built MyCarpoolRocks.com

I used the following libraries / gems

  • open_id_authentication (with ruby-openid) – providing services to authenticate against open id servers. This plug-in is FANTASTIC.
  • restful_authentication – very great plugin by technoweenie to handle user authentication.
  • gravatar – Does the job to display user gravatars on your site.
  • indicator – indicator helper methods and javascript.
  • recaptcha – Put recaptcha’s on your website. Worked great!
  • rspec and rspec story runner to test.
  • uber-builder – A fine form builder library. Render the same form partial as a static form and get your view for free. Supports various layout styles like tables, ul / li, etc. and does not get in your way.

Other:

  • To host, I got a Linode slice. They’ve been really great so far.
  • Bought the domain from http://danggood.com/
  • I made heavy use of rails ActiveRecord named_scopes. Man they are awesome.
  • As for Google maps, I coded straight against their JavaScript API. I wrote a resizable rectangle control for Google Maps even (contact me if you’re interested in it). Google Maps’ API is very awesome and does not need any Ruby on Rails helpers to work with maps.

Lessons Learned (so far)

User case studies are KING

I can’t tell you how important this is: after you implement any idea, find somebody who has never seen what you’ve been working on, and preferably is not well acquainted with what you have been doing. Watch them try to go through the site, take notes on what confused them, and try to see things from their point of view as they are stumbling through it. Resist the urge to help them, unless they get totally frustrated. Just sit back and quietly observe. Then, take feedback by the shovel-full.

After EXCRUCIATING user testing from my good friends and family (thanks, you guys so rock), I was able to iron out some pretty serious road blocks that would not have even been aware of otherwise.

Don’t fall in love with your own ideas

Your love affair with your ideas will almost inevitably lead to failure. Why? Because we all have blind spots, and it often takes the collaboration of several minds to get a clear picture.

When you get feedback from your user case studies, don’t be afraid to throw away code, or completely rearrange or restructure things.

For example: at first, the sign up process consisted of two parts: “search for matches” and “register your commute”. I really liked it that way – it provided flexibility. I even had the search address being stored in a session and auto-populating in the commute registration form.

When my tester got very confused, and couldn’t understand why she was being asked for her address twice, I was tempted to explain to her why it was so awesome that way. Instead, I sought to understand her point of view. Her view was more enlightened than mine, and I saw that the flexibility I as in love with was ultimately wasn’t adding value but detracting from it by complicating things. The refactoring was painful, but was also one of the greatest improvements I’d made since the first prototype of the site.

Be an information elitist

Don’t be afraid to scrap things – put every piece of information on trial, especially when you are asking your user for information: are you needed to get the job done, is your existence warranted? Persecute without mercy.

Make a clear path for the user that involves sign up.

I believe you’ve got to guide a user down a path that leads them to sign up. In my first launch attempt, I just showed a search form and let them search. Not wanting to force people to register, people got on the site, searched, and said “oh, that’s cool”. Then they missed the tiny “add your commute now!” link and closed their browser. Gone, probably never to return again.

Conclusion

Building MyCarpoolRocks.com has been a fun and rewarding. I hope it gets to live up to its potential and create widespread value in my community wherever it finds itself getting heavy use.

Feedback and criticism in the spirit of peer review is most welcome.