Friday, October 12, 2007

ICM Final Project Proposal: Global Data Visualizer

Proposal:
When developing software, I feel it is important to develop around a system that is flexible, yet powerful when focus is needed on a particular task. Many times, a generic solution to a problem requiring precision results in software that has the ability to handle many tasks, yet does so in a mediocre way. Software should be quiet in interface, elegant in result - and predictable in terms of being intuitive to use.

My commentary on this aspect of software leads me to my proposal -- that being; I want to develop a system which can visualize various types of data as it pertains to our planet, and I'd like to do so in a way which promotes ease of use and flexibility in how it handles different data. Ideally, the data will be presented in a way that will be understood, yet a good deal more 'artsy' than most data visualizers I have seen. Whether 'artsy' means abstraction or simply a clean/slick way of visualizing the data I cannot really say, I very rarely ever know what I will create on the art-side until I am up to my neck in code architecture. That isn't to say that the art is an after-thought, because the fact negating such an idea lies in much of my past code, where I practically destroy my nicely planned out system for the sake of making the output look 'cool'. Of course, I'd prefer to maintain both... but the engineer inside me brings a knife to a gunfight if I have to choose only one due to time restraints.

Technical:
Initially, my task will be to visualize seismic activity happening around the world. This will ideally expand to harbor other data as time permits. I have actually already done this to an extent - but I'd like to have the events be projected on a 3D globe with correct coordinates an so forth. I have made the decision that I will be using OpenGL through Java for this project. I toyed with the idea of using C++ or Python in combination with OpenGL - but C++ coding is still a very slow process for me and Python simply isn't going to provide the optimal speed I need (which is too bad, coding in Python is really enjoyable). I was planning on using JOGL - but the ever helpful Daniel Shiffman pointed me in the direction of LWJGL (Lightweight Java Game Library) which looks really promising, so I will be venturing in that direction.

Here are a few links that are helping me think things through on this project:
Lightweight Java Game Library
NASA Blue Marble
USGS.gov

No comments: