Emirates Travel Hackathon
I was supposed to post this at the beginning of the week, but now I have put it off until today and should post now before HackMIT is done. I originally planned on participating in three hacking competitions starting with HackMIT, but now it looks like I will only do two. Either way, I wanted to write about my experience at my last hackathon so that I can start to have some practice with blogging and so that I can write down everything I am doing at these events.
Since this was Emirates' Hackathon it is expected to be travel themed. We (team of 5) built a product (called 'TCKT', with a domain at tckt.es) that will allow you to input and keep track of your itinerary online and will match your itinerary to other's to offer suggestions of what you could do to fill in the gaps in your itinerary. This allows people who do not know the area they are traveling too well and would like tailored recommendations of what they could do while there.
There were a couple of things that we knew was a stretch but wanted to implement if we could. They are as follows: - Voting/ranking system for recommended events(to have a way of ordering the recommendations in big cities) - Eventbrite and Xola integration (Xola is only in SF but they were there offering a prize for using their api) - Tumblr integration for blogging about each event - Photo upload for events
We ran into a couple of problems along the way, most of them team based (large team of talented developers and little communication). Our biggest problem by far was the large team. We had five fairly talented Rails developers that were not good at managing each other. If someone was told to do something they would get it done much faster than expected and start working on something else. This led to a lot of overlapping work that could have been avoided with proper project tracking tools like pivotal (or taking the trello board seriously). Another big problem was communication, which kind of ties in with the first problem. We all came from the same camp, so we all know how to work together, and whenever one of us got stuck we would go to another teammate for help. this was great, but whenever one of us went to help out we would not always complete an older task. For example, I was building up the algorithm for finding recommendations but was called on to figure out how to figure out a way of getting around the google api problem (more on that next next) and I didn't get around to making the correct routes for recommendations until the next day while someone had already worked on it.
Working at Microsoft's had a unique challenge as we were banned from Google api calls. We're not sure if this was because many teams were using Google's apis or just because we were working from a Microsoft IP address (we were one of the first teams to start working and ran into the problem almost immediately). I was tasked with finding a solution and tried several things (even SSHing into one of the school servers at RIT in NY to try and call from a different IP address but they wouldn't let me install gems and loading them was not working correctly for some reason when loading manually worked on my local machine) before finding geocodefarm.com which allowed me to make manual POST requests to their site which I assume was just a proxy to Google maps api. Some tradeoffs were we wasted valuable time finding this solution, the reverse coordinate lookup function brought back inconsistent address formats, and there was a small limit of 100 requests per day so we had to switch accounts by the time presentations came around.
Mobile design is hard for a bunch of engineers that have never done it in any form of a production scenario. We had our two most willing CSS guys dedicated to the mobile design for almost the entire time of the event. They did some things of CSS and SCSS they were not proud of, but they managed to make a great looking site for phones which was key for our travel-themed project (we had no experience developing native mobile apps). We wanted photo uploads to work but only got them to partially. We were having trouble using paperclip and I ended up taking their demo app and dissecting/comparing/building their code against ours piece by piece until it worked. The fatal mistake I made was that I didn't test it on Heroku until hours before we were done and found that it worked locally because Paperclip was saving the photos locally in the project and not to AWS S3 like we thought, which was a problem because Heroku does not allow local storage like that and we did not have the time to fix it. We ended up with is a Rails app that only partially integrated the photo uploads. The site is also mobile responsive and works functionally with a few bugs (we got mvp). Because of our poor management skills over each other we did not get to reach a lot of our stretches. We ended up making it into the final 20 (out of 60) that did a second round of presentations up on stage to the entire crew at the event but we did not get any of the top three awards.
One of the teammates suggested we build a framework like rails-composer that sets a bunch of boiler plate code up to help us ship an mvp faster at future events. One of our teammates had never done user auth before and we decided to have him do it so that he could learn, but the consequence was he did not use something like devise, and did not roll his own encryption scheme either (don't use your real password when/if you sign up). It took a lot more time for him to get it right even though one of the other teammates could have done it quicker, but it was important that he learned something that was outside of his comfort zone. We also all unanimously agreed that with bigger groups we unfortunately need more overhead to be able to have maximum productivity whether we like it or not.
You can have a look at the site at tckt.es and the code is located at https://github.com/NathanielWroblewski/tickets if your interested in taking a closer look!
Keep checking back for updates on the next three hackathons as I compete at HackMIT, LincolnLabs Education Hackathon, and HackUpstate. These will all be with varying team sizes and from various locations.














