Wednesday, November 14, 2012

Boston Startup Weekend

I just attended Boston's Startup Weekend and I had a great time. This was my first Startup Weekend and I had no idea what I was getting into. I talked with Darius Kazemi from Bocoup just to make sure it would be fun - that was my 'must be' criteria.

My first goal was to pick my team: I listened to the 80 or so pitches and was texting a friend and my wife to see what they thought. I heard a few cool ideas but wanted to pick something I had half a chance of coding in the weekend. I was deciding between an app that orders beers at a bar or a website that located film sites and movie stars (perfect for tourists and movie lovers). As I mentioned, the goal was to have fun and of course, explore cool ideas.

The bar idea was swimming in people - lots of them. They also wanted to work in Cambridge - I wanted to fight for Boston. The movie guys said they would move to Boston for me - so the deal was sealed (how could you say no to that?). We also had some good experience on the team, a UI/UX guy from Amazon and a product manager from a medical software company (that knew enough javascript to be dangerous). The business guys were great also. We had a hedge fund VP, private equity analyst, marketer and chip manufacturing manager. We also had Ollie (but the team didn't know that yet), my dog.

We then worked until midnight laying out the plans for Saturday. I tried to get the free domain promised by a sponsor and organized a power strip for everyone's computer (I just can't help being the IT guy).

Next day was an 8am start at Bocoup. We met for breakfast and then I offered the Pubget offices for a quieter work environment (10 teams working on crazy ideas is far from tranquil). Our team had some of the provided breakfast and we then moved to Pubget where Ollie greeted everyone in typical miniature schnauzer style - jumping out of his skin he was so glad to meet everyone.

The business guys starting talking about the pitch and three of us started the plan to build the app. I now know that an app is not needed for StartupWeekend, but I would go mental spending 54 hours building a PPT deck with nothing functional. I was also curious how much we could get done in the time allowed.

The technology plan was to only commit to a few very easy features and make them possible to demo. The original ask was for finding where movie stars will be, but that meant crawling blogs and unstructured sources. This was a non-starter for a weekend project - we needed to populate the database fast. So we agreed to just demo the historical part - where films had been shot across the USA.

After a little bit of searching we found three services that do this and allowed crawling in their robots.txt file. Then within a few hours, I had written the code and imported over 4,300 scenes with a large amount of duplications. While I did this, our newly appointed javascript guru (Anthony) was getting a google maps key and figuring out how to display map points on a page and link to imdb, street view and some other cool things we actually had to cut for the demo.

After getting the data loaded, I wrote a JSON API using Ruby on Rails 3.2 (the latest version). The API was designed to be used by the javascript which powered the maps display. I also added facebook and google login via omniauth.

The next feature was to write a photo uploading page to let people checkin and share their photo at the scene. I started to use paperclip but switched to carrier wave as it seemed easier to use S3.

I then needed moved the html static pages Anthony had been working on into views and showed him how to edit these and use github to commit and push. To support the collaborative development, I used circle-ci to run the tests on each commit and then deploy if the tests passed (continuous integration and deployment).

The app was deployed to two existing instances I have running on EC2 in different AZs (availability zones) running apache and passenger (old school I know, butI have not moved to unicorn on those machines). This is behind an ELB and the domain was registered and running in Route 53. The database was also in RDS. Did I mention we had an amazon employee on the team? I was already a fan, and couldn't resist using as much as I could from their stack.

I also hooked up google analytics and just in case people started to use it and we wanted a CRM. After an 8am start and a midnight end, anything was possible.

The UI/UX was finished around 8pm on Saturday, while this backend was  still being developed. At that time we realized we really did not have the HTML/CSS/JS skills to implement the UI. However, we had so much functioning (facebook, photos, maps, street view, api, crawling, etc) it would be a pity not to demo that. The pitch was a strict 4 min - so we could not do everything. We decided to switch from static mockups and work on the live site instead.

We worked solidly through to midnight (visiting Bocoup across the street for dinner). We agreed to return to Pubget on Sunday at 8am. The pitch practice was at 11am so we didn't have much time. The final hours were spent on the checkin pages, street view and a simple login home page. We also created a static home page of what an iPhone app could look like. The site mostly works on the iPhone but we decided very early on coding an iOS app was in none of our skill sets.

I ran through the demo a few times as practice. I also noticed that the room had two screens so could handle two computers. We decided to use one screen for the deck and one for the demo. This would allow us to maximize the 4 minutes and not have to fuss about switching from PowerPoint to Chrome.

Having said that, none of this prepared me very well for the demo. The Google maps locked up half way through the demo while scrolling. I was not able to demo the photo upload and facebook features at all. I let the team down and felt horrible - I really feel for everyone that has a demo hiccup and there is no chance to recover. The timer was not stopping so we moved on to the business side of the talk.

I later googled this and found it happens when you scroll off the screen and the javascript does not know if you are still scrolling or not. The fix for this is to click outside of the map and then back in. However, when my screen resized down from retina display to video projector resolution I had nothing else on the page to click - so I was just stuck clicking around and nothing working. 

Despite the demo fail, the business side still managed to impress the judges with their research and quickly gained knowledge of the tourism industry. We placed 3rd! Ollie also appreciated the walk when some of the team hit the streets to interview tourists nearby at the Boston tea party museum. Ultimately, I had a really great time doing what I love to do, building software!

A big thanks to my hardworking team and of course the volunteers/organizers at the startup weekend. 

I'd highly recommend a Startup Weekend for anyone interesting in startups. It was definitely fun, fast and best of all - inspiring!

If you would like to see the app, click here to see