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

Monday, October 08, 2012

Support a charity or local cause with your 'data exhaust'.

The NYT has an interesting article about a startup that is turning your 'data exhaust' into money that you can use for charity. The company is called Enliken - they collect anonymized web statistics on your behalf and let you decide where the money from this goes.

It is a really neat idea to allow users to decide what to do with and how to profit from their data.  Rather than fight the data collection (which is going to happen in some form or another), it seems much smarter to consciously allow it to be collected in a safe way and then direct the profits towards causes you feel are deserving.

If you would like to start earning money for a local cause or charity, check them out!

Wednesday, June 06, 2012

Qantas joke applied to bug reports

Far too often, I see bug reports or issues opened without enough information to solve the problem. It always reminds me of this old Qantas joke about pilot and engineer exchanges around problems with air craft. It always pays to think about bug reports from the reader as well as the author's point of view. When you are filling out the report, the bug seems as plain as day. You can see it right there in front of you and apart from pointing, you probably don't see the value in writing anything. However, the problem with this, is that the engineer is not sitting there with you and so will only have what you write to reproduce the problem.
  • Pilots: Left inside main tire almost needs replacement.
    Engineers: Almost replaced left inside main tire.
  • Pilots: Something loose in cockpit.
    Engineers: Something tightened in cockpit.
  • Pilots: Dead bugs on windshield.
    Engineers: Live bugs on back-order.
  • Pilots: Autopilot in altitude-hold mode produces a 200 feet per minute descent.
    Engineers: Cannot reproduce problem on ground.
  • Pilots: Evidence of leak on right main landing gear.
    Engineers: Evidence removed.
  • Pilots: Friction locks cause throttle levers to stick.
    Engineers: That's what they're for.
  • Pilots: Suspected crack in windshield.
    Engineers: Suspect you're right.
In these exchanges, you can see how both the pilot and engineers are 100% correct but are clearly missing each other.
When you write a bug report, please take the time to see if you can give clear steps to reproduce the problem. If you can back out of the screen or page you are on, and see if you can follow the steps to see the problem (screenshots can really help here also), this is even better.
If an engineer has taken the time to write software, they want people to use it and hate if it has bugs. I really like users that want to complain - they are the best type of users because they care and want the software to work.
If you take this extra time to explain and show the steps to reproduce the problem, it really helps the engineer who gets assigned the problem. Also, if the bug cannot be reproduced, there is no way an engineer can fix the problem. At best, you will get a polite response that will sound a lot like one of these Qantas jokes.