Rails Rumble: ARSS

October 14, 2012

rails ruby rails rumble

This weekend I have been participating in the 2012 Rails Rumble. I worked with @amdtech and @childoftv to build ARSS.

Check it out at http://arss.io

The idea

A few weeks before the event I started a group and asked both if they would like to join. About a week before the event we got together and chatted about a few product ideas. One stood above the rest, and that was a system to aggregate information around the internet in order to be consumed and redistributed to others.

An example of what we were looking for would be to have the system pull in all the github commits on a project, and let a team lead aggregate them together to display them on a status board so an entire company can get a solid glimpse of what a team is working on.

The roles

Aaron is the lead ops engineer at Tapjoy so naturally we planned for his role was with the core of the system. Integrating various services, setting up production, setting up the databases, things like that.

Ben is a front-end developer that specializes in UI development. He also has a solid understanding of UX and product. Ben's role was css/js, copywriting and some design work.

My role in the project was building the back-end functionality. I would be integrating the apis, building authentication and adding email receiving support.

The process

We started the project early Saturday morning. We used a whiteboard to communicate with each other what the architecture should look like.

We decided to start out with the least work possible: a simple site that just shows incoming emails through pusher. Not even any authentication.

We got there, it took about 4 hours. We used cloudmailin to grab the incoming emails, submit them to our rails app, stored the results in mongodb, then pushed that to the client. We then started working on building authentication and users accounts. That's when trouble started.

The first roadblock

We ran into a pretty serious issue. Aaron read the rules a little closer and found that we couldn't use any paid external services. We were currently using 2: cloudmailin and pusher. We first felt that we had almost built nothing since the most impressive parts we had built, we couldn't use.

We spoke about it a bit and realized we weren't as bad as we originally thought. We could simply use 'setTimeout' in javascript to replace pusher. We then needed to replace cloudmailin. That actually ended up not being a huge deal either. We had abstracted out the mail processing enough that Aaron was quickly able to replace the cloudmailin functionality with a job that pulled down gmail content using the 'gmail' gem.

End of the first day

We started to get pretty tired around 10:00 at the end of the first day and took a moment to have a few beers. We realized that there was a little bit of confusion over what exactly we were building. Ben and I were picturing it as a way to show ALL updates from the sources in a combined feed, whereas Aaron thought of the output as a feed that was generated by hand.

We were a little confused with why having a user go through and manually select updates to put on the feed would be helpful. He told us how he planned to use it at Tapjoy as a way to notify people of deploys or when we get reports of system instability. Simply getting the firehose of updates from airbrake, github or newrelic is simply too much for most people. There are people in Tapjoy that would like to get more information about the system, but not by automated means. Currently that means drafting a new email to send out to many aliases that are hard to keep track of. What would be better is if he could just post it to a secure site for people to check out if they were curious or seeing issues.

After the discussion, Ben and I went home, but Aaron worked late into the night developing most of the core functionality.

Second day

Starting the second day around 10AM we felt pretty good. Even given that we had different plans for the product, it hadn't made any of the work we had previously done useless. Ben and Aaron cleaned up the UI, I finalized the Github integration, Ben created some artwork and did the copywriting, we were working hard, but felt confident we would complete the project by the due time of 5:00pm.

The result

We were pretty happy with what we had built. We had 2 sources (email and github) and felt that it would be easy to start including others such as issue trackers, continuous integration or exception notifiers.

We wanted to get more support for notifications going out of the system. We want people to consider ARSS the place where information is aggregated before going to external services. Email and an API are necessary to make that a reality.

We plan to keep working on the service and hopefully using it professionally as well.

Want a demo?

If you'd like to try out a demo of the service, login with these credentials at arss.io

user: aaron@arss.io
pass: arss.io2012

- xxx


Related Posts