The Problem

If you read this posting, you know already that I am an active paramotor pilot, flying constantly with a group of friends. Flying with others is great but, from time to time, it is common to have somebody “lost” from the group, reason why I’ve always looked for an app that could share our locations while flying.

Although some developers (Apple and Google, for example) have apps like Find Friends, usually, these applications requires permissions from users and their geolocation updates are every minute or so, something that is not feasible to have when you are flying with a bunch of people who like to keep their privacy after our trips.

Time to learn a new programming language and develop my own solution 🙂

The Process

Having a personal project is a nice way to force yourself to learn new things, be “the persona” for the assignment, and get the pressure of being in charge of planning, designing, developing, testing and support tasks.

With a few vacation days plus a bunch of late nights, I have decided to learn NativeScript, a (relatively) new development kit based on Javascript, a programming language I have used in my past while creating Kwik.

Learning a new tool is a good way to get frustrated (learning takes time, things don’t work as you expected/imagined, etc), re-design all the time (some things you cannot code yourself) and get mad trying to find and fix bugs. However, it is really nice to celebrate when you have a “new baby” running on your phone (even better when you see it in OTHER people’s devices).

Ok, let’s talk about the process! Due to my own lack of skills as a learner, plus the NativeScript limitations (always read a lot about the tool of your choice), I planned a minimum set of features:

  1. I did not want to spend much time controlling userids and password;
  2. I needed a solution to show several people in real-time on a map;
  3. It was mandatory to show a map and have the ability to capture/draw pilots locations.

In order to handle items 1 and 2 above, I’ve decided to give a chance to Google’s Firebase (man, this is amazing). For the map solution, I’ve opted for the Mapbox provider, as it is implemented as a native map inside the app (Google’s Map renders inside a browser).

My first drawings and mockups:

As you can see, I have tried several variations until I get to the final design below. Changes need to be made, like I said above, due to usability tests, lack of skills to do a few things, plus some limitations with NativeScript.

The Solution

After a few weeks, the app was completed (at least version 1.0) and available at both Apple’s AppStore and Google’s Play Store, under the name PPG Finder. Below, the final screenshots:

Users log with their Facebook accounts (so, no need for managing passwords, etc) and the app captures their name, unique identification, and picture.

Users can pick the color of their gliders, enter their nicknames and select how the app will measure distance, speed, and altitude.

The dashboard shows how they are flying (speed, distance, altitude, etc), how far are they to the origin point (so, nobody gets lost after flying far) but, the most important thing (the colored icons on the map), they can see their friends around. Click the bottom bar (showing 2 pilots flying around) to get details about them.

See how far, fast and high pilots around you are flying.

What have I learned?

Like I mentioned above, besides get familiar with a new programming language and having an app developed, as a designer, the main learning was to:

  • Constantly adapt to a non-planned situation (very common in the “real world”: we design something, developer deliver other things because it was not possible to code exactly as designed);
  • Be the user, hear the user. When you use what you build, it is much simpler to find areas of improvements and fix things;
  • Find solutions! Related to the two comments above, a personal project is an opportunity to find solutions to other challenges you may have, without the pressure of time. It is under your control after all;
  • Setting a deadline is the best way to verify if you achieved your goals in the right timeframe.

Pick a personal project and try to do something related to design (could be a website redesign, a new feature, whatever). Besides being a great exercise, it is also very fun!