The R programming language


The R programming language has become one of the standard tools for statistical data analysis and visualization, and is widely used by Google and many others. The language includes extensive support for working with vectors of integers, numerics (doubles), and many other types, but has lacked support for 64-bit integers. Romain Francois has recently uploaded the int64 package to CRAN as well as updated versions of the Rcpp and RProtobuf packages to make use of this package. Inside Google, this is important when interacting with other engineering systems such as Dremel and Protocol Buffers, where our engineers and quantitative analysts often need to read in 64-bit quantities from a datastore and perform statistical analysis inside R.

Romain has taken the approach of storing int64 vectors as S4 objects with a pair of R’s default 32-bit integers to store the high and low-order bits. Almost all of the standard arithmetic operations built into the R language have been extended to work with this new class. The design is such that the necessary bit-artihmetic is done behind the scenes in high-performance C++ code, but the higher-level R functions work transparently. This means, for example, that you can:

• Perform arithmetic operations between 64-bit operands or between int64 objects and integer or numeric types in R.
• Read and write CSV files including 64-bit values by specifying int64 as a colClasses argument to read.csv and write.csv (with int64 version 1.1).
• Load and save 64-bit types with the built-in serialization methods of R.
• Compute summary statistics of int64 vectors, such as max, min, range, sum, and the other standard R functions in the Summary Group Generic

For even higher levels of precision, there is also the venerable and powerful GNU Multiple Precision Arithmetic Library and the R GMP package on CRAN, although Romain’s new int64 package is a better fit for the 64-bit case.

We’ve had to work around the lack of 64-bit integers in R for several years at Google. And after several discussions with Romain, we were very happy to be able to fund his development of this package to solve the problem not just for us, but for the broader open-source community as well.

An excellent flight simulator for Google Earth

Back in 2006, Frank showed you how you could sort of use Google Earth as a flight simulator. It was crude, but effective. In late 2007, Google put a more realistic flight simulator into Google Earth, but kept it hidden as a secret mode.

More recently, this February we saw a demo of GEVision, which integrates Microsoft Flight Sim technology but uses Google Earth for the terrain and imagery.

Now we have our first look at Xavier Tassin’s Google Earth Flight Simulator, which might be the best one yet!

flight-sim.jpg

It uses the Google Earth Plug-in, and you can try it for yourself at ge-flightsimulator.com. If you need help with the controls, here are some instructions.

A few other notes about the project, from Xavier:

  • I have been playing around with Flight Sims since MS Flight Simulator 1.0 (I was 6 at that time :)
  • 6 years ago, I had a first try at making an Online Flight Simulator (www.keynoise.com) as a commercial for an Australian acquaintance of mine who is selling the Evektor Sportstar down under. This Sim was build with Shockwave and got more success than just being a commercial. Sadly, technical limitations and lack of time stopped my progress into making something better.
  • 6 month ago I tried “Ships” from PlanetAction, and realized that the GE plug-in would be a great platform for making my dream come true: make a worldwide scenery Flight Simulator.
  • The biggest challenge into making GE Flight Simulator was to work around the lack of a 3D physics engine in Javascript: it took me some time but I finally made my own. Also, as Google Earth is not really meant to be a game platform, it is difficult (and requires a lot of maths!) to animate complex objects. But all in all I was really surprised by the performances I could get out of the plug-in.
  • For the beta version, I tried to integrate as many of the features I though to be important to make it fun. It is not perfect yet but it gives a good idea of what can be achieve with a bit of Javascript and the GE plug-in. I am especially excited about the multi-player mode and I would like to get some feedback from users on that.
  • For the Future, I am planning to add more planes, improve the flight models, add an airport database and some aeronautical charting, improve the multi-player feature. I also would like (if enough interest is shown) to open an aircraft marketplace to everyone.

All in all, it’s a great flight sim. Try it for yourself, and tell us your thoughts in the comments below.