After completely missing Startup Weekend Las Vegas #4 in January (first Vegas one I haven’t attended in some fashion), I vowed to participate in #5. After some discussion of the various options, I decided to register as a participant along with my 12 year old son, LazyHusband developer Ethan Duggan. I decided to pitch my longstanding idea from Startup Weekend #2, the automated vanity plate decoder.
I had completely forgotten that I had written about the idea here until Terence Carroll reminded me. What I did remember is that I had already written the pitch. I went totally over the top with humor and felt like I had done a good job, not like the pitch I gave in #2. Ethan also pitched an idea that solves a problem he (and a lot of other students) face with online research for school projects/reports. After votes were in, the vanity plate decoder project (working name: 1AWSMLICPLTRDR) made the cut of the top 12 projects. Ethan decided to join my team, so now it was up to us to build out our skills. While we are both developers (he mobile and me back-end) we knew we needed other skills to round out the team. Quite a few people approached us and offered to join. First and most enthusiastic to the party was LB Corney, who recently relocated to Las Vegas from Detroit. Next up was Tharindu Abeygunawardana, a UNLV grad and as it turns out, all-around amazing developer. We also picked up an awesome designer who did most of the design and front-end work for the site, Ryan Allen. Finally, a guy I’ve seen around at various VegasTech events and chatted with a few times and really liked, Dan Worthington joined the team as our marketing & biz dev guy.
Since it was 10pm and past time for Ethan to go to bed, I promptly told the team we would see them at 9am sharp Saturday to get to work. This was certainly a risk as other teams were definitely going to work later, but it’s one of the limitations I have to work around right now. Since we were there to have fun (we of course wanted to win, but that was 2nd priority) I didn’t feel too bad about my decision. As it turned out, the venue closed at 1am so most teams didn’t get that much further. That plus the fact that we showed up at 9 and most teams rolled in around 11 meant that they had only gained an hour of work on us.
Our first order of business was to set some ground rules. I went over the discussion my previous team had at #swlv 2 around how to settle disputes. As a quick recap, the idea is that with little time to waste, lengthy discussions and debates are not worth it. So when we detect some disagreement, we set a short time limit (say 5-10 minutes) and discuss the issue. Each person who has a viewpoint shares it. At the end of the time, we take a vote and majority rules. At that point, the decision becomes the decision of the team and everyone supports it.
We then discussed the MVP we wanted to build. The original idea was a mobile app where you could take a photo of a license plate and the system would turn that into text, then try to decode the text into words. Two things quickly became apparent. It’s now illegal in the state of Nevada to use a cell phone while driving, and even if your passenger takes a photo, the resolution and size are too poor to actually decode. This was super useful, as it allowed us to quickly abandon that idea. We then riffed off of that idea and brainstormed other possibilities. We settled on a site where you could enter a seven character license plate (either one you had seen or one you made up) and it would post to your Facebook wall for your friends to guess. Sort of a Words With Friends for people with short attention spans
.
We then discussed naming. I’m pretty sure it was Dan who quickly came up with PL8TSEE. We realized we could drop the T and just be PL8SEE. Here’s where we had our first disagreement. One member was in favor of PL8SY (with a ‘y’ instead of ‘ee’). We set a 5 minute timer, discussed it, and then voted for PL8SEE. Turns out we needed pl8sy as well, for reasons I’ll explain later.
Dan got to designing the logo, while Ryan mocked up the site. Ethan started in on the mobile app, while Tharindu took on the task of building the Facebook integration. I took on the housekeeping activities of buying domains, setting up git repositories, and our Twitter handle. This sounds like a lot, but we were underway with coding by around 10am.
We took the time to chat with several of the mentors, including giving a pitch later in the day to ABC’s Shark Tank investor Kevin Harrington and a friend of his whose name I didn’t catch. Ryan pretty quickly came up with a license plate mounted on a car bumper image and Dan came up with the logo.
We put up the site, then quickly discovered that it wouldn’t render properly on both mobile devices and desktop/laptops. We spent a bit of time figuring this one out. Meanwhile, while no one was looking, Tharindu quietly said, “Hey, I have Facebook integration working. I can post a message to Facebook.” Wow! Things were looking really good at this point. Everything at this point was straight HTML and Javascript, with no need for any real backend services.
That feeling was short-lived, as a few minutes later Tharindu informed me that in order to post an image to Facebook, he needed it to be in URL format not just a client-side image array, which meant we would need to either send the screenshot from the user’s browser to the server or send the text entered by the user to the server, where we would have to create an image. After some research, I found html2canvas which is a Javascript library that allows you to take a screenshot completely browser side. There was also a short blog post which included a small server-side PHP library that would receive the POST from the user’s browser and save it to the server. We could then send that URL back to the client to send with the Facebook post. I went to install html2canvas and realized it needed Grunt to build. To use Grunt, I needed Node.js. I installed node, but couldn’t get grunt to build html2canvas. I asked around, and in true VegasTech spirit, Gabe Evans helped me out. Meanwhile, LB had been hammering on the automatic decoding functionality. We didn’t think it would make it into the final build, but since we decided to work on PL8SEE after the weekend, we will eventually incorporate his database work.
I showed off the screenshot capability, then we decided it was time to integrate Tharindu’s Facebook work with Ryan’s front end. I had configured a LAMP server earlier in the day, so the PHP module to create the screenshot URL was loaded there. I decided this was the best place to integrate everything, so I took Ryan’s front end and combined it with Tharindu’s work and built out PL8SEE. Where Absolutely. Nothing. Worked. Grr. By this time, it was pretty late and I made the judgment call to stop for the night, figuring that any bugs would be easier to spot after some sleep. The good news was that Ethan had finished up the mobile app, so we had that ready to submit to the Google Play store.
The next morning, we came in and got to work. My thoughts around quickly finding the bug were crushed, and despite Tharindu and my best effort, we couldn’t quite figure it out. Although 90% of our code was Javascript and cross-platform, I was running a LAMP stack and he was running on Microsoft Azure. So he couldn’t run PHP, and I couldn’t run his build. Argh. I then realized that it would be easier for Tharindu to write a C# .NET component to replicate the functionality of the PHP module. So he set off to do that while I built and submitted our mobile app. Dan worked a bit more, refining the product and hammering out some key issues, like revenue streams and target market. Ryan continued to tweak the site which really paid off — as we took 3rd place in the design category for the weekend. LB was improving the database of possible words and the algorithm for expanding plates into words, which will be a great feature to spark the game. And Ethan was working on version 2 of the mobile app. He added the ability to take a photo. We set a deadline of 1pm for Ryan to finish and then gave Tharindu an hour to incorporate Ryan’s changes. Tharindu finished up the image->URL converter, and set about to finalize the site. We targeted finishing 2 hours prior to the actual end of the contest to give us some breathing room and not stress us out too much.
We finished about 20 minutes past our deadline then spent the rest of the time polishing the final presentation. Dan kept researching stats to use to support our business model. Then we had a team discussion about what to incorporate in the final presentation. Ultimately, we settled on shooting for a fun angle across the board. We decided I would start out with a funny story to engage the audience then do a demo. Dan would take over and talk about the problem, solution, product, and revenue model. Then Ethan would do a quick demo of the mobile app he built. Finally Dan would bring it home. We then found a quiet room to practice, where David Williams gave us some last minute pointers. We then watched a scene from Gone in 60 Seconds to psych ourselves up. We were up third, so we went back to the presentation room.
We had prepped 4 vanity plates, one for each of the judges, plus a set to use during the presentation. Soon we took our places on stage and went through our presentation. I thought it went well, though in hindsight I don’t think we made it clear enough to the judges that we had built both a fully-working site with Facebook integration as well as a mobile app in the Google Play Store. Next up questions. We had a few questions, then my good friend Andy White asked, “So, this is a game. How do you win?” My reply was “It’s like life, Andy. It’s a journey. It’s not about winning.” This brought quite a bit of laughter from the crowd. A couple of questions later and it was all in the judges’ hands.
I felt like we had a decent chance at best design (where we did get 3rd) as well as one of the places, though the fact that we were a Facebook game was not as strong a business as some of the other ideas. Either way, we had fun that weekend, had almost zero disagreements, and didn’t stress ourselves out trying to cram in features. Finally the winners were announced (us not among them) and we talked about how to continue the project. Since we live virtually all over Las Vegas, we plan to work remotely and meet occasionally at The Beat Coffeehouse.
We intend to continue work on PL8SEE so watch out!