At Garmin I worked on the Consumer Automotive Map Engineering and Cartography team, helping to test and improve map routing algorithms.
I coded primarily in C++ as well as C#, SQL, and Python. The projects I worked on are used in all of Garmin's
GPS devices, from watches to car GPS systems to bicycle products. I excelled at my job and learned a ton about real-world coding, working with a
team, and communicating ideas effectivley. Some of my more noteable projects are highlighted below.
Round trip routing is when a user starts a route that goes somewhere and comes back to the starting location.
I implemented new method of round-trip routing, allowing users to calculate a round-trip back to their starting location while already
on the move, factoring in desired distance/time and avoiding re-using the starting route. This feature is incredibly useful for runners and bikers
who want to go on a run/ride, but want to try a new route they have not been on before. On the fly calculation gives the user a new route back to
their start location that stays away from the route they came out on, giving a new, interesting route.
To test my new round trip routes, I added functionality to our testing software to test the quality of round trip routes. The grader observes the
desired distance, time, and direction of the round trip routes, and compares the inputs to routes generated by our round trip algorithm.
Guidance is the specific direction that the GPS system gives the user at each node or intersection on a route, for example "turn left",
"continue straight", or "merge right". I developed an internal graphical interface to inspect individual routes pulled from our databases. With my tool,
our engineers can select specific parts of a route to check if the guidance is correct.
Regression testing is when one takes two set of routes and compares them, looking for differences between the routes. I added the functionality
to test the guidances of routes against each other. This is useful for checking if changes to our routing algorithm affect the guidance of our routes, by
comparing the routes before and after the changes.
I Created a protractor tool to use on our internal maps. The user selects point 1, vertex, and point 2, and the tool live updates the angle as point 2 is adjusted with the cursor. The angle is adjusted for the curve of the earth, i.e. projecting a 3D globe onto a 2D surface, ensuring the angle will be accurate to the surface of the Earth even at high latitudes.
I also coded a solution to store route popularity data more efficiently, reducing global map storage size by 1.5%. This involved creating a key value pair for each block of data to ensure duplicates were not entered into the database.