iOSDevCamp 2011

I'm putting together a team for the Hackathon.  I have a proposal for a small app that could be built with one or two other people.  Development would take place over the weekend of July 15th and wrap up in time for judging on July 17th.  This app would be open source, distributed under the Apache 2.0 license.

WhirlyGraph

The idea is to display simple bar graph data on top of country outlines on an interactive 3D globe.  You could select countries of interest and see how they compare in an overall data set, such as infant mortality, production of cereal grains, or whatever else we can get converted into a database.

Luckily, this isn't as ambitious as it sounds.  Let's look at what we already have.

WhirlyGlobe

I make an open source toolkit called WhirlyGlobe.  It's distributed under the Apache 2.0 license and free to use in your own app whether that be commercial, educational, government or whatever.  With WhirlyGlobe you can build an app for interacting with geographic data sets in 3D.  Here's an example.


There's a demo on the app store too if you want to go play with that.  Search for WhirlyGlobe.  It's cool, I can wait.

Welcome back.  Anyway, WhirlyGlobe works.  It's tested, there's an app out there and I've got users busily writing their own apps.  So that part is taken care of.  Here's what we'd have to write.

WhirlyGraph - The App

Here's what WhirlyGraph would do.  It would let the user interact with simple country-indexed data sets.  Anything that has a single value per country and can be indexed properly is fair game.  We would take the country outlines (as in the picture above) and loft them up based on their value.  So every country the user has selected would show a lofted polygon matched to that corresponding value in the database.  We might also use a temperature equivalent color palette, because that looks cool.

Data sets would consist of a single value per country.  We'll take the min and max and scale to relative values above the globe that  look good.  Each selected country would show their relative value, whether it be for infant mortality, health expenditure as a percentage of GDP or whatever.

Obviously, we need some way to select what's being shown.  We'll need a nice table view to pop up on top of the globe and let you select the active data set.  We'll also need some way to show the user what they're seeing, navigation bars on the top and bottom and.... you get the idea.  We need a decent app framework.

Lastly, we need data.  I've already identified a good data source we can convert without too much trouble.  The UN provides a lot of data in a nice, standard format, using the proper codes, so I can link it up to my existing data sets:  http://geodata.grid.unep.ch

Work Breakdown

I could use one or two other people to work on this thing.  We could get some decent polish on WhirlyGraph by the end of the weekend, probably without straining too hard.  Plus hey, 3D is fun.  So here's what I'm looking for.

UIKit developer

This person would develop the app framework.  That is, everything that's not 3D.  This would consist of:
  • A reasonable iPad app framework
  • Table view that reads from an SQLite database.  Not a very big one.
  • Button bar along the bottom for bringing up the table view
  • If this is dead easy, anything else you can think of to make it cooler
I think UIKit experience is key.  You could stretch a bit, say, if you've only done iPhone and always wanted to play with the iPad variant.  Anything less is probably too much of a stretch. 

Database Wrangler

The data set needs to be selected, imported, formatted and checked.  That looks like so:

  • Grab the interesting data sets off the UNEX site
  • Converting the CSV to sqlite3.  Alas, this will require a little hacking, it's not a straight conversion.  Python experience would be helpful.
  • Building an index meta table to tell us what tables are there and provide the user friendly descriptions
  • Design the queries for us, if you would
This could almost be a non-engineer.  Alas, the way the CSV files are coming down, some coding would be helpful.  Otherwise you're looking at a lot of text editing.

3D Hacker

That's me.  I'll do the following:
  • Add the lofting functionality to WhirlyGlobe
  • Clip the polygons against the geo-grid.  This is going to take me a while.  It's hard to do efficiently.
  • Animation of said polygons over time.
  • Query into the sqlite database for the single values.
I can help with the other parts, but I will need to spend a lot of time on this portion of it.

Copyrights, Open Source and Such

A word on the disposition of the code.  WhirlyGlobe is distributed under the Apache 2.0 license as an open source library.  It's checked in to Google Code.  As such, we're going for the open source prizes at iOSDevCamp.  WhirlyGraph will be an open source app.

The functionality I write will go straight into WhirlyGlobe, the toolkit.  I hold the copyright for WhirlyGlobe, even I distribute it under a free license.  You are free to do whatever you like with your WhirlyGraph code, as long as we can distribute the weekend's results freely in the contributed section of WhirlyGlobe.  I won't hold that particular copyright.

Conclusion

So that's the idea. A 3D globe based bar graph display tool. It will certainly be pretty and it shouldn't be all that much work. Hopefully, no midnight hacking for us.

If you're interested, talk to me at the conference and we'll see. If you'd just like to use WhirlyGlobe for something of your own, let me know. That's cool too.