Been absent

I disappeared for a while, had to pay the bills and got myself a job as an iOS developer in Lausanne, which also involved moving. The last 8 months have been quite a ride, and I’ve had no time to put into the Reality Augmenter. I’ve had an update in the works for near a year now, but I haven’t looked at the code since the end of last year. Not only do I have to still fix quite a few UI problems with the update, I’ve now got SDKs to upgrade, and adapt to new ios versions.

Now I’ve moved and I’m more properly settled in, I might be able to spend a bit of time on the app again, and get these features I’ve wanted finally finished. The app hasn’t been forgotten, I can’t make any promise on when a new version will be available, but I don’t intend to let it rot.

Development update

Well it’s been a while since I posted here. Still been struggling with iOS 11, apple fixed my core data issues, or rather, they added a new option without really telling anyone they have to use it, and buried it’s scant documentation in a .h file. But it’s sorted, only took a month.

TBH, there seems to be a lot of updates, and the documentation is very poor. We used to get change logs for every class and framework, but that no longer seems to be the case. I might have picked up my problem if the change logs were still issued, but as it was, Apple just added a new vital option and acted suprised when not everyone had gone through every .h file in the system and couldn’t figure out this new feature.

I was not alone in this, I even raised a code level support issue with Apple, where they’re supposed to help you out fixing bits of code you can’t figure out, and whoever got assigned to help me from Apple couldn’t figure it out so they refunded me the support call (we get 2 per year as part of the license).

So, anyway, after finally getting a curt reply on my bugs, I get my app working in iOS11. Yay! Immediately check things are ok by running my tests, and a good bunch of them fail, what’s happened now? Not that many changes in iOS11 affect my code! how can this happen? Well, the new iOS simulators can’t do openGL very well, the simulators run at a snails pace and everything keeps timing out, causing all my fails. Ugh.


Start looking into that, and hooray! the new XCode beta fixes it! I go to install that, and…… it just stops calling the entry points to my openGL code, nothing renders! Another bug, not as catastrophic yet as the previous one, it runs fine on devices on the current version of iOS11, but it puts a bit of a dent in my automated testing. I’ve said it before, but surely this one can’t fester, there must be a thousand and one games using openGL, I await news with baited breath.

Anyway, all this set me back another couple of days, it’s very frustrating, I don’t like having to create example projects isolating bugs for Apple when I should be writing my own stuff. Back to trying to put my new UI changes in place, more soon.

iOS 11 Development Woes – Core Data Transformable Attribute Bug

I had to issue a warning for iOS 11, currently a serious bug in core data prevents my app from being used, and while trying to deal with it, it shows some serious problems with Apple’s developer support.

As with most things, I started blaming myself, I thought I’d made some error in the code somewhere so started out with a clean XCode project and tried to replicate the problem.

With the default Core Data setup, everything was working fine.So I spent many hours pulling my hair out till I identified the very specific problem causing my bug. And oh boy is it Apple’s fault, clearly documented supported feature not working. Reproducible in an XCode project barely modified from one of their templates.

I put the project on Github.

During all this I used the Apple developer forums, which are practically dead, my initial question brought no response, hardly unusual for apple dev forums, I always have better luck with stack overflow.

The question on Stackoverflow.

At least on stack overflow someone else confirms the problem, and gives some useful feedback, unlike the Apple dev forums, which have been almost zero help for me in the past apart from one openGL problem some kind Apple guy fixed for me.

After identifying the problem I raise a Bug Report with Apple, and this is where things get really frustrating. Apple do not ever acknowledge receiving bug reports, has it been looked at? I don’t know, has it been buried somewhere? Apple will not give any status.

I desperately need to escalate the bug, as all my users could lose their data, I call that a major bug. But there’s no way to contact dev support. They have a facility to get in depth code support, but guess what, pre release software is not supported, there’s support centres for your standard apple products, but no facility to contact Apple dev support. Apple reps are supposed to roam the Dev forums, but seem to studiously avoid commenting on any bugs users find.

So now I’m here getting increasingly worried, I keep trying to raise my question to the top of the dev forums, I tweet at Apple, I complain on the dev forums, my complaint gets moderated. This is a major issue for me, my app is well liked by users and Apple is going to wipe it off the store because they can’t fix a bug.

Even if I remodel my database to not use the supported feature, I still can’t open the previously supported and working datastores to migrate them. Even if I do it’s a huge amount of hassle to avoid using a supported feature!

Ugh, I’m working on solutions… More soon.

Version 1.16 Out

Hope you all like the new update! I untethered you from the projector. The lock screen seemed like a good idea at the start, partly because I didn’t know how Apple would deal with my app for review, and I wanted to make it clear what the app did, and how it wouldn’t really work without a projector.

It does a lot more now than just simply projecting videos that it makes sense to be able to work without being connected to the projector, also I kept getting frustrated trying to show the app to people being interested in it, and not having a projector handy. Another issue is that people are buying it, and I’m so glad you are, and I it makes me feel apple will take it a little bit more seriously. The Reality Augmenter is a continually evolving app and I would love to hear your feedback BTW.

The layer geometry screen still needs some work, I’ll change it so you get full animation when not connected to the projector in the next couple of weeks. Currently it is still geared towards having the projector, and is deliberately low resource to draw quickly when connected and interfer as little as possible with the projected view. Obviously, if no projector is connected, that’s not an issue, just redoing the OpenGL for that part was going to need a rethink, and I figured you’d still like the new feature.

Testing development completed and new version now out

Well it took a while but I finally completed testing development, not that such a thing is always complete, but now my app is covered by many, many more tests. Split into UI and unit tests, it should cover nearly all the functionality of the app, meaning I’m less likely to forget some aspect of my app before releasing to everyone.

This all became necessary as my app grew more and more complex from it’s initial basic functions, and I have even more complex features to come, it’s important that all the basics work with every release, and as a developer, I’m always more excited about my new features and it’s easy to forget some of my earlier work!

You can see my automated GUI tests in this video, covering nearly all the functions available to the user tested in various ways. The video has been sped up 3x as the full GUI test run currently takes about 1/2 an hour.

I’m already working on the new version, I’m going to get rid of the lock screen that blocks access to the app without a projector connected. There’s so much more we can do without the projector now, it seems unnecessarily inconvenient. It’s a little more work than expected, the app has to respond to a projector being connected and disconnected in many more states, and how it reacts in each situation has to be considered.

Check back for more updates!

Testing continues

XCode screenshot

Testing continues, after finally getting my testing environment in a good state, I’ve added over 100 tests in the last week alone, significantly increasing code coverage.

I reckon I’ve probably got a week left to cover the rest of the code and we can get releasing new features again.

All this is necessary as I gain users, I want to ensure you all get the best product you can get, and that I don’t accidentally break features you use. It will also cut down time between releases as each change catches potential bugs at every step.

It’s been quite a big job, as well as setting up an automated environment, I’ve had to do quite a bit of code refactoring to expose more of the application to proper testing standards.

Testing, testing, testing…..

I’ve been updating my testing environment to automate as much testing as possible, to eliminate simple bugs that have slipped through in the past, and make sure new features don’t interfere with existing functionality.

However, this is turning out to be a bigger job than I imagined, not so much writing the tests, but getting XCodes development environment work in tandem with the iOS simulator to setup different scenarios.

I’ve recently discovered simctl, which allows setting up custom simulators and adding media to a simulator, this is very useful as the default iOS simulator contains no videos to test with, and it used to require adding one manually, which is useless for automated testing. Now at least we can create simulators through the command line with preconfigured media, allowing me to better test videos for example, so that’s progress…. But I still have to remember and resurrect my command line and scripting skills, which have long been neglected. It’s been slow progress.

I run into other problems too, starting with what data the app starts with, what user defaults have been set etc, basically to replicate the app in any state and test it properly, none of it is easy to setuup in xcode and requires some rather ingenious hacks.

All in all, writing the tests is supported well in xcode, setting up the test environment is less than ideal though. I’m plodding through it, the next release will contain some minor bug fixes, then we’ll get stuck into some big new features.

No posts for a while

Uhm, haven’t written anything here for a while, the last update seems pretty stable so in the run up to christmas I’ve been winding down a little. I’ve been improving testing, but nothing really significant has turned up so far, I’ll be improving the testing environment over the next couple of weeks to prepare the ground for more updates in the future. I doubt I’ll get a significant update out before Christmas so that’s it for the year, but plenty of new stuff to look forward to in the new year!

Latest update delay

Well, combination of things, summer’s been around so I’ve been taking a few days off by the lake, and I also went to the Zurich Open Air festival to see a bunch of bands I wanted to see for ages.

On top of that, I’m learning all about how to use web based APIs to add some functionality (you’ll be able to directly download vids from dropbox), it’s all a bit unfamiliar at the moment as I’m not dealt much with web based queried and JSON, but I’m picking it up quick, still I run into some unexpected problems here and there.

Rest assured, a new release will be released as soon as it’s ready, hopefully in the next week or two.