Wednesday, July 21, 2010

Reflections on Creating Stall9

Okay, so Stall9 is not actually finished yet, but I thought I would still reflect on the journey so far. In case you haven't heard, I am building a website called Stall9 that will allow users to collaboratively update the ultimate frisbee community on what is currently going on. The premise of the site is that any person, regardless if he/she is a player, fan, or administrator, can update the information on stall9 to provide online followers with the most real time information possible. The goal is to make updating the site as easy and simple as possible, supporting already widely used technologies like twitter.

I got the idea for this site last summer in India while on a bus daydreaming about ultimate and looking forward to playing with a Madison club team called "Test Tickle Me Elmo" in a couple months. Soon after I had this idea, I went on a 21 day backpacking trip in California (the John Muir Trail if you were curious) and had just a ridiculous amount of quiet thinking time to flesh this idea out. I came back to Madison, WI to start my Master's program in September 2009 and hoped to finish this site before College Nationals came to Madison in May, 2010. However, I realized I knew nothing about programming real websites.

I had dabbled with web programming for several years, but had always used pre-built content management systems and just hacked certain extra features in. For Stall 9, I knew I would need a much more robust user permissions system, and a very dynamic way for users to enter, modify, and moderate all sorts of information. To do this, I decided to learn Python web development and a web development framework called Django. I don't want this post to turn out technical, so I won't talk about any of those specifics.

So that fall, I played around with creating a simple version of Stall 9, but was unable to get very far. I didn't put in nearly as much time as I wish I had, and instead ended up spending a lot of time getting acclimated with my new Master's program. Then I took 5 weeks off for winter break which included visiting family and a 3 week trip to Kenya with Engineers Without Borders.

By the time I got back, it was February and I still had made no progress on this site. However, by this time I had gotten comfortable with my Master's research to the point where I had enough free time to really put some good work into Stall 9. So I plugged away at it and put in a reasonable 200 hours over the next 2.5 months.

Then I hit a wall.

The code base for my site was enormous and if it wasn't already unmanageable, it was quickly become so. I took a step back and thought that there must be a better way to do this. I bought a couple programming books that were more advanced than my previous ones and learned about how to reduce redundancy and keep even the most complex projects manageable. After my first few hours of reading, I knew I still had a lot to learn.

I then completely shut down development and spent about a month intensely reading up on best practices and learning from the experts in the community. It was towards the end of May 2010 that I decided I learned enough to get by.

At this point, college Nationals in Madison was right around the corner and I was extremely disappointed I didn't have a site to show for all my hard work. I was second guessing myself for the first time in the process and wondering if I should continue on with the project. However, I was greeted with a really nice surprise that got me right back on my horse. USA Ultimate unveiled their new website and shockingly it had no more functionality than their previous one. In fact, it seemed that most Americans were really annoyed by the fact that their new site did not really do much to address a fan's needs. What fans need are real time updates and easily navigable information. Since I saw a problem that needed to be fixed, it was easy for me to get back into the swing of things.

First though, I needed to test my new found programming prowess. I built this site in about a week using the best practices I learned, and then deployed it so I could practice deploying a Django site.

Finally, about a week into June, I began working from a clean slate on a new version of Stall 9. That old site will never see the light of day, but that's probably best for everyone :). Over the last 5 or 6 weeks, I am back to the point where I was with the first version of stall 9, but this time my code base is much more concie, robust, and manageable. Instead of my development slowing down because of the size of the code base like before, it is actually accelerating at an astonishing rate. At this pace, a somewhat unpolished version of Stall 9 will be ready for launch sometime in September! As a side note, I am lucky enough to be going to Kenya for 3.5 weeks again in August followed by a bachelor's party in New Orleans, so that is why Stall 9 won't be ready sooner!

If you are interested in learning more about Stall9, please don't hesitate to contact me. I am building this site to fill a void in an ultimate fan's experience, and since I'm certainly not representative of all ultimate fans, I can always use more input from others.