I play with data, and I'm always looking for new ways to visualize. Having used VR in the past for data exploration, I thought of using Alexa to steer through a 3D space.
What it does
This Alexa skill takes columns of data from a CSV file, and maps it into a 1000x1000x1000 cube which you can explore by voice navigation.
How I built it
Backend coded in Python, with Alexa Presentation Language used for animation of Vector Graphics on device.
Challenges I ran into
Getting the math right. Also, a lot of limitations with APL animation and triggers.
I created all my own libraries for doing the 3D geometry calculations. Being able to apply the right hand rule through all the coordinate transformations got sticky some times. I used my unit tests to guide and check all my steps, although I still reversed my frustrum coordinates a couple of times.
I'm pretty sure the basic math is all right, but I would love some time to be able to sync some of the animations to the calculated positions. There are a lot of limitations on the possible vector graphic transformations allowed in animation, so I had to fudge some approximations, which makes the animations sometimes fail to line up with the true calculated projections. Simply using the raw calculations and refreshing repeatedly was not an option given the way Alexa refreshes renderDocuments.
Accomplishments that I'm proud of
Having something in by the deadline.
What I learned
You can never do enough testing.
What's next for Data Dive
I initially had created a grid to increase the sense of spatial movement and presence, but I started having problems with animating too many elements. That could still be a problem depending on the data set that is explored, so it would be good to put in some database checks.
Right now, there are three data sets that are included in the code, but you can only access the
iris.csv file that I used in the initial video. One is a simple 'test' dataset, but the fun one is an astronomical database of stars. It just has RA and dec, though, and I'd want to put in 3D true galactic coordinates before releasing that.
And I promise to put up a new icon for the skill when I get time. I just made the gimpy one to meet the deadline.