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.
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.
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!
After working hard to put the last release out, I’ll be working on tweaking my online presence and improving marketing for the next couple of weeks.
There’s still a bunch of new features to do so there will be updates in the near future!
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.
I’m working on some new features, but it’s in an area I’m unfamiliar with, so I’m having to do a bit of learning and been down a few blind alleys. Once I get over the first hurdles I’ll be back in familiar territory, new updates soon.
EDIT: Further to this, I finally figured out how to get my OAuth tokens and am now figuring out the whole web APIs and JSON stuff for online cloud services. I found getting the token to be very confusing and poorly documented, but once I got access, using the APIs seems much simpler.
Been a bit quiet the last couple of weeks haven’t I? Took some time off for the local Blue Balls festival here in Luzern (That is the real name, I’m unsure if the swiss were aware of the double entendre…).
Anyway, back to work this week and working on a new feature which should be pretty exciting, keep checking for updates!
OK, so I’ve come up with a workaround to the orientation of videos filmed on apple devices, we can apply the rotation when the video is played (Which was already happening with portrait videos). This isn’t as good as converting the video to the correct orientation as additional real time processing is required. I will continue to look into the problem and see if I can raise a bug on it, or find a more effective workaround.
Next release should be out in a few days.
Ugh, now I’m having troubles with importing non standard orientation videos detected while testing the next release. The AVAssetExportSession is giving me memory problems and crashing the app when I try to correct the orientation for videos filmed on Apple devices, works great for any normally orientated video… I’m finding a workaround, but the release is delayed.
I’ve removed the standard UIImagePickerController to let users pick photos and videos from their camera roll, and while it functions pretty well at that, it had the annoying habit of automatically displaying videos and images on the external display, for my application, this is undesirable, as we’re already using the secondary display for our own purposes.
So I decided to build my own copy of the picker controller, fairly simple to do using the photos framework, a table view, a collection view and some views for displaying videos and images. But then I ran into trouble again with the AVPLayerViewController I was going to use so the user can check the video before importing. While it presents properly at first, there’s a full screen icon that can be selected and again, the video takes over the external display. It’s possible for the AVPlayer object you associate with the controller to disable external playback, but the view controller ignores this setting, very frustrating.
So I’m going to have to build my own player, really not that difficult, but will involve creating some icons, more code, time and testing, when all I really want is a facility to disable the automatic takeover of the external display.
I submitted a bug to Apple about it, but I don’t expect them to move quick. Obviously the AVPlayerViewController was designed to be easy to plug into your app, but the over simplification of the use case is annoying, if you have an external display connected, then you must want the video displayed on it. I guess with the recent addition of Picture in Picture, Apple simply only see special cases where more than one video could be played at once.
Anyway, couple of days delay, but the next update is coming along….