Showing posts with label Dark Sky. Show all posts
Showing posts with label Dark Sky. Show all posts

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!

Friday, June 5, 2015

mousebird consulting Needs YOU!

I'm hiring.  If I can find the right person.

It's not relevant, I just like this image.

What We Do


You can read the web site yourself, but here's the tl;dr.  

We do high performance geospatial display for mobile devices.  Our customers include National GeographicForecast.IO and many others.  Our code burns millions of battery hours on millions of devices all over the world.

At any given time we're working on apps in weather, aerospace, education, and mapping.  And lately, all of them.  At once.

What It Is


I need another software developer, primarily.  These are the areas we work in.
  • OpenGL (ES or not)
  • iOS Development, Objective-C
  • Android Development, Java
  • User Interface development
  • C++
  • Geospatial data processing: GDAL, OGR, Proj.4
  • Data processing on Amazon ec2

If you have experience in any three of those, that would be interesting.  If you have experience in all of them... you're probably too expensive, but let's talk.

Where It's At


I'm in San Francisco.  If you are too, you can share the office.  Yes, an actual office with a door and everything.

If you're remote, that's fine.  Our clients are scattered around the world and don't visit much (sniff).  You have to be in the US, though.  I barely understand my own country's employment laws as it is.

What Is Next


Send me a resume, or your github profile, of Snapchat some code or something.  Just let me know if you're interested and we'll figure it out.

I'm open to part time, just returning to the work force, that sort of thing.  The mobile development market is red hot right now and I'm willing to be flexible.

Wednesday, February 4, 2015

WhirlyGlobe For Android

A few months ago I ported the Maply part of WhirlyGlobe-Maply to Android.  It's in shipping apps!  Now it's WhirlyGlobe's turn.

What my desk looks like right now.  Except no plushy thing.


Let's see who's paying for the port.

Bad weather looks awesome.

Dark Sky


Dark Sky is the most prominent app using WhirlyGlobe-Maply today.  They've been good users and great clients (e.g. they pay on time).  I'm pleased to have them taking the lead on this one.

Their users have been clamoring for an Android version, so this is a necessary step.

WhirlyGlobe Android Port


With the Maply rendering engine already there, WhirlyGlobe shouldn't be too bad.

I've already scoped out the hardware, got my ARM and x86 devices and dealt with versions back to 4.0.  I've also experienced the flow of Android development and made my peace with it... by increasing my engineering estimates.

The client comes first on the port, but we're doing this in the open.  Because open source.  You can always grab the develop_3_0 branch and have at it.  After this launches I'll look into making it easier to install.  And, you know, documentation.

What's Next


I've been very busy on two big client apps, the port, and a bunch of other stuff.  Those will launch in the next few months.  As always, I'd love to hear about your apps too.

The new site has gone over really well, particularly the documentation, so more of that is in the works.

WhirlyGlobe-Maply 2.4 is shambling toward release, perhaps in March.  I suspect that'll be the last version before 3.0 and the great Android/iOS unification.  We'll see.

Monday, October 20, 2014

Dark Sky & Progressive Loading

There's a new Dark Sky for iOS out.  If you're interested in weather apps, I suggest checking it out.

Terrible weather is pretty!

Forecast.io is one of my favorite clients (translation: They pay on time), but whenever they ask for something it's going to be hard.  This was no exception.

Tile Loading


Dark Sky has a ton of custom logic in it, not to mention all the custom data they feed it.  But large parts are using standard WhirlyGlobe-Maply.  The tile loading logic, for instance, is all in there.

Let's review.  For the globe, we start loading at level 0 and work our way down.

I will reuse this at least 5 more times.

The app does something funkier when you're zoomed in, but let's ignore that.  This approach works well for the globe, but for one problem:  Animation means frames.

So let's say you're loading 20 frames of animation to show the weather changing over the course of a day.  That means you have to load each tile 20 times.  Sure, you can do it in parallel... but still.  It takes a while.

Progressive Tile Loading


Adam at Forecast.io wanted something better.  "Couldn't we load individual frames" he said?  "Sure", I said.  "Just let me renew my Xanax prescription and we'll give it a try."

And now WG-Maply can load frames progressively.  That means it'll start at your most important frame and work its way outward.  It'll load depth first, so that first frame looks good everywhere and then work outward to the less important frames.

You can set the frame priorities yourself, change them on the fly, and get feedback on what is properly loaded.  When the user moves, we start loading at the most important frame again, then work on the others.

That Sounds... Complicated


Why yes, voice in my head that may never, ever go away, it is complicated!  It's not all that hard to use, though.  You provide your tile sources as normal and let the loader do its thing.  If you want to tell the user what's going on, there's a callback for that.

Weather apps are the most obvious users here, but anything with animation is fair game.  I'd love to see some data visualization apps using this feature.