SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
Building Large Mobile Apps
A Quick Introduction
Me
• Adam Magaña
• Lead Mobile Engineer
• 7 years at Drund
• YSU - computer science grad
• Interested in random things -
baking bread, riding bikes,
backpack enthusiast
Me
Drund
Drund is a white-label communication and
audience-building platform for enterprise
brands.
Allow me to explain…
We provide custom branded apps,
a custom branded website, a full
admin panel, and a metric boatload
of features to our customers.
Some of Our Customers
• Austintown schools
• Boardman schools
• YSU Athletics
• The Cleveland Cavaliers
• And a few others getting ready to sail
We’ve been at this for
a while.
A Quick Drund History
Drund 1.0
• Single sign-on
• Facebook, Twitter, and YouTube integrations
• Netflix and Hulu integrations
• A customizable news reader
• File storage
• Calendar integration
• A quick and simple website publisher
It was pretty cool
but…
We scrapped most of it.
The product needed to be better.
We began revamping our entire project and
started expanding upon our social tools.
Then one fateful day…
“I need you to start
working on a mobile app
for us.”
Okay, let’s do it. But…
A Few Immediate Challenges
• No previous experience writing iOS or Android
apps
• Very small team
• Need to build many features
• Need a working prototype very soon
Here comes Titanium.
Titanium
• Compiles to native iOS and Android
• JavaScript-based API
• Open source
• Native module support
• Better performance than webview-based
competitors
One person with no prior mobile
experience could start creating
apps for both iOS and Android.
No brainer.
Let’s use Titanium.
Mobile Development Starts
This is where the fun begins.
A few man-hours
later…
iOS App Store launch on October 2012
Google Play Store launch March 2013
Initial Launch Features
• Posts
• Broadcasts
• Private messaging
• Profiles
Our Feature List Today
• Live video streaming
• Check-ins
• Pages
• Groups
• Custom user permissions
• Account import tools
• Community statistics
• Member statistics
• Facebook and Twitter
integration
• File storage
• Branded apps
• Announcements
• Polls
• Store
• Auctions
• Events
• Hashtags
• Mentions
• Post/announcement
scheduling
• Private messaging
Just to name a few…
Current Mobile Status
• 4 full-time mobile team
members.
• 22 custom branded apps on
Play Store and App Store
• 3 branded video streaming
apps
• Ongoing transition to fully
native apps
Needless to say we’ve had
to overcome a lot of hurdles.
What helped us get to where
we are today?
Three Challenges And
How We Tackle Them
1. Creating and
Managing Branded Apps
“We need to be able to completely
customize the existing app.
Colors, icons, splash screens…
everything.”
Even after we figure out
how to do it technically
how do we do it feasibly?
We need to be able to…
• Edit brand-specific JSON files en masse
• Generate/render template files
• Render brand-specific icons
• Create whole new sets of assets with relative
ease
• Validate existing assets
We need automation.
Grunt
• JavaScript-based task runner
• Hundreds, if not thousands, of plugins
• Large developer community
• Easy learning curve
• Robust enough for our needs
$ grunt simulate:cavs —platform=ios
$ grunt clean
$ grunt production —platform=android
$ grunt add-brand
$ grunt add-property
Automated most of our workflow with relative ease.
2. Maintaining Good
Code Quality
Large, high priority feature
roadmap
+
Regular maintenance and
bug fixes
=
Limited time for cleanup
Use a code linter - ESLint
Code review everything
Still doesn’t completely solve
the code quality problem.
Need to develop good
habits.
Hit and Run Approach
Android boot file iOS boot file
• Add JS prototype
functions
• Check for credentials
• Open login window if
needed
• Automatically log user
in if needed
• Etc.
Problem:
• Need to add extra logic to boot up process
• Boot up files need cleaned up
• Add JS prototype
functions
• Check for credentials
• Open login window if
needed
• Automatically log user
in if needed
• Etc.
Universal boot file
Ideal Solution:
• Add JS prototype
functions
• Check for credentials
• Open login window if
needed
• Automatically log user
in if needed
• Etc.
Android boot file iOS boot file
• Check for credentials
• Open login window if
needed
• Automatically log user
in if needed
• Etc.
• Check for credentials
• Open login window if
needed
• Automatically log user
in if needed
• Etc.
Prototype utility file
• Add JS prototype functions
Compromise:
Sometimes you can’t do all the
clean up you want to do but you
can and should do something.
Easy to forget that when on a
time crunch.
3. Code Base Bloat
Large code base with
multiple developers
+
Non-stop additions
=
Bloat, yo
Make simple tools and teach your
peers how to use them.
Avoid accidentally making the same
thing twice.
Overlay Tutorials
• Client wants to show a one
time overlay tutorial to new
users.
• How can we break this down
into simple and reusable
parts?
• Expand toolbox
• Avoid writing code that can
only be used for one thing.
OneTimeAction.registerOrCallAction({
actionId: 'feed_overlay',
callback: function () {
// This function gets called only one time.
}
});
One Time Action Module
TutorialOverlay.showTutorialOverlay({
mode: TutorialOverlay.modes.MESSAGE,
permissions: {
canCreateMessages: self.canSendMessage
}
});
Tutorial Overlay Module
Extends Base Overlay Module
OneTimeAction.registerAction({
actionId: 'messages',
callback: function () {
TutorialOverlay.showTutorialOverlay({
mode: TutorialOverlay.modes.MESSAGE,
permissions: {
canCreateMessages: self.canSendMessage
}
});
}
});
Combined Usage
This is by no means
groundbreaking. But when you’re
building and maintaining a lot of
code with others it’s easy to
forget to make and share tools.
Avoid re-making something you
or someone else made.
These recommendations are in
their simplest form.
Lots of other takeaways we
could talk about.
Don’t get discouraged if you
find yourself wrangling with a
large codebase.
We’re looking to grow
our crew!
• Backend/DevOps
• Frontend
• Mobile
• Communications
• Design
Our next meet up and talk will be
April 27th.
“Up And Running With Docker”
by Mark Beacom
“Building and Refining Features
For Android and iOS”
by Aaron Womer
and Mike Donahue
Thanks for coming!
Q & A

Mais conteúdo relacionado

Destaque

Russian artist Alexei Savrasov, "The lyrical landscape artist"
Russian artist Alexei Savrasov, "The lyrical landscape artist"Russian artist Alexei Savrasov, "The lyrical landscape artist"
Russian artist Alexei Savrasov, "The lyrical landscape artist"Makala (D)
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript - - MeeGo Confere...
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript -  - MeeGo Confere...Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript -  - MeeGo Confere...
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript - - MeeGo Confere...Raj Lal
 
Systematically moving to mobile government excellence
Systematically moving to mobile government excellenceSystematically moving to mobile government excellence
Systematically moving to mobile government excellenceTom Voirol
 
Smart Government or Mobile Government
Smart Government or Mobile Government Smart Government or Mobile Government
Smart Government or Mobile Government Malek Al Haddad
 
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...Aleyda Solís
 
The new approach on government mobile apps development
The new approach on government mobile apps developmentThe new approach on government mobile apps development
The new approach on government mobile apps developmentIMC Institute
 
10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile AppsWhalla Labs
 
Mobile App Marketing: The Ultimate Guide to Success
Mobile App Marketing: The Ultimate Guide to SuccessMobile App Marketing: The Ultimate Guide to Success
Mobile App Marketing: The Ultimate Guide to SuccessPappas Group a DMI Company
 
Somen & Facebookin perusteet Avot-hanke
Somen & Facebookin perusteet Avot-hankeSomen & Facebookin perusteet Avot-hanke
Somen & Facebookin perusteet Avot-hankeRedesan Oy
 
інклюзивна освіта1
інклюзивна освіта1інклюзивна освіта1
інклюзивна освіта1irinabodnya
 
Mobile Metrics 101: Everything web marketers need to know about app analytics
Mobile Metrics 101: Everything web marketers need to know about app analyticsMobile Metrics 101: Everything web marketers need to know about app analytics
Mobile Metrics 101: Everything web marketers need to know about app analyticsLocalytics
 
تسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابتسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابغايتي الجنة
 
Are your pictures worth 1,000 words? (Eric Beteille)
Are your pictures worth 1,000 words?  (Eric Beteille)Are your pictures worth 1,000 words?  (Eric Beteille)
Are your pictures worth 1,000 words? (Eric Beteille)Eric Beteille
 
Ibra trai qua
Ibra trai quaIbra trai qua
Ibra trai quabongda100
 
Overcoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing AutomationOvercoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing AutomationPardot
 
Encuesta nacional Cifras y Conceptos Canal Capital
Encuesta nacional Cifras y Conceptos Canal CapitalEncuesta nacional Cifras y Conceptos Canal Capital
Encuesta nacional Cifras y Conceptos Canal CapitalCanal Capital
 

Destaque (20)

Russian artist Alexei Savrasov, "The lyrical landscape artist"
Russian artist Alexei Savrasov, "The lyrical landscape artist"Russian artist Alexei Savrasov, "The lyrical landscape artist"
Russian artist Alexei Savrasov, "The lyrical landscape artist"
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript - - MeeGo Confere...
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript -  - MeeGo Confere...Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript -  - MeeGo Confere...
Build Amazing Mobile Apps using HTML5, CSS3 and JavaScript - - MeeGo Confere...
 
Systematically moving to mobile government excellence
Systematically moving to mobile government excellenceSystematically moving to mobile government excellence
Systematically moving to mobile government excellence
 
Smart Government or Mobile Government
Smart Government or Mobile Government Smart Government or Mobile Government
Smart Government or Mobile Government
 
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...
Competitive Mobile Analysis for your App Optimization Strategy - Webinar at ...
 
The new approach on government mobile apps development
The new approach on government mobile apps developmentThe new approach on government mobile apps development
The new approach on government mobile apps development
 
10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps
 
Mobile App Marketing: The Ultimate Guide to Success
Mobile App Marketing: The Ultimate Guide to SuccessMobile App Marketing: The Ultimate Guide to Success
Mobile App Marketing: The Ultimate Guide to Success
 
Somen & Facebookin perusteet Avot-hanke
Somen & Facebookin perusteet Avot-hankeSomen & Facebookin perusteet Avot-hanke
Somen & Facebookin perusteet Avot-hanke
 
інклюзивна освіта1
інклюзивна освіта1інклюзивна освіта1
інклюзивна освіта1
 
Review game
Review gameReview game
Review game
 
Mobile Metrics 101: Everything web marketers need to know about app analytics
Mobile Metrics 101: Everything web marketers need to know about app analyticsMobile Metrics 101: Everything web marketers need to know about app analytics
Mobile Metrics 101: Everything web marketers need to know about app analytics
 
Analytics for CMOs on the Rise
Analytics for CMOs on the RiseAnalytics for CMOs on the Rise
Analytics for CMOs on the Rise
 
تسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابتسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحاب
 
Are your pictures worth 1,000 words? (Eric Beteille)
Are your pictures worth 1,000 words?  (Eric Beteille)Are your pictures worth 1,000 words?  (Eric Beteille)
Are your pictures worth 1,000 words? (Eric Beteille)
 
Ibra trai qua
Ibra trai quaIbra trai qua
Ibra trai qua
 
80310cur
80310cur80310cur
80310cur
 
Overcoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing AutomationOvercoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing Automation
 
Encuesta nacional Cifras y Conceptos Canal Capital
Encuesta nacional Cifras y Conceptos Canal CapitalEncuesta nacional Cifras y Conceptos Canal Capital
Encuesta nacional Cifras y Conceptos Canal Capital
 

Semelhante a Building Large Mobile Apps

Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022 Michael Yagudaev
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesAndy_Gaskell
 
Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Indiginox
 
Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionIndiginox
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016Alex Wu
 
Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?LavaConConference
 
Can Technology Innovation Save The New York Times?
Can Technology Innovation Save The New York Times?Can Technology Innovation Save The New York Times?
Can Technology Innovation Save The New York Times?C4Media
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Android development
Android developmentAndroid development
Android developmentmkpartners
 
How to build an awesome mobile APP
How to build an awesome mobile APPHow to build an awesome mobile APP
How to build an awesome mobile APPBSP Media Group
 
How to build an awesome mobile APP
How to build an awesome mobile APPHow to build an awesome mobile APP
How to build an awesome mobile APPBSP Media Group
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slidesSameer Al-Sakran
 
10 skills developers should invest in for 2014
10 skills developers should invest in for 201410 skills developers should invest in for 2014
10 skills developers should invest in for 2014Pakorn Weecharungsan
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitChad Udell
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Gil Irizarry
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive uiPaul van Zyl
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesTeamstudio
 

Semelhante a Building Large Mobile Apps (20)

Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiences
 
Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?
 
Why do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 editionWhy do mobile projects (still) fail - September 2014 edition
Why do mobile projects (still) fail - September 2014 edition
 
UCCSC 2016
UCCSC 2016UCCSC 2016
UCCSC 2016
 
Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?Neil Perlin - We're Going Mobile! Great! Are We Ready?
Neil Perlin - We're Going Mobile! Great! Are We Ready?
 
summer internship
summer internshipsummer internship
summer internship
 
Can Technology Innovation Save The New York Times?
Can Technology Innovation Save The New York Times?Can Technology Innovation Save The New York Times?
Can Technology Innovation Save The New York Times?
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Android development
Android developmentAndroid development
Android development
 
How to build an awesome mobile APP
How to build an awesome mobile APPHow to build an awesome mobile APP
How to build an awesome mobile APP
 
How to build an awesome mobile APP
How to build an awesome mobile APPHow to build an awesome mobile APP
How to build an awesome mobile APP
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
10 skills developers should invest in for 2014
10 skills developers should invest in for 201410 skills developers should invest in for 2014
10 skills developers should invest in for 2014
 
Dmdh workshop #6
Dmdh workshop #6Dmdh workshop #6
Dmdh workshop #6
 
Creating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing ToolkitCreating mLearning With Your Existing Toolkit
Creating mLearning With Your Existing Toolkit
 
Whats my MVP?
Whats my MVP?Whats my MVP?
Whats my MVP?
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
 

Último

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Building Large Mobile Apps

  • 3. Me
  • 4. • Adam Magaña • Lead Mobile Engineer • 7 years at Drund • YSU - computer science grad • Interested in random things - baking bread, riding bikes, backpack enthusiast Me
  • 6. Drund is a white-label communication and audience-building platform for enterprise brands. Allow me to explain…
  • 7. We provide custom branded apps, a custom branded website, a full admin panel, and a metric boatload of features to our customers.
  • 8. Some of Our Customers • Austintown schools • Boardman schools • YSU Athletics • The Cleveland Cavaliers • And a few others getting ready to sail
  • 9. We’ve been at this for a while.
  • 10. A Quick Drund History
  • 12.
  • 13. • Single sign-on • Facebook, Twitter, and YouTube integrations • Netflix and Hulu integrations • A customizable news reader • File storage • Calendar integration • A quick and simple website publisher
  • 14. It was pretty cool but…
  • 16. The product needed to be better. We began revamping our entire project and started expanding upon our social tools.
  • 18. “I need you to start working on a mobile app for us.”
  • 19. Okay, let’s do it. But…
  • 20. A Few Immediate Challenges • No previous experience writing iOS or Android apps • Very small team • Need to build many features • Need a working prototype very soon
  • 22. Titanium • Compiles to native iOS and Android • JavaScript-based API • Open source • Native module support • Better performance than webview-based competitors
  • 23. One person with no prior mobile experience could start creating apps for both iOS and Android.
  • 25. Mobile Development Starts This is where the fun begins.
  • 27. iOS App Store launch on October 2012 Google Play Store launch March 2013
  • 28. Initial Launch Features • Posts • Broadcasts • Private messaging • Profiles
  • 29. Our Feature List Today • Live video streaming • Check-ins • Pages • Groups • Custom user permissions • Account import tools • Community statistics • Member statistics • Facebook and Twitter integration • File storage • Branded apps • Announcements • Polls • Store • Auctions • Events • Hashtags • Mentions • Post/announcement scheduling • Private messaging Just to name a few…
  • 30. Current Mobile Status • 4 full-time mobile team members. • 22 custom branded apps on Play Store and App Store • 3 branded video streaming apps • Ongoing transition to fully native apps
  • 31. Needless to say we’ve had to overcome a lot of hurdles. What helped us get to where we are today?
  • 32. Three Challenges And How We Tackle Them
  • 33. 1. Creating and Managing Branded Apps
  • 34. “We need to be able to completely customize the existing app. Colors, icons, splash screens… everything.”
  • 35. Even after we figure out how to do it technically how do we do it feasibly?
  • 36. We need to be able to… • Edit brand-specific JSON files en masse • Generate/render template files • Render brand-specific icons • Create whole new sets of assets with relative ease • Validate existing assets
  • 38. Grunt • JavaScript-based task runner • Hundreds, if not thousands, of plugins • Large developer community • Easy learning curve • Robust enough for our needs
  • 39. $ grunt simulate:cavs —platform=ios $ grunt clean $ grunt production —platform=android $ grunt add-brand $ grunt add-property Automated most of our workflow with relative ease.
  • 41. Large, high priority feature roadmap + Regular maintenance and bug fixes = Limited time for cleanup
  • 42. Use a code linter - ESLint Code review everything
  • 43. Still doesn’t completely solve the code quality problem. Need to develop good habits.
  • 44. Hit and Run Approach
  • 45. Android boot file iOS boot file • Add JS prototype functions • Check for credentials • Open login window if needed • Automatically log user in if needed • Etc. Problem: • Need to add extra logic to boot up process • Boot up files need cleaned up • Add JS prototype functions • Check for credentials • Open login window if needed • Automatically log user in if needed • Etc.
  • 46. Universal boot file Ideal Solution: • Add JS prototype functions • Check for credentials • Open login window if needed • Automatically log user in if needed • Etc.
  • 47. Android boot file iOS boot file • Check for credentials • Open login window if needed • Automatically log user in if needed • Etc. • Check for credentials • Open login window if needed • Automatically log user in if needed • Etc. Prototype utility file • Add JS prototype functions Compromise:
  • 48. Sometimes you can’t do all the clean up you want to do but you can and should do something. Easy to forget that when on a time crunch.
  • 49. 3. Code Base Bloat
  • 50. Large code base with multiple developers + Non-stop additions = Bloat, yo
  • 51. Make simple tools and teach your peers how to use them. Avoid accidentally making the same thing twice.
  • 52. Overlay Tutorials • Client wants to show a one time overlay tutorial to new users. • How can we break this down into simple and reusable parts? • Expand toolbox • Avoid writing code that can only be used for one thing.
  • 53. OneTimeAction.registerOrCallAction({ actionId: 'feed_overlay', callback: function () { // This function gets called only one time. } }); One Time Action Module
  • 54. TutorialOverlay.showTutorialOverlay({ mode: TutorialOverlay.modes.MESSAGE, permissions: { canCreateMessages: self.canSendMessage } }); Tutorial Overlay Module Extends Base Overlay Module
  • 55. OneTimeAction.registerAction({ actionId: 'messages', callback: function () { TutorialOverlay.showTutorialOverlay({ mode: TutorialOverlay.modes.MESSAGE, permissions: { canCreateMessages: self.canSendMessage } }); } }); Combined Usage
  • 56. This is by no means groundbreaking. But when you’re building and maintaining a lot of code with others it’s easy to forget to make and share tools. Avoid re-making something you or someone else made.
  • 57. These recommendations are in their simplest form. Lots of other takeaways we could talk about. Don’t get discouraged if you find yourself wrangling with a large codebase.
  • 58. We’re looking to grow our crew!
  • 59. • Backend/DevOps • Frontend • Mobile • Communications • Design
  • 60. Our next meet up and talk will be April 27th. “Up And Running With Docker” by Mark Beacom “Building and Refining Features For Android and iOS” by Aaron Womer and Mike Donahue
  • 62. Q & A