Flight Historian

Flight Historian is a personal flight tracking website, allowing me to map and analyze all flights I’ve taken. Flights can be viewed all together, or analyzed by airline, aircraft, airport, route, class, or tail number.



Languages & Frameworks Ruby on Rails (2.3.1,
Database PostgreSQL
Version Control Git
Hosting Heroku
Project Management Trello


In 2009, I was promoted to a job with frequent travel. Soon thereafter, I started keeping track of all the places I’d been.

My first attempt at keeping track of my travel was to create a simple heat map of the United States, with each state colored depending on how recently I’d visited.

I kept track of the date of the most recent visit to each state in an Excel spreadsheet, and wrote a function to give me an RGB color based on today’s date and the date of the last visit. I would then manually recolor the states using an image editor. This worked, but it was labor intensive – every time I took a trip, I would have to recolor dozens of states.

I began to search for software that would generate a colored map of the states from an array of state colors. Before I found any, though, I discovered the Great Circle Mapper.

The Great Circle mapper allows the user to put in a string of airport pairs, and generates a map of great circle routes. (For example, DAY-DFW-PHX,PHX-ORD-DAY generates this map.) Tracking flights was more interesting to me than tracking states, so I went back through my travel receipts, wrote up a string of all of my flights, and saved it in a text file. Updating was relatively simple; I just had to type some more text at the end of my text file and copy and paste it into the Great Circle Mapper.

It worked for a while, but things gradually got more complicated. The Great Circle Mapper normally automatically zooms the map to include all of the airports in the user’s flight string. Most of my flights were in the contiguous United States, but a few flights to Europe forced the map to be zoomed out, which made the US map difficult to see as I filled in more of the map with flights. Fortunately, the Great Circle Mapper allows the user to designate that the map should ignore a particular flight when figuring out its zoom by prepending it with o:noext. (For example, CMH-ORD,o:noext,ORD-FRA,o:noext,FRA-EWR,EWR-CMH generates this map.) This let me flag all flights that left the continental US so that the map would remain focused on the US, and I could see the details of all those routes. But I also wanted to be able to see my world flights, so I ended up having to maintain two text files – one for within the continental US, and one for the world.

Screenshot of text file containing flight routes

Then, in 2012, I started tracking the aircraft family, tail number, and what class I sat in for all of my flights, and the data got more complicated. Now, a simple pair of text files was no longer good enough; I also had to keep a spreadsheet of all of the extra information about my flights. For good measure, I went back through my travel receipts again to get the past three years of aircraft family data.

Screenshot of Excel spreadsheet containing flight data

All this extra data let me do some fancy things, like make maps of all my trips on a particular airline or type of airplane, but it was a lot of extra work. I’d have to use filters in Excel, type up the routes and put them in the Great Circle Mapper, all to get a series of maps that would only be good until I took my next flight. I had a lot of data to manage.

At the same time, I’d been teaching myself Ruby on Rails by rewriting my old PHP website. Static pages weren’t particularly difficult to write, so I needed something more complex to work on.

Just as I’d used my EBDB project to teach myself PHP and MySQL back in 2004, I decided to create a flight log database website to teach myself Ruby on Rails. I started work on this flight log in 2012, and launched the site in April 2013.

Version History

Date Release Changes
27 April 2013 1.0 Initial release
24 October 2013 1.1 Routes and Top 5 Lists
27 October 2014 1.2 Operators and Codeshares
8 February 2015 1.3 Distances and Annual Summaries
31 January 2016 2.0 Flight Historian
29 April 2017 2.1 Import Flights from Digital Boarding Passes