Sunday, August 21, 2016

It Should Have Just Worked

Out of the Dark

I was looking at my blog today and I realized I have been slacking off a bit when it comes to making updates.

So I am going to correct this.

First, What have I been doing?

Well, between working my regular day job, my two main side projects, family, and just life in general, there hasn't been much time for blogging.

With this post I intend to do the following:

  • Update my status on my side projects
  • Identify future topics
  • Document my latest "eureka" moment. (More of a "duh" moment really)

Pain Logger

Pain Logger is my main mobile app.

I have two versions on Apple's app store, a free version, with limited functionality, and a paid version.

Both apps were written in Objective-C and I have been extremely busy rewriting the paid version entirely in Swift.

If I had to choose to do this over, I would have advised myself not to rewrite the entire app.

But, here I am, and I am finally starting to see the light at the end of the tunnel, or the on-coming train, I'm not sure which.

I'm still struggling about what to do with the free version and how to or if I should merge the two code bases.

be

Be (we actually spell it with a lower case 'b', don't ask me why, that was the CEO's idea) is an application I have been working on with a small team for the past few months.

We are still in the prototype phase.

I am primarily responsible for the server side and the web client.

We are still a ways off from release, but things are moving forward and I have learned a lot from the project.

My latest effort on this project has been building an administrative portal and separating the web client from it's integration with Rails' sprockets.

Future Posts

With football (that is American Football for those outside the US) season rapidly approaching, to say I will be distracted is an understatement.

But I figure, I can do a lot of blogging while watching football.

Over the next few weeks I plan to talk about the following topics/experiences:

  • How I implemented theming in Pain Logger
  • The sync solution I used for Pain Logger
  • My experience in converting 'be' to a NodeJS build tool chain from Rails sprockets
  • The homegrown 'Flux' implementation I used for Pain Logger

My latest hurdle

Finally, I want to talk about one of those 'duh' moments I had recently.

You know the story, you find a problem, you look at your code, you say to yourself 'this couldn't possibly failing', yet it is.

So here goes.

One of the new features I am adding to Pain Logger is support for GeoFencing.

Yeah, if you are thinking to yourself this crazy idiot just said he was rewriting his app in Swift and now he is also adding new features at the same time, HAS HE LOST HIS MIND!!!!???

You would be right.

In fact this isn't the only new feature I am adding to Pain Logger.

Looking back now, and recognizing I still haven't got the update out, is a pretty good indicator this was A VERY BAD IDEA.

Anyway, I digress.

It was fairly simple to get Geofencing going, from a coding point of view but testing was something different.

When I first deployed it on my iPad everything was fine. It worked perfectly, but on my iPhone, it didn't work. What!?

I tried a TON of different things, including deleting and reinstalling the app, turning cellular data on and off, and changing any setting I thought that might possibly be affecting this on my phone.

But to no avail.

I can't even begin to enumerate the amount of logging I added to the app to see what was going on.

No matter what I tried, my iPad (wifi only) would work, even when I wasn't connected to a network, and my cell phone, which is always connected, would not.

So I began 'googling'.

Eventually, after spending a lot of time on Stack Overflow I took a different tact and said 'If I was a user having this problem, how would I search for an answer?"

I really thought I was headed to the "Genius" bar.

That line of thought led me to an Apple support post and the ultimate solution.

It turns out there was one more setting (shocking I know :-/) that I hadn't changed nor had I run across.

It is found under Settings->Privacy->Location Services->System Services.

You have turn on Location-Based Alerts.

One of the reasons this was so hard to find for me was that the "System Services" option is found at the bottom of the list of ALL of the apps you have installed.

One would have thought a standard option that is never removed would have been found first in the list, but nope.

Yeah, it makes sense now, and how this setting ever got turned off, I'll never know but another speed bump overcome, even if it was stupidity on my part.

Till next time.