Flight Historian

Flight Historian is a personal flight tracking website I created, allowing me to map and review all flights I’ve taken.

Home page of Flight Historian.

You can see details for any flight I’ve flown; you can also click on any airline, aircraft, airport, route, class, or tail number to see maps of all matching flights.

Top five airports, airlines, routes, aircraft, and tail numbers on Flight Historian.

For every category such as airlines or airports, Flight Historian can show you which ones I’ve used the most.

I can add flights to Flight Historian simply by sharing digital boarding passes from my phone via email, or by scanning the barcode on my paper boarding passes.


I launched Flight Historian in 2013 to replace a collection of flight tracking text files and spreadsheets that I’d been using previously, and I’ve been upgrading the website ever since.

Technical Details

I wrote Flight Historian in Ruby on Rails, using a PostgreSQL database to store flight data.

The application interfaces with the Great Circle Mapper to generate flight map graphics, and provides geographic XML data downloads in GPX and KML formats. It can also export groups of flights as a directed graph (with airports as nodes and flights as edges) in yEd-flavored GraphML format.

Flight Historian can automatically import flights from Apple Wallet boarding passes shared via email, or from scanned paper boarding pass barcode data (in IATA BCBP format). It looks up additional flight details using the FlightAware AeroAPI.

My GitHub repository for Flight Historian is at bogardpd/flight_log.


Generating GPX and KML Maps with Ruby on Rails

How to use Ruby to create GPX and KML map data files.

Switching Flight Historian to ICAO Regions

I used to manually keep track of which airports were within the contiguous United States in Flight Historian’s airport data, but I realized that I could determine airports’ regions by looking at their ICAO codes instead.

Creating Multiple Flash Messages in Ruby on Rails

On my Flight Historian application, a number of my pages make use of the Ruby flash and flash.now session messages for alerts. However, some of those pages needed to have multiple messages of the same type, which flash didn’t allow me to do. To fix this, I wrote my own messages structure.

Parsing Boarding Pass Dates in Ruby on Rails

Boarding pass barcodes contain data that’s useful for automatically filling in flight data, but their dates are particularly difficult to parse.

Counting Visits to Airports: The Significance of Trip Sections

Why did I build my own flight log instead of using an existing one? One big contributor was that existing flight logs all seemed to double-count layovers.

Creating a Regular Expression for US Tail Numbers

Each country has its own assigned format for tail numbers, so it’s possible to look at each tail number and determine what country it’s from. I wanted to create a regular expression to recognize US tail numbers.

More Tail Numbers

I was able to use BTS data to help me fill in a good portion of my missing tail numbers.