Friday, May 17, 2013

GeoData Display for Mobile Devices with OpenGL ES


I gave a talk last night at the San Francisco Bay Area GeoMeetup.  This one was timed to coincide with Google I/O.

The talks were the 5 minute Ignite format and, just to be different, I went deep technical.  I pulled a couple algorithms out of WhirlyGlobe-Maply and explained them.  I like how it turned out.



The video has audio and, hey, it's short.

The slides, sans video, can be found here.

Wednesday, May 15, 2013

MapBox Earth

It's been a busy month for MapBox.  Their new OpenStreetMap editor launched, for one thing, and now they've published a pretty little app to show off their satellite data sets.

In English, yes.
Actual picture of the earth.  NASA photoshops out the labels.


It's WhirlyGlobe-Maply powering that app and, indeed, the whole thing is open source.

How It Happened


I approached MapBox about doing this one a few weeks ago.  It's basically advertising for me and it was really simple to write.  Take a look at the source code, it's just not that big.

Once I put the first version together, Justin@MapBox cleaned it up and generally made the UI elements work better.  That stuff takes more time than you realize.

Then we shipped it and now you can play with.

Future of MapBox Earth


The app's goals were to show off MapBox's lovely satellite data sets and advertise WhirlyGlobe-Maply.  I'd say we're good on both of those.  What's next depends on what people want to do with it.

Since the app itself is open source and the toolkit is open source... you can do whatever you like (within the constraints of an Apache 2.0 license).  Or you can pay me to do whatever you like, which is kind of how I make my living.

We'll see how that goes.  In the mean time there are other interesting things afoot with MapBox and mousebird consulting.

Thursday, May 2, 2013

route-me and Maply

I like route-me.  It's open source, it's been around a while, lots of people use it, and it works.  Heck, I used it on a project once.

For those in the dark, route-me is a free toolkit for displaying custom slippy maps with overlaid shape, marker and other features on iOS.

Anyway, I like route-me, which puts me in an awkward position.  I want to replace it.

Maply


I make an open source toolkit called WhirlyGlobe-Maply.  There are three ways you can use it.

3D Interactive Globe   -   Interactive 3D map with tilt   -   Interactive flat (2D) map

The WhirlyGlobe part is the globe, the Maply part is the other two.  I've done a bit with the interactive 3D map and it's a blast, but it's not what most people want to do.  They want a true flat map.

Okay, so great, I can do a flat map.  But why bother?  If you want Apple's data, you use MapKit, if you want Google's data you use their iOS API.  If you want your own data, you buy a commercial toolkit or you use route-me.  Do I really have anything to offer over route-me?

I do.  WhirlyGlobe-Maply is based on OpenGL ES.  My toolkit is in the same class of "stupid fast" as Apple's, Google's, and the commercial alternatives.  I can't beat them feature for feature, but then I don't have to.  Mine is open source.

That's a fun bit of self aggrandizement, but it really needs to lead somewhere.  I think it's only worth matching route-me's features if someone's paying.  There's money out there for this kind of thing and it's welcome to look me up.  And it did.

MapBox


The MapBox guys, Justin particularly, have their own route-me variant they call the MapBox iOS SDK.  It's really nice, with a lot of functionality filled in and tons of documentation and examples, things that open source projects often lack (cough).

Very cool, but route-me uses Quartz, the technology behind UIKit (kind of).  That's what you're supposed to do, but it's not as fast as the new Apple Maps.  They're obviously not using Quartz, they're using OpenGL ES.  Maply uses OpenGL ES so...

MapBox is paying me to jack up their version of route-me and stick Maply underneath.



route-me + Maply = What?


The idea is pretty simple.  Accelerate route-me's tile display with Maply, then see if we can do anything with annotations.  In theory it looks pretty good.  The initial experiment looks good too, but we've got a ways to go.

If everything goes well, the standard route-me app might be able to switch over seamlessly.  Your custom Quartz rendering will still be Quartz, but anything you represented in route-me tile sources and annotations could be handled by Maply.  Or not.  It's an experiment, we'll see.

Two Apps: Global Schooner and Pray 2x714

Here are a couple of apps that developers have put together recently I'd like to highlight.  I had nothing to do with these other than answering a question or two along the way.

Global Schooner
Pray 2x714




















Global Schooner is an app for Prairie Schooner Magazine showing where their authors are located around the world.  I like the subdued icons and the corner based navigation.

Pray 2x7:14 is an app by Rueben Thiessen and seems to be a bit of a social network for prayer.  I like his use of great circles, very nice visual.

Both of these are great examples of what you can do with the WhirlyGlobe-Maply Component without too much trouble.  These are far removed from the iPad melting insanity I make my living at and are just the sort of specialty apps I love to see using the toolkit.

I'm way behind on apps, so feel free to bug me if I haven't posted yours yet.

Wednesday, April 17, 2013

Symantec Protection Center Mobile

Sometimes big companies pick up on WhirlyGlobe-Maply.  And sometimes I can actually talk about it.  This is one of those times.

Things are calm now, but an eruption of orange pins can happen at ANY TIME.

What It Is


I'll just borrow their text to describe it.

Symantec Protection Center Mobile 1.0 provides you a view of live security threats across the globe as well as executive summary of your organization’s security posture.

Only, ya know, with a spinny globe!  It's quite fun to play with.  I sometimes use it at trade shows because it has a self actuating mode.  It will spin from threat to threat on its own if you let it.

How It Uses the Globe


In many ways, this is the quintessential WhirlyGlobe app.  It makes good use of pre-2.0 features like the static blue marble texture set and lots of vectors.  They use markers for points and labels too.  And hey, they made a video.





The absolute best part of the app is that I didn't write a single line of it.  They did ask a few questions and did some careful due diligence on the open source libraries I use, but otherwise it was a delightful surprise when it came out.  In November.... yeah, I don't know why I'm just getting around to writing about it.

More Apps Like This


I don't know why there aren't more apps like this one.  This is pretty much what I designed WhirlyGlobe version 1 to do.  What WhirlyGlobe 1.x really did was attract the high performance iPad melting map display crowd.... which resulted in WhirlyGlobe-Maply 2.x, so no complaints, but I was expecting to see more of this sort of app.

If you're looking to make a fairly straightforward spinny globe app that integrates well with your own business logic, I'd check this one out.  They did a very nice job.

Monday, April 15, 2013

Android Port

I'm exploring an Android port of WhirlyGlobe-Maply.  With the recent release of Maply, I'm getting a lot of inquiries about Android support.

Like this, but more Android-y
These are fairly serious companies asking about it.  If I had some way of simply dividing the cost among them, I suspect we'd already be there.  But that's not how consulting works or how corporations think, so we get to do this the hard way.

How Would it Work?

The low level rendering engine in WhirlyGlobe-Maply is C++.  I didn't plan it that way, I just like C++ for tossing data around and it meshes nicely with OpenGL.  All the higher level interaction code is Objective-C as you'd hope.

On Android, they provide the NDK, an interface for writing native C/C++ and running it on Android devices.  It looks pretty good and the OpenGL ES support looks solid.  The Java Native Interface is an exercise in pain, but it seems dependable.

The plan would be to port the low level rendering engine after a little restructuring on the iOS side.  Then we'd rewrite the Component level for Android, basically all the UI and object manipulation.

Android users would only see the nice, friendly thread-safe higher level interface and we'd hide all the crazy stuff only I understand.  Just like on iOS.

About the Money

I'm a consultant and I give WhirlyGlobe-Maply away for free, so I'm not going to do this for the heck of it.  It needs to be paid for.

A local mapping company, Gaia GPS, is interested.  They only need Maply, logically enough, so we'd just port the pieces to support that.  Full WhirlyGlobe-Maply support would have to follow based on other clients.

Their support, assuming the numbers work, would get the core toolkit ported, but it wouldn't be enough for a full Android release.  I need other clients to step up.

Update (5/14/2013)


The first try fell through, as deals do.  Now I'm shopping it around.  If you've got a lot of money burning a whole in your pocket, let me know.

Saturday, April 6, 2013

TransitVis - Urban Data Challenge

TransitVis is live on the Apple app store for iPad.  It's a free download.  Watch the video to learn how to use it.



Don't forget to go get some data.  That's sold separately (also free).

The Urban Data Challenge awards were today and we took 3rd.  Thanks to everyone involved in that.  Lots of great projects.

What's next for TransitVis, you might ask?  All the interesting technology is in WhirlyGlobe-Maply so that'll be popping up in client projects.  For the app itself... we'll wait to see if anyone uses TransitVis for anything and go from there.