Hole 19

Intro

Hole 19 is a free Golf centric application that acts as real caddie. It provides accurate GPS distances and scoring while on the golf field, powered by custom aerial views and a custom mapping technology.

I joined Hole 19 to kickstart the development of the Android application and help deliver a well crafted MVP on the platform. The application had seen an initial launch about a year prior on iOS, and was already a raging success in the golf world. I lead a small team of 3-4 engineers. Starting on the shoulders of the iOS application, together we went in a challenging deliverable with the advantage of having a very well defined set of requirements to begin with.

As to what motivated me - I myself I'm not a golfer. What enticed me most about Hole 19 was that it catered to an audience that cared deeply for well crafted applications and I liked the challenge to develop for that high bar. Golf is a fascinating ecosystem, and the team that the CEO had carefully built around the product had some of the most interesting and talented people I had the chance to work with.

My work

Seeing that this a project built from scratch, I've worked on pretty much every part of the application to some extent - either directly developing features, helping define the overall app architecture and provide direction and context around Android-specific components and design requirements to other team members.

One of the key features of the application is aerial map view of the golf courses. This being a custom map entirely powered by in-house data and technology, I personally built the first versions of this screen Android. It uses the device's location in the field, and accurately displays the user location in relation to the hole being played. This custom map has a draggable target that can be moved to help plan the play from a top-down perspective, while the map itself retains expected UX features such as zooming and panning as would be expected - all of which had to be custom built.

From a technical perspective the interesting components of this work was dealing with mathematical projections to accurately position the user on this custom map. The work also required us to dig much deeper than most applications into accurate location capturing - a game of golf can last several hours and as such a custom implementation was made to achieve a good balance of battery consumption without sacrificing accuracy of positioning. One of the ways this was achieved was by being opportunistic about when to pool for location, in a manner that is aware of the user's likelyhood to use the app at a given point during the session.

Scorecard

Another of the app's strength is its unique scorecard capability, that allows for easy tracking of game score. This data is later consolidated and used to present various relevant charts regarding game performance. This is also a fully designed custom view, with the interesting feature that this scorecard would show-up during a game session simply by rotating the phone into landscape.

The Smartwatch apps

Embracing Android Wear allowed me and the design team to build something unique and new, which resulted in a back and forth exploration of how to better support this experience in circular screens, and explore several ways to offer a delightful navigation on a new form factor.

One of the most interesting pieces that I had the pleasure to have worked at Hole 19 was on the creation of the Android Wear application from scratch. At the time Android Wear was just coming out to consumers, which meant that from a technical perspective there were a lot of opportunities for exploration and innovation on this new form factor, and as a business Hole 19 was particularly well positioned to flourish on this new medium its users benefit greatly from the portability and usability that comes from using a watch on the field while you play.

I've worked closely with the team's designed on this project and, on occasion, was in direct communication with Google's Wear team for better understanding the capabilities of the system and possible ways of integration. We opted for a standalone Android Wear application, that communicates with the phone installed app - as opposed to using the more barebones Notifications API to achieve Android Wear a quick but limited watch integration integration. This approach  add several advantages, and was ultimately necessary to really achieve the level of detail and usability we intended to create. As a standalone application, the Wear app could be used to record the user's score on the golf field independently from the phone app. If connection with the phone had been lost, which would often happens since users would leave their phone on the cart for example, the wear app locally store the data and later synced back that information once connection was re-established. In effect, these are 2 separate applications, that communicate via a custom designed bridge that defined the contracts of the comms. Some of of the logic was shared between these 2 application by leveraging a modular design approach.This communication bridge, which far exceeded Google's built-in capabilities for app-sync, had its foundational layers built in a framework agnostic manner - which allowed it to be used for Hole 19's Android app to also communicate with Samsung Gear devices. Samsung Gear were not Android Wear devices at the time, and were running an entirely different OS and framework, which were part of the company strategy for being on all wereable platforms.