Wednesday, August 24, 2016

Announcing WhirlyGlobe-Maply Imagery Pro

Today I'm delighted to announce the first option on top of the WhirlyGlobe-Maply toolkit: Imagery Pro.

The red's moving away so that's good.

Up to now everything has gone into the free toolkit or client apps.  This marks the first time we're keeping something to ourselves and, yes, charging for it.

Who's This For?

We love all our users equally.  Okay, maybe we love the ones who pay support a little bit more.  But you're all cool.  Honest.

We've attracted a lot of weather and aviation users.  It makes sense.  They have pretty serious data display needs and only a passing interest in street maps.

Imagery Pro is for them.  We're taking what we've learned and pushing way beyond.

What's In It?

It's all in the marketing, but the basics are like so:

  • Efficient data transport
  • Fancy shaders
  • Getting rid of the !#*$& seams
  • Easier particles
I do love my animated gifs

All good stuff if you do weather and/or aviation.

So what about WhirlyGlobe-Maply?

That's right.  My five year plan to give away massive amounts of geospatial code is finally coming to fruition!

But no, the base toolkit is all good.  Imagery Pro is about expansion into a couple of markets that want much more right now and they're willing to pay for it.

We're continuing to expand WhirlyGlobe-Maply with iOS (2.5) and Android releases in the pipeline.  That's not going to change.

Thursday, August 18, 2016

Build System

We've wanted a more formal build system with WhirlyGlobe-Maply for quite some time.  Thanks to José we've finally got one!

Nightly and on-demand builds are now available!

Binary Versions

It turns out not everyone wants to build the toolkit from source every time.  Weird, right?

So for those strange people we've had a binary distribution.  You can see it linked off the main site and it got updated... you know... sometimes.  Well now we're doing better.

If you go to the Builds tab on the WhirlyGlobe-Maply site you'll see this.

That's the filtered output from our Jenkins server, a Mac Mini sitting in the corner of my office.  I expect it to last several years before filling up with dust and catching fire.

You can just use the binary framework directly on iOS.  On Android it's an AAR file with every frickin' architecture.

Binary Cocoapod

If you're a Cocoapods user the iOS zip files contain a Podspec.  That makes it a self extracting Pod.  To use it, all you have to do is this.

If we've pointed you at a specific feature build, you just use the URL for that one.

Continuous Integration

We're also triggering builds for commits to certain branches.  For now that's just develop_2_4_1 (aka version 2.5) and develop_3_0 (Android).  We'll add more as we go.

This is nice internally and it's already caught a few commit mistakes, but we plan to go further. The goal is to hook up our test apps and run them on attached Android and iOS devices.

All this work was done under the guise of WhirlyGlobe-Maply support.  You support customers paid for it.  Thanks!

Monday, August 1, 2016

Deprecating Mapbox GL Style Sheet Support

If you follow the open source mapping world (and why would you?), there's been some interesting rumblings about Mapbox Intellectual Property of late.

I don't totally understand this, but Mapbox is unhappy with the stated goal of copying Mapbox Streets.

Is Mapbox Wrong?

Legally, I haven't a clue.  Ethically, they're probably quite right.  Their participation in the community earns them the benefit of the doubt.

So then, if we take them at their word, the word is "Thou shalt not copy Mapbox Streets".

It's an interesting word and it kicked off a bit of examination of my project.  Am I using any Mapbox IP and what are the consequences?

Mapbox Now and Mapbox Future

Is this really a big deal?  Mapbox is a good open source citizen and they're clearly trying to be very gentle.

But here's the thing, Mapbox took venture capital.  A sale is a likely outcome and those people aren't going to be as nice.  Think Oracle and Java.

So, what Mapbox IP do we use and what should I do about it?

Mapbox Vector Tiles

My users do use vector tiles.  Some Mapbox hosted, but always their own custom data.  Some users even have their own services.  Both cases are fine.

Vector tiles are undeniably open.  They've stated so any number of times and data formats are well understood in IP law.  I think we're good there.

Mapbox GL Style Sheets

This one's dodgier.  Though the format itself is open, there are restrictions on the style sheets we can use.  I can follow those restrictions, but will my users?  Ha!

Most open source users consider anything publicly available to be fair game.  The Mapbox Streets styles are the best out there.  There's no way they won't borrow from them.

So now we've got a style format that's tempting you to cheat.  That's strike one.

Data formats encode technical thinking.  If I implement OpenGL ES shaders to support Mapbox GL Styles then how different are those from Mapbox's own shaders?  It's a question that gives me pause.  That's strike two.

Goodbye to Mapbox GL Style Sheets

The style sheet format is cool, but it's too dangerous.  I'm ripping it out of the toolkit for version 2.5.  If you're using it, grab the code and make your own copy.

We do have Styled Layer Descriptor format support coming out soon.  Not as cool, but a nice safe OGC standard.

Thursday, July 21, 2016

Digital Globe Tutorial

We put together a tutorial for Digital Globe layers.

Alaska is pretty

Digital Globe has a pretty nice API based off of Mapbox technology.  Or administered by Mapbox?  Not totally clear on that.  Anyway, it's good.

The Tutorial

All the good stuff is in the tutorial.  I suggest you go check that out.  Here's another picture.

Trippy.  Or elevation.  One of those

Anyway, Digital Globe is a great source of high resolution timely satellite imagery.  Because of course it is.  That's what they do.

Tuesday, July 12, 2016

Swift Support

It's new, it's trendy, it's the latest thing: Swift support in WhirlyGlobe-Maply!

Swift has been in there since 2.4.1 (soon 2.5), but we haven't really pointed it out.

Why Swift?

I'm not the audience for Swift.  My favorite language is a mixture of C++ and Objective-C.  You get STL containers, blocks, and ARC.  It's awesome.  Why are you backing away?  Let me tell you more!

This is why I work with other humans.  José was quite interested in Swift and did the bulk of the work.

Swift Interfaces & Documentation

The main issue was Swift bindings for all the various methods.  Swift can interface to Objective-C just fine, but if you want to make it pleasant, it should look like this.

He did that everywhere and tested it out.  The result is a nice, pleasant Swift interface to the main library.  But we didn't stop there.

Feel the learning!

The tutorials have tabs for Objective-C and Swift!

Swift Tests

In the new AutoTester app (post forthcoming) José wrote a bunch of Swift test cases.  These have a pleasing rhythm to them.

Swift-ly into the Future

We're getting user submitted github Issues in Swift now.  Not about Swift mind you, just in Swift.  So that seems to be working.

As Apple changes the language we'll keep up and I think a few new WhirlyGlobe-Maply apps may be written in Swift.

Thursday, July 7, 2016

Dark Sky for Android

They launched a few weeks ago, but we haven't talked about it yet (here).  Dark Sky for Android!

That's some weather.

Man, that was a lot of work.

Weather Apps Are Popular Apps

The service, the UI, the data, notifications, and the globe are the big pieces of Dark Sky.  We make the globe.

Dark Sky is really popular and has a particularly loyal following.  In just about any group I meet, there's a good percentage who use it regularly.  I'm not reticent about using that fact.

So Much Android So Little Time

The Android port took a while on my end.  I could have done a hacky version, but that wouldn't work for everyone else.  No, we had to port the toolkit in a way Android developers would find friendly.

Totally not a screenshot from Keynote.

The C++ core, which does the rendering and manages the low level objects is (will be) the same on iOS and Android.  But everything above that level had to be new.

Developers expect their toolkits to be familiar on the local platforms.  That means Swift interfaces and dispatch queues for iOS, Runnables and integer colors for Android.  And lots and lots of other things.  This takes time.

Back To Dark Sky

For Dark Sky Android we ported the parts they needed and filled out the underpinnings.  This was by far the biggest app yet released with WhirlyGlobe-Maply on Android.

That's some more weather.

Dark Sky launched on Android with a subscription model.  Apple totally thought of that first and recently announced a similar one.  I'd love to see that take off on both platforms.

In the mean time, go buy it!

Tuesday, July 5, 2016

Welcome to!

I'm proud to welcome the German iOS app to the WhirlyGlobe-Maply family.

The app presents regional weather, including predictions, on a map.

Details, details, details

It's funny to celebrate a flat map when the toolkit does a globe.  But for a regional app, the globe doesn't make sense.  The flat map simplifies things for the user and lets us optimize the data transport.  All the good stuff we do on the globe works on the map.

The app itself shows current predictions, recent radar, and cloud cover.  As well as some other cool non-map related stuff like weather cams.

Are those labels on top of the weather?  Oh my!

Mobile hardware is really good these days.  Since we're no longer planning for the iPad2 we can do some really great OpenGL ES shader work.  If you zoom in close, you'll see some great spatial and temporal interpolation.

The Inevitable Marketing Push

There are a lot of regional weather apps for iOS and Android.  Not so much in the United States where almost all the data comes from NOAA.

In the rest of the world weather data tends to be less free and more complicated.  Add to that language and local preference and you get a lot of interesting, distinct regional weather apps.  If you make one of those and want to upgrade your graphics, let's talk!