Kelvin Macartney | Software Engineering Intern
This hackathon didn’t start in much the same way that typical hackathons do. Instead of being in an office teeming with excitement and nerve for the 48-hour challenge ahead, I was in my room and on my desk at 9am. We had our opening meeting, discussed our idea more thoroughly, and assigned roles to each of the participants. My role was to create a backend service to fulfill the sending of personalized emails to users. My team uses Scala (a functional language) for their development, and it’s also the language I will be using during my internship, so it was natural that we all agreed to use Scala for the event.
In the handful of hackathons I have participated in, I have been fortunate enough to have experience in writing the APIs and backend services. However, this time around it was different. Since I started programming, I have used the Object-Oriented paradigm: it is based on the concept of objects and involves passing them (as states) to different methods which may modify this state and return a value. Functional paradigm, however, emphasizes the evaluation of functions and does not modify states. We pass computations (aka functions) to other functions that return a computation or a result without having any side effects (modifying any internal or external state). It’s a hugely different way of thinking about the approach of programming problems, and as I was and still am learning this new way of thinking, this was certainly a scary journey ahead, but I was excited about the challenge!
Our idea was simple, we wanted to reduce the amount of time that users needed to spend searching for their ideal holiday. We found that users spend 10s of hours browsing different search platforms, reading reviews, getting feedback from family and friends, and finding the right combination of flights, hotels and activities for their needs. From experience, we felt that this led to information overload for our users and would eventually give up or book a holiday that was not right for them. Our solution involved collecting some data about how a user used our website. We were interested in data such as the properties, flights, destinations viewed and more. On some interval (hourly, daily or weekly) we would aggregate some of this data and used a recommender algorithm to find recommendations for the users. More specifically the recommender algorithm needed to find a packaged holiday (which included flights and a hotel at the very least) for each user. This reduced the amount of ‘searching’ a user needed to do because all they needed to do was select a single package that included everything.
I will refrain from going into too much technical detail in this section. The first day was challenging but rewarding. I spent half the day searching for a library that did not conflict with any of the nearly hundred other libraries already being used by the template project. At around 1-2pm, I found a library that ‘worked’ and wrote a test script that successfully sent an email to myself. I spent the other half writing an interface to abstract away from the specifics, such that all a user needed to do was to pass a string (a sequence of characters) to the interface and it handled the rest of the nitty gritty details. The following day was spent re-learning Bootstrap (HTML/CSS library) and making an appealing UI for the emails sent. I then wired it up to inject the content received from the user of the interface, added some more edge cases to the unit test spec and did my final push to git.
In the end, we did not make it through to the next stage, though I must fault it for our presentation. While the intent was to send emails/notifications much later after we had collected enough data and processed it accordingly, we decided to send the notifications after each search query for the sake of demoing, and we believe the judges did not see the difference between our service and normal search service. Although we didn’t win, I certainly did learn more in the 2 days of the hackathon than I did in the weeks before. This was mostly due to the short feedback loop and making something from scratch plays a big part too since you tend to explore more tools and techniques. It was also a great opportunity to spend time with my manager as he was also taking place.
Join our Early Careers Talent Community
We’re looking for outstanding talent to join us on our purpose to bring the world within reach. By joining our talent community, you’ll have exclusive access to our latest opportunities, events, interview advice, and global insights from our Expedia Group leaders. Sign up now!