Angus Fox - @nuxnix
CTO, Piota, @Piotasocial, http://www.piota.co.uk
Director, @Multizone, http://www.multizone.co.uk
Secretary, Social Developers London, @socdevlon
https://uk.linkedin.com/pub/angus-fox/0/b16/457
LondonTitanium User Group
9 June 2015
Background Objectives Solutions Challenges
Conclusions
Questions /
Discussion
Zendesk
ticket
giveaway
 Multizone is an award winning software company providing
 CTO-to-go and mobile app development services for startups and
enterprises working in mobile, social, collaboration and eDiscovery
 Product management using talented community specialists for
development
▪ FirstAutomatedTest system for native phone apps 2004, Symbian)
▪ Our first Mobile Back End as a Service (MBaaS) built in 2008 on Appcelerator
▪ First MBaaS on the UK governmentG-Cloud supplier list
 Piota, is a privately funded early stage startup based in London.
 Idea genesis in 2014
 Piota required native mobile apps for the Education sector.
 Need to scale to support thousands of individually branded mobile
apps each supporting hundreds of users
 First app published December 2014 to App Store and Google Play
 Three dozen now in the stores, not all production yet
 App has to be better
than good
 Don’t build an app that
loads foreign content like
HTML or PDF
 Don’t build a web site on
a phone
 Do make it disruptive
 Do get the right team
 Do build the right
features (that’s the art of
product management
bit)
App Screens
 Home
 News
 Events / Calendar
 Info
 Contacts
 Push notification
 Forms
 Surveys
 Any item can be a push
notification
 Push goes via
Appcelerator cloudAPI
endpoint, mapped to
Apple and Google push
API
 Custom code runs as a
cron job
 And, yes, it does work on
an AppleWatch
 Why Joomla?...
 Stable & Secure
 Mobile Friendly
 Great to develop on
 All the good stuff there...
 OO & MVC
 jQuery
 Bootstrap
 Huge time-saver compared to writing from
scratch, provides many required features out-of-
the-box
 Uses Joomla! Front-end
 EachApp back-end has a separate Joomla!
install
 One custom template, branded per App
 Visually customised to match look & feel
 Extension for structured data - FieldsAttatch
 Extension for json RESTful API - jBackend
 Load of other glue we wrote
 Use as much of the
core functionality as
possible
 Keep the number of
extensions low
 Make the template
adaptable and
responsive
Paul Ryan, Angus Fox, Bronwyn Goodwin, Andy Gaskell
Not as illustrated 
So we made Apps...lots of ‘em
 Founder, Intensely involved
in school governance, Likes
Apps,Wants to build a
business
 CTO, 30 years in Product
management at Oracle,
Microsoft, HP, Startups
 App Dev: General + UI +Web
 App Dev: General + CI/CD
Delivery
 Web Dev: PHP, JavaScipt,
CSS etc
 Sales and Marketing
Director: Experienced in
education apps
 All remote
 Assembla + Skype, little or no
email
 Weekly conf call – ticket
review
 Monthly meetings
 2 week development cycles,
mostly
 Front end and back-end
working closely
 agile but not Agile
 Auto prioritisation of the
work – no surprises
● simplify development processes for adding new schools via
task automation
● daily builds of app using Continuous Integration (CI)
● automate workflow of app release to beta testers (cross
platform)
● automate workflow for all provisioning steps, including push
notification on ACS
● change app structure to use dynamic data rather than static
configuration
● provide a customer sign up and configuration process
JavaScript
Calabash
Xcode
● App uses single code base with
multiple themes
● Grunt task runner loads correct
tiapp.xml and config.json
● tiapp.xml node package used to
inject common values
● Grunt tasks use same
convention to aid ease of use
o grunt build:school:android,
o grunt build:school:ios,
o grunt build:school
o grunt build
o grunt test:school:android,
o grunt test:school:ios
o etc.
Assembla is used as
Source Code Repo and
Project Collaboration
Tool
Go Server used as CI
server
Merge/Pull request
approvals in assembla
trigger builds on the go
server
● Google PublisherAPI used to deliver .apk
updates, screenshots and meta data updates.
● Screenshot production automated with
Grunt.
● Release to beta track on playstore
● Google Plus community used for alpha
members (invite only)
● fastlane tools used for
iTunes Connect (ITC)
automation
https://fastlane.tools/
● provisioning profiles
created/updated on the fly
using fastlane/sigh
● screenshots created using
fastlane/screenshots and
instruments
● updates can optionally to
testflight release
● cloud enable new ti apps from command line
● fastlane/pem used to automate push
notification certificate creation
● phantomjs/casperjs used to add push
certificates to app on ACS
● App changed to reduce static config settings
with dynamic data
● Appropriate fallback to maintain user
experience
● Give customer facility to choose (limited)
colours and icons
● Generate alloy theme on the fly and apply it
at build time
● Apple and Google regulations for what can
and cannot be automated
● Testflight switch off /Testflight on iTunes
Connect (ITC)
● Appcelerator 4.0 / Platform changes
● Maturity of third party solutions
● Target environments not static
 Initially running on shared hosting, ok for 30
back-ends.
 Moved to a ManagedCloud Server
 New backends created from a backup seed
file.
 Scripted deployment
 A reliable and automated CI build system is
very complex to create
 ManyApp submission related tasks are not
easily automated
 iTunes submissions still get rejected for
random reasons
 Android fragmentation is not really an issue
 App stores don’t really want you to automate
 Develop with the future in mind
 Try not to accumulate technical debt
 App developers are not back end developers
 Ci / Cd is a specialism
 Users are typically quite non-technical, so
keep UI simple - things need to “just work”
 Write a good base API and evolve it
 APIs are just awesome
 “Shell” scripting in JavaScript / Node.js is
quite nice actually
Presentations are available from Slideshare
Slides
http://www.slideshare.net/nuxnix
Commercial Hackathon
Possibly 25-26 July – London - PAID
email me : angusf@piota.co.uk
King's Place, LONDON, UK
https://www.eventbrite.co.uk/e/the-art-of-customer-satisfaction-2015-london-
tickets-16893983359
Email me

Building a scalable app factory with Appcelerator Platform

  • 1.
    Angus Fox -@nuxnix CTO, Piota, @Piotasocial, http://www.piota.co.uk Director, @Multizone, http://www.multizone.co.uk Secretary, Social Developers London, @socdevlon https://uk.linkedin.com/pub/angus-fox/0/b16/457 LondonTitanium User Group 9 June 2015
  • 2.
    Background Objectives SolutionsChallenges Conclusions Questions / Discussion Zendesk ticket giveaway
  • 3.
     Multizone isan award winning software company providing  CTO-to-go and mobile app development services for startups and enterprises working in mobile, social, collaboration and eDiscovery  Product management using talented community specialists for development ▪ FirstAutomatedTest system for native phone apps 2004, Symbian) ▪ Our first Mobile Back End as a Service (MBaaS) built in 2008 on Appcelerator ▪ First MBaaS on the UK governmentG-Cloud supplier list  Piota, is a privately funded early stage startup based in London.  Idea genesis in 2014  Piota required native mobile apps for the Education sector.  Need to scale to support thousands of individually branded mobile apps each supporting hundreds of users  First app published December 2014 to App Store and Google Play  Three dozen now in the stores, not all production yet
  • 6.
     App hasto be better than good  Don’t build an app that loads foreign content like HTML or PDF  Don’t build a web site on a phone  Do make it disruptive  Do get the right team  Do build the right features (that’s the art of product management bit)
  • 7.
    App Screens  Home News  Events / Calendar  Info  Contacts  Push notification  Forms  Surveys
  • 8.
     Any itemcan be a push notification  Push goes via Appcelerator cloudAPI endpoint, mapped to Apple and Google push API  Custom code runs as a cron job  And, yes, it does work on an AppleWatch
  • 9.
     Why Joomla?... Stable & Secure  Mobile Friendly  Great to develop on  All the good stuff there...  OO & MVC  jQuery  Bootstrap  Huge time-saver compared to writing from scratch, provides many required features out-of- the-box
  • 10.
     Uses Joomla!Front-end  EachApp back-end has a separate Joomla! install  One custom template, branded per App  Visually customised to match look & feel  Extension for structured data - FieldsAttatch  Extension for json RESTful API - jBackend  Load of other glue we wrote
  • 11.
     Use asmuch of the core functionality as possible  Keep the number of extensions low  Make the template adaptable and responsive
  • 12.
    Paul Ryan, AngusFox, Bronwyn Goodwin, Andy Gaskell Not as illustrated 
  • 13.
    So we madeApps...lots of ‘em
  • 14.
     Founder, Intenselyinvolved in school governance, Likes Apps,Wants to build a business  CTO, 30 years in Product management at Oracle, Microsoft, HP, Startups  App Dev: General + UI +Web  App Dev: General + CI/CD Delivery  Web Dev: PHP, JavaScipt, CSS etc  Sales and Marketing Director: Experienced in education apps  All remote  Assembla + Skype, little or no email  Weekly conf call – ticket review  Monthly meetings  2 week development cycles, mostly  Front end and back-end working closely  agile but not Agile  Auto prioritisation of the work – no surprises
  • 15.
    ● simplify developmentprocesses for adding new schools via task automation ● daily builds of app using Continuous Integration (CI) ● automate workflow of app release to beta testers (cross platform) ● automate workflow for all provisioning steps, including push notification on ACS ● change app structure to use dynamic data rather than static configuration ● provide a customer sign up and configuration process
  • 16.
  • 17.
    ● App usessingle code base with multiple themes ● Grunt task runner loads correct tiapp.xml and config.json ● tiapp.xml node package used to inject common values ● Grunt tasks use same convention to aid ease of use o grunt build:school:android, o grunt build:school:ios, o grunt build:school o grunt build o grunt test:school:android, o grunt test:school:ios o etc.
  • 18.
    Assembla is usedas Source Code Repo and Project Collaboration Tool Go Server used as CI server Merge/Pull request approvals in assembla trigger builds on the go server
  • 19.
    ● Google PublisherAPIused to deliver .apk updates, screenshots and meta data updates. ● Screenshot production automated with Grunt. ● Release to beta track on playstore ● Google Plus community used for alpha members (invite only)
  • 20.
    ● fastlane toolsused for iTunes Connect (ITC) automation https://fastlane.tools/ ● provisioning profiles created/updated on the fly using fastlane/sigh ● screenshots created using fastlane/screenshots and instruments ● updates can optionally to testflight release
  • 22.
    ● cloud enablenew ti apps from command line ● fastlane/pem used to automate push notification certificate creation ● phantomjs/casperjs used to add push certificates to app on ACS
  • 23.
    ● App changedto reduce static config settings with dynamic data ● Appropriate fallback to maintain user experience
  • 24.
    ● Give customerfacility to choose (limited) colours and icons ● Generate alloy theme on the fly and apply it at build time
  • 25.
    ● Apple andGoogle regulations for what can and cannot be automated ● Testflight switch off /Testflight on iTunes Connect (ITC) ● Appcelerator 4.0 / Platform changes ● Maturity of third party solutions ● Target environments not static
  • 26.
     Initially runningon shared hosting, ok for 30 back-ends.  Moved to a ManagedCloud Server  New backends created from a backup seed file.  Scripted deployment
  • 27.
     A reliableand automated CI build system is very complex to create  ManyApp submission related tasks are not easily automated  iTunes submissions still get rejected for random reasons  Android fragmentation is not really an issue  App stores don’t really want you to automate
  • 28.
     Develop withthe future in mind  Try not to accumulate technical debt  App developers are not back end developers  Ci / Cd is a specialism  Users are typically quite non-technical, so keep UI simple - things need to “just work”  Write a good base API and evolve it  APIs are just awesome  “Shell” scripting in JavaScript / Node.js is quite nice actually
  • 29.
    Presentations are availablefrom Slideshare Slides http://www.slideshare.net/nuxnix Commercial Hackathon Possibly 25-26 July – London - PAID email me : angusf@piota.co.uk
  • 30.
    King's Place, LONDON,UK https://www.eventbrite.co.uk/e/the-art-of-customer-satisfaction-2015-london- tickets-16893983359 Email me

Editor's Notes

  • #4 Just add water ? Not exactly.
  • #6 Lots of moving parts in an app