As a frequent traveler, there's nothing more aggravating than a delayed flight. The team at FlightCaster has used AWS to build a powerful tool for travelers. FlightCaster uses the following sources of data to drive its predictions:
- Inbound aircraft status
- Departure aircraft status
- Arrival airport status
- Departure weather
- Arrival weather
- Official airline status (which, presumably already reflects at least some of the factors above)
The prediction use a combination of the most current real-time data and up to ten years of historical data. It currently makes predictions for flights within the United States. Interestingly enough, all of this data is public and freely available. You could build this application yourself if you were as smart as these guys.
For a given flight, FlightCaster will predict the chance of an on-time, slightly delayed (less than 60 minutes late) or very delayed (more than 60 minutes late) arrival, up to six hours ahead of the flight.
According to a short article in SD Times, the site and the applications were built in just four months on a budget of less than a million dollars. The developers used a number of advanced technologies including Hadoop, Clojure, and Cascading. Clojure is a dynamic scripting language with a LISP-like syntax, running on top of the Java Virtual Machine (JVM). Cascading is a very high-level workflow language. It runs on top of Hadoop. They used this technology to build a system which can do predictive AI, literally forecasting the future.
It it written in Ruby on Rails, hosted at Heroku (where it runs on Amazon EC2 and S3) and makes use of the Cloudera AMIs for Hadoop. Read this post and this detailed interview to learn even more about how it works.
All of these leading edge technologies are clearly the wave of the future but of a future that's just a little bit scary to an old-timer like me! These new technologies aren't just simply new languages, with slightly cleaner and more powerful concepts than their predecessors. The transitions I made from FORTRAN to PL/I to C to C++ to Java to Perl to PHP were each pretty painless and almost everything I knew carried forth and was still usable as I moved from language to language (except for carriage control, but that's a different yet very interesting story). No, these new technologies embody entire new processing models and means of expression, and are brand new beasts entirely. If history has taught me anything, it is that these edgy things become mainstream in the blink of an eye and that you can be left behind before you know it!.