Touchdown Flight Tracker
Background
Canadian and the United States federal regulations require that pilots keep a record of all flights and flight times for training purposes, called a Pilot Training Record or personal logbook. Furthermore, Canadian regulations require a record of flights and flight times for each aircraft, called a Journey Log. On most private aircraft, all logbook information is recorded manually with a pen and paper and later transferred into the appropriate logbook. Transferring data from scribbles written in the cockpit to logbooks is a tedious process which is prone to errors.
Aviation has been part of my life since I was a young child. My father has flown small airplanes since before I was born and I grew up in this environment. At 17 I earned my private pilot license and I have been hooked on flying ever since. Recently my friend Nehal, who is also a private pilot, came across a problem. He realized that as a pilot it is difficult to accurately record the exact time that the aircraft takes off or lands, and many external factors affect the accuracy of the recorded takeoff time. Furthermore, he realized that when physically writing the time on a sheet of paper the pilot lost situational awareness of events happening outside of the aircraft. He attempted to solve these problems by creating automatic takeoff and landing detection software. Nehal created an iOS app and began to record his flights both on paper and digitally. After comparing the results, he found that the manual data recorded flights 2-4 minutes longer than the automatic system.
Goals
The goal of Touchdown is to reduce pilot workload and ensure takeoff and landing times are recorded accurately during every flight. A secondary goal is to provide flight tracking for aircraft not connected to air traffic control tracking systems.
As the backend developer on the project my goal is to create high-quality services which support the user-facing application. The main services provided by the backend infrastructure include: data storage for logbook purposes and real-time data retrieval for flight tracking.
As a product-minded team member my goal is to to enrich the cockpit experience by reducing stress and automating tasks, while minimizing frustration and maximizing usability of the product.
Tools and Technologies
- Python + Flask
- PostgreSQL
- SQLalchemy
- Firebase
- Git & GitHub
- Docker
Solution and Process
The initial server prototype was created entirely with Flask and Python, the software was simple in implementation since Nehal and I wanted to test practicality and usefulness of such a system. The initial design stored all flight data in objects and arrays since this was a quick and dirty prototype. The prototype worked as expected and data collected by the phone turned out to be quite useful in real-time flight tracking and post-flight debriefs. However, I quickly realized the drawbacks of keeping all data in objects within the Python runtime such as inability to run multiple threads and inefficient use of available computing resources, specifically RAM. A better data storage solution was needed.
From my experience at The Weather Network I knew of PostGIS and PostgreSQL, technologies which can efficiently store and process large amounts of geospatial data. Other Database Management Systems were examined; However, PostGIS was considered the best solution because of the large amounts of geospatial data and processing that we required.
Recently another friend Colin joined the project to help improve our system and software; he has over two years' experience working in the software industry and was able to share insight about techniques and processes. With his help I have been refining the server code to increase readability and maintainability, while also learning best practices in terms of Git workflow, writing maintainable code and creating test cases.
From a product perspective I have interviewed prospective users and taken detailed notes on their needs and desires as related to the service that we plan on offering through Touchdown. I have applied this feedback during the planning phase of features and functionality to be implemented for release. I am also collecting a list of features that beta testers and the design team consider possibly useful for consideration during future feature planning.
Reflections
Although the Touchdown project is far from over I have learned a few key things from working closely with an experienced software development team. First and foremost is that designing software is a much more involved process than programming, writing good software involves team communication, coordination and creating processes for ensuring deliverables are completed on time and within specifications. Without these structures in place a team of programmers will not produce great work.
Another important skill that I improved through working with skilled software engineers is a deeper appreciation for development workflows, specifically how to utilize git and GitHub to their maximum capacity. Although I have previously used these tools I had been doing so from the eyes of a programmer, applying processes gave me further insight into the power of Git and GitHub.
We are excited to release this product to the aviation wold. If you would like more details check out the project website at touchdownapp.ca{:target="_blank"}.