EasyRoute 2.10 – Switched to Mapbox

As I mentioned last time, EasyRoute would shortly be changing its maps and data source to Mapbox and now, that moment has arrived.

Everything is intended to work as it did before (with one big exception) but there are some places where the generated route is different than before. I am still finding ways to tweak this and if something doesn’t seem right or if you discover a bug, let me know.

The one big exception I mentioned above is Street View. Google only allows Street View to be used with a Google map and since that is no longer the case, I cannot embed it directly in EasyRoute anymore. However, I can launch it externally and if you have the Google Maps app for iOS, it’s almost as nice as it was before. It’ll automatically open to the Street View panorama at the location you selected in EasyRoute and getting back to EasyRoute is just a matter of hitting iOS’ built-in back button in the far upper-right corner.

Some of you wanted an in-app purchase to remove the ads. While I had always intended to do this, I decided to withhold it until the Mapbox conversion was complete. I didn’t want to start collecting money from you, and then soon after, abruptly change the app in a major way. The in-app purchase is now available so you can evaluate the Mapbox change before giving me money.

With this recent flurry of changes, hopefully EasyRoute can sustain itself. Mapbox is really the only expense now and their rates are reasonable. If you’re kind enough to report bugs or problems, I’ll take care  of them. (I noticed a couple of minor issues myself while planning a bike ride myself this weekend.) Also, I think I was pretty close to finished with my next major feature before this whole Google pricing thing became an issue so I’ll hopefully be able make that available soon too.

Posted in EasyRoute | Tagged , | Comments Off on EasyRoute 2.10 – Switched to Mapbox

EasyRoute 2.9 and the plan going forward

EasyRoute 2.9 is out. Here is a rundown of what’s new:


Back in December, I removed the $0.99 price tag on EasyRoute. I did this for a few reasons, but in the end, I enjoyed setting it free more than the slow trickle of revenue it produced when it was $0.99. However, it became too popular and I can’t skate in under free limits of the services I use anymore (which used to be Google and MapQuest, but is now just Google) So having the app available completely for free (and ad-free) was starting to cost me some money and since the usage trend is still upward, this was a change I had to make.

Update: I’ve already gotten several questions about removing the ads with an in-app purchase. Since I will be making a significant change to the app (by changing the map, see below) I didn’t think it would be fair to start collecting money and then, right after, make this change. The next release will have the option to remove the ads.

Better Map Options View

I used to have a little floating arrow along the right edge of the map and I was never crazy about this. I moved it to the toolbar (which is where it has always been on the iPad) and made the view more compact (again similar to the iPad). There’s a revamped general information view in there too with help and links.

Route List and Route Types

I made some small design tweaks to the route list along with a better way to bulk edit or delete them. There is also a route type (Run, Bike, Walk, Generic) that you can assign to a route. Your old routes will default to generic, but you can select and change multiple routes on the list if you want to tag them correctly.

The Next Major Release

…is right around the corner! Yes seriously, and this is somewhat related to the above.

I’m going to have to switch away from Google’s map and data.. and soon! I had been reviewing Google’s new pricing, which goes into effect on July 16, 2018 and it seemed as if the new plan would cost EasyRoute roughly 30x more than before. I actually contacted Google because I didn’t think I was calculating this correctly and they confirmed it. Ad revenue beyond my highest estimates wouldn’t even begin to cover this, so I’m moving to Mapbox.

I am close to finished with the conversion and there are some upsides as well as some disadvantages. I’ll explain more once that release is ready, so I’ll be back here with more news soon.

Thanks for reading. I hope you’re having fun with EasyRoute!

Posted in EasyRoute | Comments Off on EasyRoute 2.9 and the plan going forward

EasyRoute 2.7 – iPhone X, FIT Export and ELEMNT

Today’s EasyRoute release delivers a few nice things while setting the table for even bigger features. Let’s dive into it.

First, let’s get the simple one out of the way — iPhone X support. It uses the whole screen — no more black bars.

The next big one is FIT export with turn-by-turn directions. Any new route created with EasyRoute 2.7 or later will internally contain turn-by-turn directions too. When exporting to a FIT file, these directions will be included. The benefit here is any device that supports FIT course files and turn-by-turn directions should be able to take full advantage of this.

A perfect example is the ELEMNT (and ELEMNT BOLT) bike computer by Wahoo Fitness.

Simply tap the share button in EasyRoute, select Open FIT in other app and select the ELEMNT companion app.

The ELEMNT app will import the route. At this point, you can sync it to the ELEMNT with Wi-Fi or simply select it and it’ll be transferred automatically via Bluetooth.

I should add that since the middle of 2016, I’ve been a Wahoo Fitness employee, but since EasyRoute exports a FIT file, there no reason other devices from other companies couldn’t utilize it. I will admit, I did a little extra work on the Wahoo side to ensure it was smooth, though.

Finally, I’ve always changed the minimum Apple will allow (US 99¢) just to offset a few hard costs, but I’m changing the price to free. Enjoy!

Posted in EasyRoute | Comments Off on EasyRoute 2.7 – iPhone X, FIT Export and ELEMNT

Animated Spinning Wait Images for WatchKit

There is no equivalent to UIActivityIndicatorView in WatchKit, but I have a situation where I want an Apple Watch app to display an image generated by its companion iOS app, and I want to indicate the possibility of a short wait.

Luckily, WKInterfaceImage is capable of displaying an animated UIImage. We can craft a series of images that look similar to the familiar spinning wait indicator, use them to create an animated placeholder image and simply replace it when we receive the final generated image we were waiting for.

It was a bit of an annoying distraction to have to make this, so I figured I’d share it and maybe save someone else some time. (Clarification: it started out as an annoying distraction, but I ended up enjoying writing it anyway.)

Posted in Swift | Comments Off on Animated Spinning Wait Images for WatchKit

EasyRoute 2.6 Status

Today, version 2.6.4 of EasyRoute was released to the App Store. The fixes are relatively minor, but I’m happy to be fixing minor issues versus having to sweat out potentially large issues.

Last time, I wrote that the big new iCloud feature in 2.6 may have blown up in my face. After hearing from more users and seeing some more data, I think it largely went OK. There ended up being just two reported iCloud problems and a few crashes. The crashes were easy to pinpoint and I got fixes submitted to Apple quickly.

The reported iCloud issues did scare me into adding some safeguards though.

When EasyRoute requests files be put into iCloud, iOS moves these files into the iCloud container, meaning the originals are gone. If iCloud is misbehaving for some reason, your routes will be unavailable. After the initial 2.6 release, I added a fail-safe so if the iCloud sync doesn’t work as expected, you can turn iCloud off and be offered the option to restore your routes from the fail-safe.

This means you can safely attempt to turn iCloud on. If syncing goes bad and the routes are not available, you can turn iCloud off and restore from your fail-safe.

Yes, it’s a workaround, but no routes will get lost in iCloud this way. At this point, I think its an uncommon problem, but I feel better knowing the fail-safe is there.

The most frustrating part of the whole thing was having users with problems I couldn’t reproduce. iCloud syncing works beautifully with my devices (the “works for me” problem) and, if anything, I thought the routes would be safer in mirrored into iCloud than just stored on the device.

As I said, there were only two reported problems, if you turn iCloud on and have problems, let me know.

Posted in EasyRoute | Comments Off on EasyRoute 2.6 Status

A Bad EasyRoute Update

Time to face the music.

On Monday, my iCloud update for EasyRoute was released. This was my longest release cycle for a lot of reasons and I actually sat on this release for a few weeks after I thought it was ready, just to be sure.

Unfortunately when I finally released it, I got reports of routes disappearing. To top it off, even new routes would disappear.

I have a theory as to why this is happening, but I certainly didn’t see it coming.

There are two things that happen when you first launch version 2.6. First it turns the routes into documents, then, if iCloud is enabled, moves those documents into the app’s iCloud container (really just a special directory) for syncing. Once in the iCloud container, they should get synced to Apple’s servers and to your other devices.

Well, unfortunately it seems this sync can go the wrong way and wipe the container. The fact that even new routes get wiped out shortly after being created supports this theory. I’m guessing the initial move to the container is wiped out, and since iCloud insists the “truth” is that the container is empty, keeps removing anything else put there.

I saw things like this happen when trying to sync the old data store (which was Core Data). It would seem to be alright, but often there would be a bad sync and data would be lost. This is the main reason I moved away from Core Data, because I just couldn’t make the iCloud sync work reliably. When I tried this with documents, it worked great. Also, the routes-as-documents approach is much more straightforward. I think the result is much cleaner.

So, upon learning of the syncing problems, I reviewed everything. I checked with some of my testers, but was unable to reproduce it. I had no choice but to disable iCloud-by-default and try and get a new release out as fast as possible.

Luckily, despite my request for an expedited review being denied, version 2.6.1 got through the App Store the same day. The problem isn’t fixed, but it is sidestepped and hopefully, at some point, it will occur to me how to eliminate it altogether.

So, the option is still there in the Settings App, but off by default. I wish I knew exactly how many people the sync fails for, but getting 2 reports in the first day is enough for me to say it’s not reliable.

Finally, I feel terrible that this happened…

EasyRoute isn’t my day job, it is my labor of love. I created it to fit my own needs and it’s been fun adding features and tweaks for cyclists, walkers and even motorcycle riders! (I definitely wasn’t thinking motorcycles when I started this.) There’s been lots of response from all over the world and it’s been fun getting to know my users. Now, I feel like I let everyone down. My name is on this program and until yesterday afternoon, I was quite proud of how it had come out.

So, to anyone having issues, I’m deeply sorry.

If there are still any problems with 2.6.1. Let me know, I’m listening. My contact page is the best option as I see messages left there right away.

Posted in EasyRoute | Comments Off on A Bad EasyRoute Update

An EasyRoute Update for iCloud

Version 2.6 of EasyRoute was approved and released by Apple today! The big new feature is iCloud syncing.

In order to sync your routes across your devices you only need to be signed into iCloud. That’s right, all the syncing is done behind-the-scenes for you. This means if you create a route on your iPad, it should be available on your phone. (This is the case I see being common — making a route using the larger iPad screen and then having it available on your phone.)

There are some other smaller fixes, but the iCloud stuff kept me busy enough, so I didn’t want to introduce too much else in this release.

The best thing is, the internal changes required for iCloud also helped set the stage for some cool stuff I have planned for future releases, so stay tuned!

Posted in EasyRoute | Comments Off on An EasyRoute Update for iCloud

EasyRoute News and Status

Since I’ve been in radio silence here on CodeAndRun.com for a while here, I figured I’d post a little news and a quick status update.

DC Rainmaker

First off, EasyRoute was mentioned on DC Rainmaker! I’m a long-time reader so it was really fun to see Ray using it. I had reached out to him some time ago just to let him know that EasyRoute existed. It appeared in his “Week in Review” posts when he used to post screenshots of app updates, but I didn’t know it was his favorite route planner! Thanks, Ray!

In the Pipeline

This has to be the longest I’ve gone without some kind of feature update for EasyRoute. I was on a nice cadence of getting something useful out the door every few weeks, but I’ve gotten stuck on something big. Sitting on a major update and releasing it after a long period of no updates is exactly what I try to avoid, but once I become unstuck, I expect to be able to make a number of releases with some nice features as the log jam clears up.

To elaborate a bit, the next feature is iCloud support. Basically, if you make a route on your iPad, it is available on your phone too. There were a number a behind-the-scenes changes I needed to make and it they were more extensive than I planned for, but I’m much happier with the new design. Actually, iCloud was something I had planned for from the beginning, but without getting into technical nitty-gritty, my original design didn’t work out.

While I’m on the topic of my next release, I wouldn’t mind taking on some additional beta testers. Drop me a note on my contact page if you’re interested.

Posted in EasyRoute | Comments Off on EasyRoute News and Status

Importing GPX into EasyRoute

I just received a message through my contact page asking about EasyRoute’s GPX import feature. Unfortunately, my reply got bounced back to me, so I figured I’d address it with a blog entry in case anyone else was confused about it and hopefully the person asking about it will return here and find the answer.

EasyRoute is registered as being able to open GPX files which means another app needs to offer it to EasyRoute. For example, if your GPX file is a mail attachment, EasyRoute will show up in the mail app as being able to open it.

If your GPX info is in another app, EasyRoute will be available through the that app’s export or share feature. (A box with an arrow pointing up out of it seems to be the universal icon for that these days)

If the GPX file is not on your device at all, just e-mail it to yourself.

As you can see, I make every effort to reply to all messages regarding EasyRoute.

Posted in EasyRoute | Comments Off on Importing GPX into EasyRoute

Race Report: John Theissen Children’s Foundation Freaky 5k

This was a fun morning!

The Freaky 5k benefits the John Theissen Children’s Foundation, and John himself was the race director. John is a runner too so he promised a well-organized, on-time race and he certainly delivered.

As promised, the race started at exactly 8:30am. The course was through a neighborhood with lots of twisty roads (that is easy to get lost in) but it was obvious that care was taken to make a route with as many straight portions as possible. You can see it in my Garmin Connect activity.

There were water stops and mile-markers as you’d expect, but as an added bonus for Halloween, there was candy too.

Another pleasant surprise was the raffle. Sometimes at these races, the raffles can drag on as they draw numbers for numerous prizes and are often not matched well to the tastes of the winner.

Here is how John’s raffle worked: you put your ticket in a bag corresponding with the prize you want. The drawing is conducted during the race and you simply claim your prize afterward. If you win, you win the prize you wanted and you don’t have to stand around for half the morning outside on a cool, windy October day in your sweaty running clothes. So simple, it’s genius.

Since it was a Halloween-themed event, there were plenty of costumes. Check out the pictures. I didn’t wear a costume per se, but thanks to an UnderArmour Batman shirt and matching shorts, I was able get into the spirit while still being ready to perform.

There is a picture of me, but I’m warning you, it’s gross. When I run, my nose runs too. I’ve gotten to the point where I don’t even notice it anymore, but it makes for pretty a disgusting picture. Here’s the picture, you’ve been warned.

My appearance was the last thing I was thinking about there. I was simply beaming with joy having set a 5k personal record! Sure, for lots of people a 6:54 min/mile pace in a 5k isn’t anything to brag about, but I’ve come tantalizingly close to breaking that 7:00 barrier so many times that it was awesome to finally knock that goal down. After an injury earlier this year, this was the first 5k I really felt ready for.

This was my first time running this race, although I’ve registered for it before and had to back out for some reason or another. I’m glad I finally got to run it. It’s got a permanent place on my racing calendar now.

Posted in Running | Comments Off on Race Report: John Theissen Children’s Foundation Freaky 5k