Tuesday, January 26, 2021

Can my logbook change without me doing anything?

The short answer is "yes."  Should you be concerned?  Well, obviously the only person who can answer that is you, but I think the answer is "no" and this post will go into excruciating detail about the ways in which your logbook can change without your action, and you will at least understand my perspective for why you shouldn't be concerned.

There are three ways your logbook can change without you doing anything.  A MyFlightbook admin can make a change; this is actually the only way that you logbook can be directly affected without any interaction on your part.  The second way is that an instructor can sign flights, revoke a signature, issue an endorsement, or add flights.  The other is that your logbook can be indirectly changed through a change to crowd-sourced data upon which it relies.

Allow me to address each of these scenarios. 

Site Admin Changes

Site admins can do anything to your logbook because they can emulate your account.  (There are other admins with lesser privileges too, who do not have this ability).  Why such great power?  Customer support, primarily: I can't track down an issue if I can't see what you see.  

This is, of course completely standard industry practice: when you call Amazon or Expedia or your bank, they can get into your account to some degree or another for precisely these reasons; they wouldn't be able to fix the quantity on your purchase, fix your reservation, or explain a credit card charge if they didn't have these tools.  These are trusted employees, and (particularly where money is involved!) the tools have audit trails so they can't do anything nefarious without getting caught.  And the system works.

I am one of two site admins, and I do pretty much all of the admin work.  I would estimate that more than 95% of the time that I emulate an account, I make no changes at all - I'm trying to track down a bug report, or explain why something is happening, or I need to see some data "in context" to inform a development decision and so forth.

But there are a (very) few scenarios where I will make a change to your logbook.

The most common reason - by far - is fixing aircraft.  I have a very specific way to do anonymous aircraft and sims/training devices to avoid conflicts with registered aircraft, but people will often create aircraft with tail numbers like "BE23" for an anonymous Beech 23 (which could conflict with a Chinese aircraft, which begin with "B") or "FTD" for a sim ("F" is the prefix for French aircraft).  No big deal, it's just a naming thing, and with the press of a button I can map your flights in the misnamed aircraft to the correctly named one and thus keep the set of aircraft clean.

Another area is images.  Data admins (data admins are a distinct set of admins, with more limited capabilities than site admins; all site admins are data admins, but not all data admins are site admins - think of them as Wikipedia editors) have the ability to review images for flights and/or aircraft, and remove any deemed inappropriate.  E.g., if it's porn, if there's a copyright complaint, etc.  Been months (maybe years?) since I last deleted such an image, but I will do it periodically.

There is only one other - rare - scenario where I will modify a flight of yours, that I can think of: signed Flights can sometimes be marked as having a valid signature when they are no longer in sync with what was signed, or vice-versa.  I periodically review these flights and set the state correctly.

That's really it for what ever might happen directly to your logbook without your participation.

Instructor changes

You can have an instructor sign a flight ad-hoc, but this requires that you be face-to-face with the instructor, so I don't think that counts as "without you doing anything".
But if you set up a student/instructor relationship with an instructor, you may grant them certain permission to make changes that they can exercise unless/until you revoke those permissions.

Specifically, an instructor can:
  • Issue new endorsements.  No specific permission is required - if they're your instructor, they can do this.  They cannot delete or edit endorsements.
  • Sign flights that you have requested that they sign.
  • If you've granted the instructor permission to view your logbook, they can also sign any unsigned flight they encounter (or re-sign any flight that they had originally signed but which has been modified), even if you did not request that signature.
  • If you've granted the instructor permission to add flights to your logbook, then they can, umm, add flights to your logbook.  They can also revoke signatures from flights that they have signed (e.g., if they mistakenly signed the wrong flight).

Crowd-sourcing Changes

Perhaps of more interest is the indirect stuff.  When you log a flight in N12345, your flight entry doesn't know anything about N12345 - it's just a reference to an aircraft somewhere else in the database.  And that aircraft, in turn, references a model definition that is in yet another location in the database.  So attributes like "it's a Boeing 737" or "it has a glass cockpit" are not stored in your flight.  See here for considerably more detail about how this all works, but the important thing is that the data about aircraft and models comes from the MyFlightbook user community - and can be edited by the MyFlightbook community as well.

The key point is that if the model of an aircraft that you fly changes, or if the definition of a model used by one of your aircraft changes, then your totals and/or your currency could potentially change.  Yikes!

Or is "yikes" an overreaction?

If you (or someone else) changes an aircraft or a model and you (or they) are the only person with any logbook references to that aircraft/model, then by definition there is no problem: the change made affects the person making the change and nobody else, thus all is good.

On the other hand, if the change is to an aircraft or model that is used by pilots other than the one making the change, then obviously that could be an issue.

In this scenario, an email goes out both to any data admins on the site as well as to any pilot potentially affected by the change.  The purpose of this is twofold: (a) the data admins will review the change.  That's non-negotiable.  But - often more importantly - (b) the affected pilots can see if there's any problem with the change, and they will contact the data admins if there is.  The affected pilots, kinda by definition, actually fly these aircraft and as a result know them better than any admin could.

The vast, vast, vast majority of these changes fall into one of two categories.  The details are described here, but the gist is that most edits are either:

  • A "minor" change that actually improves the accuracy of the data.  E.g., specifying that a "C-172" is actually a "C-172 P".  Either way, it's still a C-172, and your totals/currency/etc. don't change.
  • A more significant change, which ends up resulting in the aircraft being cloned.  Two common examples here are a tail number re-assignment (N12345 was a C-172 but is now a B-737) or an aircraft that is on wheels part of the year and floats on part of the year being edited to indicate the opposite undercarriage.  In this case, your logbook still doesn't change: the clone is detected automatically, and your logbook preserves a reference to the original, not the clone.  (You still get an email, in case the clone is either more accurate for you, or in case you want both versions.)

There are the occasional edits that are in error, or otherwise require reverting.  These are very rare (a few a month, perhaps) and typically corrected within hours of occurring. That's really the primary risk here.  But it is always (a) reviewed by a data admin, so it is (b) fixed promptly.

And the benefits of the two non-erroneous edit examples above vastly outweigh the downside of the rare and short-lived erroneous data.  (And, of course, rare-and-short-lived-erroneous-data happens all the time with curated data, not just crowd-sourced).

As I write this, MyFlightbook has 6-figures of users (wow!) and 8-figures of flights in the database, and has been around for 15 years.  And the examples of this leading to problems of inaccurate computations for things like totals/currency has been...basically nil.

There's one other set of data in MyFlightbook that allows for crowd-sourcing: airports.

Airports in MyFlightbook are a bit of an odd-duck: they're in the database, but they're not "connected" to your logbook in any meaningful way.  You can add airports to your flight that aren't in the airport database and it is no problem.  I keep old airport codes around as long as I can - after all, if you flew to KOLD years ago and it's now KNEW, then KOLD should continue to work.

At a high level, I use airports for 3 purposes:

  • Mapping your flight
  • Showing where you've been
  • In ratings progress, determining if you've met cross-country distance requirements

So if you have a flight that references XYZ and XYZ isn't in the database or refers to something other than what you thought it referred to ("LCL" being a great example - people use that for local flights, but it's an airport in Cuba), then the worst downsides are that your map looks wrong, there's in error computing where you've been, or MyFlightbook thinks you have or haven't met a rating requirement. But none of those are "material" - your logbook still accurately has the record of the flights you've taken and where you visited, as you recorded it.

Most of my airport data (currently over 58,000 airports, heliports, and seaports) comes from various (free) data sources, including the FAA.  Airports entered into the system are considered "native", and cannot be overwritten or deleted by anybody - not even an admin.  Well, OK, I suppose as site developer, I can go directly into the database and delete something...but I just don't do that because direct database access is juggling with very sharp running chainsaws; the point is, there's no tool to do this.

MyFlightbook users can add their own airports (currently over 2,500!).  This is a great addition to the system, with all of the aforementioned benefits of crowdsourcing.  These airports CAN be deleted by either the user who created them, or by a data admin (if they review and decide it's inappropriate for one reason or another), but not by other users.

There are a few changes that can occur in the airport database:

  • By far, the most common is that a new airport is added.  Note that if KOLD becomes KNEW, then I don't change the KOLD entry in the airport database, I add KNEW alongside it so that either code works for the airport.  I'll probably designate KNEW as "preferred", but KOLD will continue to work.
  • If a user enters an airport that looks like its in the same location as an existing airport, and it appears to be an "official" code for the airport (typically ICAO, IATA, or FAA), then I'll "absorb" it into the system, making it native.  Then it can't be deleted.
  • If a code assigned to one airport is assigned by an official organization (ICAO, IATA, FAA) to a new airport, then I'll overwrite the existing name/location for the code with the new name/location.  This is the scenario where KOLD used to be in California but is now an airport in Florida.  
  • I have a tool that looks for user-created airports that are duplicates of existing airports (e.g., with existing FAA or ICAO or IATA codes).  The idea is to try to find where someone made up a code for an airport but that didn't need to do so.  In this tool, I usually simply coalesce the airports and mark the official one as "preferred", but I can also decide to delete the (presumably) made-up airport code, especially if I'm worried about a potential conflict.  If I do this, then the "Route" field of the creating-user's flights containing that code is updated to reflect the remaining airport.  I've only rarely deleted airports in this manner, and because this maps to a more current code, it should map correctly and compute distances correctly. [Update Jan 26: I'm removing the piece of this code that updates the route for user flights].

With the exception of the last scenario, no flights for any users are changed.  The only change that you would notice is in the third scenario: if you have a flight with KOLD in the route, then it will map using the new location rather than the previous location.  Of course, that's what it would do in ForeFlight, Garmin, or any other mapping app, as you'd expect.  

I think it's more accurate to say that changes in the airport database don't change your logbook, but they can change the map or analysis of your logbook.

And that's about it.  Personally, I think the tradeoffs - the benefits of lots of eyes keeping the data accurate and up to date - vastly outweigh the rare and ephemeral errors.

Hopefully this explains what can - and cannot - be affected by MyFlightbook's crowd-sourcing.

Sunday, January 10, 2021

Models - In Depth and Best Practices

Aircraft and models on MyFlightbook are crowd-sourced and shared amongst its users.  This has a huge benefit for the comprehensiveness of the data and - with a bit of curation - with the accuracy of the data as well.  The ability for any registered user on the system to make changes here is a powerful tool.  Any powerful tool, however, carries risk if used incorrectly.  In this post, I'll talk about how the models part of system works, how it is properly used, and how the risk is managed.  (Spoiler alert: in practice, the system works well and so the risk is negligible.)

The difference between an aircraft and a model on MyFlightbook

The important thing to understand on MyFlightbook is that a "model" encapsulates a set of attributes that are common across a set of multiple airframes.  This includes attributes like the category/class of the aircraft, whether it is turbine or piston, high-performance, has retractable gear, and so forth. For more detailed information, please read my previous post.
So, for example, there is one "Cessna C-172 R" in the system, but there are (as of this writing) nearly 1,600 distinct aircraft in the system that are tied to the "Cessna C-172 R" model.  It is the "Cessna C-172 R" model that captures the fact that it is an airplane, single-engine/land ("ASEL"), piston, not high-performance, not tailwheel, ICAO code "C172", marketing name "Skyhawk", and so forth.

Data points that vary from airframe-to-airframe are stored on that aircraft's record in the database.  The tail number (registration) is the most obvious such piece of data, but there are private notes (notes only you can see), shared notes (visible to anyone who flies that aircraft), maintenance records, glass/TAA upgrades, and other data.

It's worth briefly pointing out two special cases within this model.  The first is that not all aircraft in the system are flying machines - some are training devices/sims.  While there are some special rules around these, you use them in your account the same way you would use any other aircraft, it's just that instead of being a flying machine it's an ATD or an FTD or an FFS.  In fact, some models of aircraft (such as anything created by Frasca or Redbird) are flagged as "Sim only", so the system knows not to let you create registered aircraft with that model.  See here for more information about simulators/training devices.

The other special case is that of an "anonymous" aircraft.  An anonymous aircraft is just like any other aircraft, except that it has no specific tail number.  Internally, it has a pseudo-tailnumber that is the hash mark (#) followed by a series of digits that represent the model.  For example, the anonymous C-172R is "#000099". That tail number is used for unambiguous identification of an aircraft when importing/exporting, but in general the system will show the underlying model name ("Anonymous C-172R") rather than the #000099 tail number.  Because that's a single number for an anonymous instance of a given model, anonymous aircraft are necessarily shared amongst pilots.

Relationship between Aircraft and Models

A key attribute of how shared aircraft/models work is to understand that these relationships are all computed in real-time.  That is, an aircraft in the database does not have any information about its associated model, it only has a reference to the model.  In turn, the model holds a reference to the manufacturer and even to the category/class.

So when you see "N12345 - Cessna C-172 (ASEL)" in your account, that is all being assembled in real time: I look up "N12345" in the database and find the ID of a model.  I then look up that model and find that it has model name of "C-172", an ID of a manufacturer and an ID of a category/class.  I then look up the manufacturer that has that ID and find that the manufacturer is named "Cessna" and I look up the category/class by its ID and discover that it is "ASEL".  

Because none of this data is stored directly in the aircraft, all changes happen immediately to all related aircraft.  For example, if you were to edit the C-172 model to be a helicopter rather than ASEL, then instantly not only would N12345 become a helicopter, but ALL aircraft in the system that are linked to that model would also become helicopters.  Any subsequent totals computation or currency computation involving any aircraft tied to that model would suddenly now have helicopter time and helicopter currency.

That can be risky, but in practice it works just fine.  First and foremost, there's an honor system involved that people don't make random edits like changing a C-172 to be helicopter.  For 14 years and counting, this has worked extraordinarily well.  But as a backup ANY edit to a model results in an email being sent to the site admins, which details the specific change, and that can be reviewed and modified (or reversed) by the admin.  As it turns out, the vast majority of edits to models are minor things like indicating high-performance, or editing the name to be consistent with other similar models.

Admins also review any newly created models in the system for errors, consistency, and redundancy; if a new model is redundant with another existing model, then the two will typically be coalesced.  No notification is generated when that occurs.

Editing aircraft works in the same way, but obviously the scope of the impact is limited to pilots in that specific aircraft, and there are a few other rules involved (see this post about aircraft edits).  In this case, email about the changes is sent not only to the admins for review, but to other pilots who fly that aircraft as well.  This ensures that all changes are reviewed, and that errors are quickly caught and fixed.

Best Practices and Conventions

Please try to follow these guidelines when editing models:

  • If a specific aircraft is wrong (e.g., is the wrong model), then edit the aircraft, not the model.
  • Only edit a model if the definition of the model itself is wrong and thus if all aircraft associated with that model need to be corrected.  E.g., if you see a Boeing 737 listed as piston, then you should edit it.
  • Please do a search for existing models before creating or editing a model; there's a good chance that the model you want is already in the system.  When you create a model, the system will also check to see if it looks like you're creating a duplicate and will show you existing models that look like matches.  While it's best to re-use an existing model, you can proceed if it truly isn't a match.
  • The FAA (and other authorities) have a particular level of granularity for models; ICAO uses another.  Since MyFlightbook launched in 2006, it's been pretty clear that the community prefers more granularity/precision to less.  So you'll see many model designations on MyFlightbook that might map to the same designation within these registries.  That's OK and a good thing.  There's no problem with having more fine-grained distinctions based on upgrade packages, aircraft vintage (e.g., when one manufacturer gets sold to another), and so forth.  As a simple example, there are enough G1000-equipped C-172S’s out there that it’s got its own model designation in the system, even though it’s simply a C-172S.
  • Glass and TAA are one area where things are often confused, since these can be part of the base design (All Boeing 787's that have ever been made are glass/TAA), a factory option (even if everybody orders glass as a practical matter), or an upgrade to a specific airframe.  In general, the model should indicate glass/TAA only if it is part of the base design.  If it's a factory option, it should either be indicated on the airframe, or alternatively it's OK to create a new model that is explicitly a glass-only variant.  For example, there are so many G-1000 equipped C-172S's that there is both a "C-172S" in the system that is not marked as glass (so you'd indicate glass on the specific airframe if it is glass), but there is also a "C-172S G-1000" model in the system that is all glass.

An admin will review EVERY new model and EVERY edit to a model in order to check for redundancy and consistency.  Generally, this requires some triangulation between multiple sources.  Not only that, but I often have more granularity than any one of the sources. If two variations look identical, I’ll merge them, but otherwise I will allow it.  I do, however, try to enforce some consistency.

Here are some of the conventions I try to follow.  Some are a bit more ambiguous than others.

The “Model” field is probably the least well defined.  I tend to use a combination of:
  • The FAA registry page or comparable non-US websites.  Note that this is not always super precise (sometimes listing a C-150 as a “150” instead of, say, a “C-150M”) and if registrations have been reassigned the old one assignment might not be present.  But it will generally distinguish, say, a C-172S from a C-172P.
  • Wikipedia
  • MyFlightbook user community.  In particular, this helps with 4 specific conventions:
    • Hyphenation conventions.
    • Distinguishing float vs. wheel versions of an aircraft: generally you would name a C-172 on floats “C-172 (Float)” to highlight the distinction from its wheeled counterpart. (See here for more on floats/amphibs).
    • Distinguishing sim-only versions of an aircraft.  E.g., a Flight Safety 737 would typically be “B-737 (SIM)” so that nobody thinks they can create a real flying 737 using that model.
    • Where models can have conversions that make them high-performance or give them a constant-speed prop, we’ll generally add “(FP)” for “Fixed Prop”, “(CSP)” for “Constant Speed Prop” or “(HP)” for “High Performance next to the model name.  E.g., “C-172 M/180HP (CSP)” for the superhawk variant of the 172 M that has a constant speed prop and a 180HP engine.
Note that because of the desire for high-precision, sometimes the model in MyFlightbook will deviate from the "nameplate" model.  An example here is the PA24.  Piper made multiple PA24 models; the plain "PA-24" had a 180hp engine, while subsequent variants with more powerful engines included the horsepower after the model - e.g., "PA-24-250" with a 250hp engine, or the "PA-24-260" with a 260hp engine, and so forth.  But the 180hp engine was simply "PA-24" on the nameplate; there technically was never a "PA-24-180".  On MyFlightbook, though, there is both a "PA-24" and a "PA-24-180".  This is because the former could mean "It was a PA-24 with 180hp", or it could mean "It was a Piper PA-24, but I don't remember which variant it was."  So the latter allows you to very clearly indicate the 180hp meaning.

The ICAO designation field is much more precise, and we treat the ICAO website as an authoritative source. Note that this really only applies for Airplanes and Helicopters on MyFlightbook.  ICAO tends to lump all balloons into "BALL" and gliders into "GLID", but that's a coarser granularity than the community generally want, so please leave the ICAO field blank for anything that is not an airplane or helicopter.  

Also note that the ICAO code is very coarse: multiple different variants of an aircraft often share a single ICAO code; the C-172 is a great example: all C-172’s are “C172”, whether it’s a C-172P, C-172N, C-172RG, etc. 

For the Type Rating field (generally only jets or large aircraft), MyFlightbook treats the FAA Type ratings taxonomy as authoritative.  It isn’t totally comprehensive, but I use it when possible.

Summary - don't sweat it!

There's a lot to digest above, but the key thing to remember is that someone will review any (a) new model, (b) edit to an existing model, or (c) edit to an aircraft that has the potential to impact other pilots.  So do your best, but don't worry about getting everything just right; we've got your back.  

At the end of the day, this results in a super comprehensive and increasingly accurate data set, which benefits us all.