Cloneder is moving to AppOrchestra

After a beta launch under the Software Engineers Toolbox name, and a hiccup with Facebook announcing the shutdown of the managed Parse.com service, Cloneder is now ready for prime time under the new AppOrchestra brand at https://apporchestra.com/cloneder At the same time we will be moving the Git repository from BitBucket to GitLab.  Details on how to migrate your repository are at https://www.apporchestra.com/post/gitlab-migration/ Along with the move to AppOrchestra is increased resources available for hire if you want to outsource the customisation work, server and app store deployments to...

Performance of Cordova/Ionic/PhoneGap. When Is Slower Fast Enough?

It always annoying having to do the same piece of work twice, so the ideal of ‘hybrid’ mobile apps where most of it is built using standard web technologies and can run on both Android and iOS (and more) sounds like a great way to go. But as you might know hybrid apps have sometimes had a bad rap because mainly because of performance and to a lesser extent Cordova (along with other cross-platform mobile technologies) having their own quirks and issues. Hybrid apps will always be slower than native apps, there’s no way around the extra overhead of rendering with HTML5/CSS/JS. And for a long time that has an issue with the limited CPU and memory on smart phones. But now it’s 2015 and new phone are packing faster quad CPU cores and 3GB of RAM. Also the faster GPUs can perform animations using the appropriate CSS3 styles. One of the main reasons of having the demo of Cloneder on the is so you can test the performance of the app yourself and decide if it’s fast enough and provides a good enough experience for your users. Faster Sooner! So what will make Cloneder and other hybrid apps run faster? While the state-of-the-art in JavaScript engines and HTML rendering has been developing at a solid pace, most Android phones are stuck with the WebView that it came with.  And the default iOS WebView has been lagging behind to, so older phones are at a double disadvantage, but not for long… When building Android apps there is already the option of using Crosswalk which bundles in the latest Chrome (actually referred to as...

Account creation failure root cause analysis

A few people reported to me they couldn’t create an account in my app recently.  After updating the Cloud Code to having more logging I saw the error. {"code":206,"message":"Parse::UserCannotBeAlteredWithoutSessionError"} This was happening in an afterSave hook on Parse.User, which was saving the user object again with an additional property. It seems the new Parse Session functionality (see http://blog.parse.com/announcements/announcing-enhanced-sessions/) has added this restriction in the cloud code. The solution was to use the master key by calling Parse.Cloud.useMasterKey() before saving the user...

Cloneder page move

The Cloneder tinder clone app source code is now here: http://engineerstoolbox.com/tinder-clone-source-code/   Update: Cloneder is now at http://apporchestra.com/cloneder

Cloneder Beta build available

Thanks for your interest in Cloneder, a Tinder clone built with the cross-platform mobile stack of Ionic and using Parse as the initial backend. It’s taken a little longer than I’d hoped to get this update and a feature complete demo out, but being on the cutting edge of hybrid mobile tech there was a few issues to sort out.   Ionic has come a long way and is more than just a bunch of CSS and JavaScript, and is becoming a full hybrid mobile platform. The Hybrid/HTML approach has always been an nice idea for mobile apps, but only now has it really come of age for serious apps with the Ionic platform and open-source codebase. Check out all the latest updates to Ionic at http://ionicframework.com/blog/ionic-one-year-review/   To give you more idea of what has gone into putting the app together, I went through three different multi-range slider components, which is just used to select the age range in the search preferences.   The first looked the nicest, but later decided to look again for something different as it had a dependancy on jQuery which I wanted to avoid if possible. jQuery also caused an issue with the image cropping plugin, which I was able to code a workaround for at the time.   The second had a dependancy on ngTouch, which turned out the be the source of some issues and found it’s definitely not a good idea to include (see http://ionicframework.com/blog/hybrid-apps-and-the-curse-of-the-300ms-delay/)   The third had no dependencies, but the CSS style names conflicted with the Ionic styles. So with a small change to the CSS it was a suitable...