Tag: railsrumble


RailsRumble Experience in 900 Words

Posted By Ryan Stout on October 23, 2010

Background

I've been doing profession Rails development for the past four years, but this year was my first RailsRumble. The experience of trying to build and launch an app in 48 hours is both extremely fun and extremely stressful at the same time. Our idea was to build out a service that made it easier to translate any site into multiple languages. We wanted to have a bit of JavaScript that you stuck on your page that added a "toolbar" in the bottom of your page, from which a user could switch the sites language, or "Enable Translation Mode" to begin providing their own translations for things. The sites admin could then approve the translations (or auto-approve) and then users could vote on the best translation. The highest voted translation would show up for a given paragraph when a user selected a language.

We knew going into it that this was a fairly ambitious project for 48 hours. The original plan called for there to be the JavaScript component and a proxy server component that you could point a subdomain at (es.agileproductions.com for example) and it would return a translated version of the url. The plan was to try make the proxy server expendable if we ran out of time. Looking back I think our mistake was not calling it early enough on the proxy server.

The Contest

We waited until there was only 6 hours left in the competition to stop working on the proxy server (which unfortunately was a good chunk of the way done by that point). In hindsight, we should have stop building features a lot earlier. We expected that the site wouldn't be perfectly polished, and were hoping to win based on a great set of features, but in the end we ran out of time while polishing and debugging.

Debugging was top priority, and it ended up taking much longer than we expected (especially on the front end JS, which I had been working on by myself).

The Mistake

As the deadline approached, I decided with an hour left that I should bundle all of my JavaScript files together for better distribution and faster loading on peoples sites. Previously, I had the main script loading in all of the other scripts. One thing that I failed to account for was that we were loading in jQuery (in non-conflict mode), then loading in a library that extended jQuery, but when all of the JS was packaged together, the extension to jQuery would try to load before jQuery had initialized. (I made sure everything loaded in the right order, but this was still a problem).

The real issue was that we didn't catch the bug because we were only testing it on sites that already had jquery loaded (not in non-conflict mode). So the final version we pushed out ended up not working in most cases.

Whatever Can Go Wrong Will Go Wrong

I suspect we would have caught the issue had we been able to do our last round of testing. However, when we had about 40 minutes left in the competition, my internet went down (for the first time in at least 6 months). I have fiber at my house and my ISP really is great, this was just terriable timing. So after talking with the guys at my ISP for about 20 minutes, we decided to all run over to a team mates house who lived about 10 minutes away. When we arrived, we have 10 minutes left in the contest. This wasn't enough time to test, so we quickly added a screenshot to the homepage and pushed what we had. It wasn't until hours later that I would realize the version we pushed was broken for use on most sites.

Reflections

Looking back though, we really had a ton of fun working on it. We all worked separately on different components and adhered to some simple API's we had made before the competition. There was a great amount of excitement saturday afternoon when the core features of translating and loading in translations was done. We all got finished with our respective parts at about the same time and things really seemed on track. We could also see that we had a useful product with a bit of the "wow effect."

During the building process, we discussed how great it was when you could just sit down and start building. A team of four really can accomplish quite a bit when starting from scratch, working with familiar tools, and breaking a project up into atomic units.

The Results

While we didn't make it to the finals (I'm guessing because of broken core functionality), we had a ton of fun building it and will definitely be doing it again next year. Some of us have also decided that we are going to finish up the product and launch it. (A bug fixed version is up now at http://www.crowdtranslator.com/

The Best Part

One other footnote, our designer Ben was working remotely, I think my favorite part of the process was pulling in his changes and all of the sudden everything looked way better. It was great to see well done CSS and everyone up here in Montana was thrilled with the final design.

ScreenCast

Lastly, here's a screencast feature walkthrough I made shortly after the contest.


Tags: railsrumble, crowdtranslator