As the developer of Predictive iDash, Dave Mikesell was tasked with creating a cross-platform app to assist race car drivers on the track. The app displays a wide assortment of live performance data to the driver as well as saves racing sessions to a local database for use as a baseline for predictive lap timing.
Can you tell us about your development background and the work you do?
I graduated from Ohio State University in 1991 with a degree in Computer Information Science from the College of Engineering. Since then I’ve held various roles, from developer to project manager, and just about everything in between.
The type of development has varied too, including computer graphics, interactive voice response, client/server corporate IT, and most recently mobile development.
Predictive iDash is my second published application.The first is an iOS game called Killer Bees, a replica of an Odyssey II game of the same name that was published in the 1980s and that I happened to play way back then. I wrote that almost exclusively in C++, with the necessary bootstrap Objective-C code. My collision detection was home grown and all rendering was done via OpenGLES.
Can you tell us a bit about Predictive iDash and your role in development?
I was the lone developer of the Corona version of Predictive iDash, which is an in-car lap timing data display for race car drivers. It displays live performance data and predictive lap times using innovative timing and velocity methods derived from high rate GPS and vehicle data. The data that feeds iDash is a proprietary network handshake that is sent from proprietary onboard video data systems, which are also sold by the vendor of iDash.
Tell us about the functionality of Predictive iDash. What are the key features of the app?
Predictive iDash displays live performance data to the driver, including RPM, speed, lap time, previous lap time, best lap time, predicted lap time, minimum corner speed, and maximum straight speed. It also saves racing sessions to a local database, sorted by race track, so that the best time completed at a track is used as a baseline for predictive lap timing.
The predicted lap time shows the driver if he is ahead or behind his best lap time, and of course displays the predicted lap time of the current lap.
iDash also displays system status information, like number of available GPS satellites, battery voltage, and SD memory card capacity.
What were some of the challenges in building Predictive iDash?
First, this application has to perform well since it’s displaying real time data to the user. The display can’t jerk or freeze when it’s ticking off lap times down to the hundredth of a second. The lap data must also be accurate and consistent. I used Lua coroutines where I could to thread tasks and carefully tuned the code after initial development, trying to squeeze every cycle I could from the main application loop.
Second, supporting Android is much different than iOS, where the hardware choices are fairly limited and consistent. A wide variety of vendors make Android devices with varying levels of quality and display resolutions, however, so it was a challenge making sure the application looked and performed the same everywhere.
Predictive iDash is not the typical sort of app that developers build with Corona. Did you evaluate other tools? If yes, why did you decide to use Corona?
I was already evaluating Corona for my own uses, and had also evaluated Marmalade (formerly Airplay SDK) for the same. I had become a user and big fan of Corona before I was approached to develop iDash. A key requirement of iDash was that it ran on both iOS and Android platforms, and since I was already fairly fluent in Corona, the choice was easy.