SlideShare una empresa de Scribd logo
1 de 34
Terry Ryan | Evangelist Building ColdFusion Powered Mobile Applications Developer Week	June 20 – June 24, 2011
Assumptions You know a little ColdFusion You know a little Flex You know what AIR is You’ve heard about AIR on Mobile Devices 2
What is this about? “Building ColdFusion Powered Mobile Applications” More specifically ColdFusion support for data in mobile apps. 3
Review 4
ColdFusion - Do you know what a CFC is? ColdFusion Component Collection of Functions Functions Have “Scope” remote, public, package, and private Remote means accessible to the world remotely through a webservice Remote Access Plain Text WDDX JSON AMF or Flash Remoting 5
Flex – Do you know what a remote object is? RemoteObject Remote Server call Uses AMF AMF Client requests data Server converts from server objects to ActionScript objects  Server transmits binary objects to requesting client  6
Mobile Apps = AIR 7
AIR for Devices app.bar app.apk app.ipa
AIR and SQLite AIR uses SQLite for offline data access SQLite is tiny footprint database Used in  Native IOS Native Android 9
Application We are building Staff information for my immediate team 1 table Person information 10
Demo – Backend Code 11
Approaches to Mobile Data Mobile only (Not Covered) Network Only Read only cache Sync-able  cache 12
Network Only Backend Server has database User requests data Mobile App requests data Mobile App presents it directly to user 13
Network Only 14 Remote Object Service
Demo – Network Only 15
Network Only Pros Easy to write Simple Apps Cons Good For Demo apps Proof of Concepts  Stale data worse then no data  Have to be connected to network No interactivity Take away You just turned your app in to a dumbed down browser
Read Only Cache Backend Server has database Mobile App has database User requests data Mobile app presents data from its database Mobile App requests data Mobile App overwrites all its data.  17
Read Only Cache 18 DAO Service Remote Object
Demo – Read Only Cache 19
Read only Cache Pros Moderately easy  to write Allows offline access Cons Good For Consumption apps Stop gap app No interactivity  Take aways Better then network only Still limited Might be right for your users
Synch-able Cache Backend Server has database Mobile App has database User requests/alters data Mobile app presents/alters data from/for its database Mobile App synchs all its data.  Mobile app and server manage conflicts 21
CF AIR Synch  ColdFusion 9 Introduced AIR Offline support You write a sychmanager that matched ISynchmanager interface You include cfair.swc in your Flex 22
Synch-able Cache 23 Main Synch Manager Service
Demo – Synch-able Cache 24
Synch-able Cache Pros This is a real app Much easier then writing all of that code Cons Good For Real apps  So complex to write, simplified version is still complex Code is obscured  Take aways Might work for you Still might have to roll your own
Tips 26
Sometimes you have to manually cast DAO CFAIR Synch 27
Watch out for circular references ORM with relationships Copy ColdFusion ORM and remove relationships 28
App should only present local All app data should be displayed from local App should only synch to server 29
Prepare databases Ship apps with prepopulated databases 30
Use Asynchronous Database calls Little harder then you are used to But allows for responsive apps. 31
32 Download		adobe.com/go/try_flashbuilder adobe.com/go/coldfusion Learn	adobe.com/devnet/flex adobe.com/devnet/coldfusion
33 Codehttp://bitly.com/bundles/tpryan/2
Mobile Apps with ColdFusion

Más contenido relacionado

La actualidad más candente

Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
Quek Lilian
 

La actualidad más candente (20)

Restful API's with ColdFusion
Restful API's with ColdFusionRestful API's with ColdFusion
Restful API's with ColdFusion
 
10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the world10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the world
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
Introduction to Alfresco Surf Platform
Introduction to Alfresco Surf PlatformIntroduction to Alfresco Surf Platform
Introduction to Alfresco Surf Platform
 
REST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion AetherREST Development made Easy with ColdFusion Aether
REST Development made Easy with ColdFusion Aether
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and web
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016
 
Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
Creating Dynamic Web Application Using ASP.Net 3 5_MVP Alezandra Buencamino N...
 
Asp dot net long
Asp dot net longAsp dot net long
Asp dot net long
 
Securing applications
Securing applicationsSecuring applications
Securing applications
 
Demystify Salesforce Bulk API
Demystify Salesforce Bulk APIDemystify Salesforce Bulk API
Demystify Salesforce Bulk API
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
ASP.NET Web form
ASP.NET Web formASP.NET Web form
ASP.NET Web form
 
1 app 2 developers 3 servers
1 app 2 developers 3 servers1 app 2 developers 3 servers
1 app 2 developers 3 servers
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1
 
Where is cold fusion headed
Where is cold fusion headedWhere is cold fusion headed
Where is cold fusion headed
 
Design mobile efficient Apis
Design mobile efficient ApisDesign mobile efficient Apis
Design mobile efficient Apis
 
Cfml features modern_coding
Cfml features modern_codingCfml features modern_coding
Cfml features modern_coding
 

Destacado (7)

Skip the IDE with PhoneGap Build
Skip the IDE with PhoneGap BuildSkip the IDE with PhoneGap Build
Skip the IDE with PhoneGap Build
 
HTML Design for Devices
HTML Design for DevicesHTML Design for Devices
HTML Design for Devices
 
Semantic HTML5
Semantic HTML5Semantic HTML5
Semantic HTML5
 
The Users are Restless
The Users are RestlessThe Users are Restless
The Users are Restless
 
The Future of HTML5 Motion Design
 The Future of HTML5 Motion Design The Future of HTML5 Motion Design
The Future of HTML5 Motion Design
 
Adobe and Modern Web Development
Adobe and Modern Web DevelopmentAdobe and Modern Web Development
Adobe and Modern Web Development
 
Making the Mobile Web Work
Making the Mobile Web WorkMaking the Mobile Web Work
Making the Mobile Web Work
 

Similar a Mobile Apps with ColdFusion

Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
Positive Hack Days
 
Android presentation
Android presentationAndroid presentation
Android presentation
Imam Raza
 
Android basic principles
Android basic principlesAndroid basic principles
Android basic principles
Henk Laracker
 
Mobile Enterprise Applications
Mobile Enterprise ApplicationsMobile Enterprise Applications
Mobile Enterprise Applications
Jason Conger
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integration
ravinxg
 

Similar a Mobile Apps with ColdFusion (20)

PWA basics for developers
PWA basics for developersPWA basics for developers
PWA basics for developers
 
Flash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile developmentFlash Builder for PHP and Mobile development
Flash Builder for PHP and Mobile development
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 
Mobile Apps Develpment - A Comparison
Mobile Apps Develpment - A ComparisonMobile Apps Develpment - A Comparison
Mobile Apps Develpment - A Comparison
 
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDKQuickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
 
Android presentation
Android presentationAndroid presentation
Android presentation
 
Appium solution artizone
Appium solution   artizoneAppium solution   artizone
Appium solution artizone
 
Quickly Build a Native Mobile App for your Community using Salesforce Mobile SDK
Quickly Build a Native Mobile App for your Community using Salesforce Mobile SDKQuickly Build a Native Mobile App for your Community using Salesforce Mobile SDK
Quickly Build a Native Mobile App for your Community using Salesforce Mobile SDK
 
Android Basic Presentation (Introduction)
Android Basic Presentation (Introduction)Android Basic Presentation (Introduction)
Android Basic Presentation (Introduction)
 
Vue storefront London PWA meetup
Vue storefront London PWA meetupVue storefront London PWA meetup
Vue storefront London PWA meetup
 
Android basic principles
Android basic principlesAndroid basic principles
Android basic principles
 
Android app development
Android app developmentAndroid app development
Android app development
 
Mobile Enterprise Applications
Mobile Enterprise ApplicationsMobile Enterprise Applications
Mobile Enterprise Applications
 
OWIN (Open Web Interface for .NET)
OWIN (Open Web Interface for .NET)OWIN (Open Web Interface for .NET)
OWIN (Open Web Interface for .NET)
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integration
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integration
 
Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0
 
Flex multi-screen development
Flex multi-screen developmentFlex multi-screen development
Flex multi-screen development
 
VMware Horizon - news
VMware Horizon - newsVMware Horizon - news
VMware Horizon - news
 
Hello cloud 6
Hello  cloud 6Hello  cloud 6
Hello cloud 6
 

Más de Terry Ryan

Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
Terry Ryan
 
cf.Objective ANZ Keynote
cf.Objective ANZ Keynotecf.Objective ANZ Keynote
cf.Objective ANZ Keynote
Terry Ryan
 
HTML5 Semantic Web
HTML5 Semantic WebHTML5 Semantic Web
HTML5 Semantic Web
Terry Ryan
 
Driving Technical Change
Driving Technical ChangeDriving Technical Change
Driving Technical Change
Terry Ryan
 
Scotch on the Rocks 2011 - Keynote
Scotch on the Rocks 2011 - KeynoteScotch on the Rocks 2011 - Keynote
Scotch on the Rocks 2011 - Keynote
Terry Ryan
 

Más de Terry Ryan (20)

The Future of HTML Motion Design
The Future of HTML Motion DesignThe Future of HTML Motion Design
The Future of HTML Motion Design
 
D2WC Keynote
D2WC KeynoteD2WC Keynote
D2WC Keynote
 
WebDU Keynote
WebDU KeynoteWebDU Keynote
WebDU Keynote
 
Beautiful PhoneGap Apps
Beautiful PhoneGap AppsBeautiful PhoneGap Apps
Beautiful PhoneGap Apps
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
The Future of HTML5 Motion Design
The Future of HTML5 Motion DesignThe Future of HTML5 Motion Design
The Future of HTML5 Motion Design
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
Mobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery MobileMobile Apps with PhoneGap and jQuery Mobile
Mobile Apps with PhoneGap and jQuery Mobile
 
Design for Developers
Design for DevelopersDesign for Developers
Design for Developers
 
cf.Objective ANZ Keynote
cf.Objective ANZ Keynotecf.Objective ANZ Keynote
cf.Objective ANZ Keynote
 
Flex Mobile Skinning Workshop
Flex Mobile Skinning WorkshopFlex Mobile Skinning Workshop
Flex Mobile Skinning Workshop
 
HTML5 Semantic Web
HTML5 Semantic WebHTML5 Semantic Web
HTML5 Semantic Web
 
Intro to Coldfusion
Intro to ColdfusionIntro to Coldfusion
Intro to Coldfusion
 
Driving Technical Change
Driving Technical ChangeDriving Technical Change
Driving Technical Change
 
Developing for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRDeveloping for Xoom with Flash and AIR
Developing for Xoom with Flash and AIR
 
Developing Apps for the BlackBerry PlayBook
Developing Apps for the BlackBerry PlayBook Developing Apps for the BlackBerry PlayBook
Developing Apps for the BlackBerry PlayBook
 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
 
Scotch on the Rocks 2011 - Keynote
Scotch on the Rocks 2011 - KeynoteScotch on the Rocks 2011 - Keynote
Scotch on the Rocks 2011 - Keynote
 
ColdFusion Builder Extensions
ColdFusion Builder ExtensionsColdFusion Builder Extensions
ColdFusion Builder Extensions
 
Mobile Apps using Flex and ColdFusion
Mobile Apps using Flex and ColdFusionMobile Apps using Flex and ColdFusion
Mobile Apps using Flex and ColdFusion
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Mobile Apps with ColdFusion

  • 1. Terry Ryan | Evangelist Building ColdFusion Powered Mobile Applications Developer Week June 20 – June 24, 2011
  • 2. Assumptions You know a little ColdFusion You know a little Flex You know what AIR is You’ve heard about AIR on Mobile Devices 2
  • 3. What is this about? “Building ColdFusion Powered Mobile Applications” More specifically ColdFusion support for data in mobile apps. 3
  • 5. ColdFusion - Do you know what a CFC is? ColdFusion Component Collection of Functions Functions Have “Scope” remote, public, package, and private Remote means accessible to the world remotely through a webservice Remote Access Plain Text WDDX JSON AMF or Flash Remoting 5
  • 6. Flex – Do you know what a remote object is? RemoteObject Remote Server call Uses AMF AMF Client requests data Server converts from server objects to ActionScript objects Server transmits binary objects to requesting client 6
  • 8. AIR for Devices app.bar app.apk app.ipa
  • 9. AIR and SQLite AIR uses SQLite for offline data access SQLite is tiny footprint database Used in Native IOS Native Android 9
  • 10. Application We are building Staff information for my immediate team 1 table Person information 10
  • 11. Demo – Backend Code 11
  • 12. Approaches to Mobile Data Mobile only (Not Covered) Network Only Read only cache Sync-able cache 12
  • 13. Network Only Backend Server has database User requests data Mobile App requests data Mobile App presents it directly to user 13
  • 14. Network Only 14 Remote Object Service
  • 15. Demo – Network Only 15
  • 16. Network Only Pros Easy to write Simple Apps Cons Good For Demo apps Proof of Concepts Stale data worse then no data Have to be connected to network No interactivity Take away You just turned your app in to a dumbed down browser
  • 17. Read Only Cache Backend Server has database Mobile App has database User requests data Mobile app presents data from its database Mobile App requests data Mobile App overwrites all its data. 17
  • 18. Read Only Cache 18 DAO Service Remote Object
  • 19. Demo – Read Only Cache 19
  • 20. Read only Cache Pros Moderately easy to write Allows offline access Cons Good For Consumption apps Stop gap app No interactivity Take aways Better then network only Still limited Might be right for your users
  • 21. Synch-able Cache Backend Server has database Mobile App has database User requests/alters data Mobile app presents/alters data from/for its database Mobile App synchs all its data. Mobile app and server manage conflicts 21
  • 22. CF AIR Synch ColdFusion 9 Introduced AIR Offline support You write a sychmanager that matched ISynchmanager interface You include cfair.swc in your Flex 22
  • 23. Synch-able Cache 23 Main Synch Manager Service
  • 25. Synch-able Cache Pros This is a real app Much easier then writing all of that code Cons Good For Real apps So complex to write, simplified version is still complex Code is obscured Take aways Might work for you Still might have to roll your own
  • 27. Sometimes you have to manually cast DAO CFAIR Synch 27
  • 28. Watch out for circular references ORM with relationships Copy ColdFusion ORM and remove relationships 28
  • 29. App should only present local All app data should be displayed from local App should only synch to server 29
  • 30. Prepare databases Ship apps with prepopulated databases 30
  • 31. Use Asynchronous Database calls Little harder then you are used to But allows for responsive apps. 31
  • 32. 32 Download adobe.com/go/try_flashbuilder adobe.com/go/coldfusion Learn adobe.com/devnet/flex adobe.com/devnet/coldfusion

Notas del editor

  1. You develop with AIR but it creates an apk file that is distributable on any market. It requires the AIR runtime, but makes it easy for someone to get if they need it.