Dev Update – 2020-06-30: IT LIVES!!!

Yes master, It’s alive… alive!

Our baseline recompile to 64bit is finished. She lives!!!

Are we done yet? Nope.

But we are past a very big milestone so I thought to blog an update on where we are, what we’ve completed, and what we’ve yet to do.

MacENCx64 Running on Catalina

 

Stuff we’ve completed

The first attempt at recompile 64bit was done before we’d committed to purchase. We needed to prove out a few things:

  1. Do we have all the source code and dependent libraries
  2. How many hard compile errors are there
  3. How many soft compile warnings are there

Turns out the answer to #1 was also the answer to #2. Once we reviewed the parts and were given the missing items, we got through a 64bit build success.

The answer to number 3 was… 597 warnings! Many of which must be ultimately resolved but none were show stoppers.

That resulted in a run time version that had some hard errors but mostly ran. Enough to make the decision to buy.

Bought it! Then what?

Once purchased, we got into the details of those warnings. And we crushed em! Many of them were related to implied integer conversion. This is an issue going from 32 to 64 bit. Example warning, “Implicit conversion loses integer precision: ‘NSInteger’ (aka ‘long’) to ‘int’.”

Other things were from older style function (MacENC started life in 2005… it’s been a while). Example warnings, “This function declaration is not a prototype” and then the associated “This old-style function definition is not preceded by a prototype.”

There were some memset issues too, which I think along with the conversion issues were contributing to a run time performance issue.

The good news is they are all dead little bugs and the resulting app ran ok.

On to the run time issues

  1. Nasty bug revolving around preference file management and saving data on exit (stuff like Charts, preferences, and annotations, that didn’t have an explicit in app save button, would not save on exit).
  2. App fails to query for license key and activation on start up.
  3. Satellite drawer displays no sat data when GPS active.
  4. Scroll and pan performance slow, chart and screen draw slower than 32bit.

Items 1 and 2 were just silly. We had all the code but one key model file was apparently not flagged for build in Xcode. Easy fix.

Item 4 disappeared when all the soft warnings were crushed.

And item 3 we had to dig in and trace it end to end.

Here are a couple pix showing the sat drawer bug and the fixed version:

 

The ravages of time, or, other stuff we had to address.

MacENC 32 had a few features connecting with 3rd party apps or tools which needed to be upgraded or verified. She also had agreements with 3rd party vendors for license to use. All of this needed to be addressed. Here’s a list of where we are and what we got done:

  • MacENC x32 could link to Mr. Tides app to show tides and current data. Mr. Tides has been upgraded to Aye Tides so we needed to re-integrate to the new version. DONE! Thanks and massive shout out to August Hahn, owner and developer, for his support. If you don’t have Aye Tides, go get it here:  https://apps.apple.com/us/app/ayetides/id1455137053?mt=12
  • MacENC x32 supported the Actisense NGT-1 device and rights to use their SDK library. We verified latest SDK, recompiled for 64bit, and signed the NDA with our new company to continue use and support.
  • MacENC x32 could link to Google Earth and pass location data or export KML route/waypoint files and GRIB exports. Revised and verified working.
  • MacENC x32 could link to Apple Maps app and show surrounding topography, streets, satellite views, etc. Verified working. Maps is better than ever and MacENCx64 seamlessly launches you to the current focus. Made it to anchor? Ready to explore on-shore? One click and you are there. Share with your phone and jump into the dinghy. You’re ready to roll.
  • The old Maptech function needed to be deleted since they are out of business. Done.

Original function done. Mostly. What’s next?

We still have one killer bug left that was inherited from macOS Mojave. That’s the Raster Chart display defect. All the other 32 bit level functions are now done in 64bit.

Not only that, but the performance is actually better in some measures than our old girl. Others we’re at parity. So, I can say with confidence:

We are as performant or better than our predecessor.

Old boy scout maxim: “Always leave the campsite better off than you found it.”

Nice.

What’s on our plate now:

  • Fix the Raster Chart defect – Working.
  • Remove links to the old gpsnavx.com site (including for KML exports, icons, gpx exports) – Working.
  • Upgrade the Chart Manager to include new Download Manager function (this is HUGE but soooo important) – Working.
  • Rip out old license activation scheme and replace with new SDK for our new license control partner – Working.
  • Navionics SDK recompile to 64bit – Working.
  • Better waypoint-route assignment function. One of our colleagues in Norway opened a feature request to streamline the route creation and waypoint addition process to reduce mouse clicks. For him, in the Fjord area, the density of waypoints per route are very high. Just too many clicks as you process through a route plan. I totally agree. Maybe we can add an improvement in this MVP release – Working

Those are the last defect/feature enhancements we need. After that we’ll enter Beta testing to help prove out all we’ve done.

 

When, Dave, WHEN!!!

Ok. Quite a few folks have signed up for their free upgrade coupon. Amazing how folks are finding out organically. Not a drop of advertising at all.

But they are all asking.. when!

I really wanted to get this done and in production in time for the coming Caribbean high season. That would mean…

November 30th, 2020.

With all the Covid-19 stuff going on, it’s not sure we’ll even have a High Season this time; but, that’s my target.

So far we are on track. I’ll keep you all posted in the new Dev Notes blog category.

Till next time, happy sailing!

Blog Dev Notes
Previous reading
Dev Update – 2020-09-06: Dead Bugs.
Next reading
Other people’s boats… or how I found MacENC