SlideShare a Scribd company logo
1 of 68
1© 2015 Rogue Wave Software, Inc. All Rights Reserved. 1
Easy offline-first mobile
and desktop web apps
with PouchDB
Rod Cope, CTO
JFTPNT (5/15)
AKC Event Operations – Performance Events PO Box 900051 Raleigh, NC 27675-9051 Tel 919 816-3908 Fax 919 816-4211 www.akc.org
Event #____________________
STAKE____________________________ No. of Entries ______________
Date(s) on which stake was Judged _________________________ No. of Starters _____________
AWARDS:
Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____
AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________
Owner’s Name______________________________________________ Owner's Address________________________________________
Handler’s Name___________________________________________
Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____
AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________
Owner’s Name______________________________________________ Owner's Address________________________________________
Handler’s Name___________________________________________
Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____
AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________
Owner’s Name______________________________________________ Owner's Address________________________________________
Handler’s Name___________________________________________
Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____
AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________
Owner’s Name______________________________________________ Owner's Address________________________________________
Handler’s Name___________________________________________
Note: Field Trial Secretary shall list on the back of this page the registered name and number of each dog given a
Judge's Award of Merit
JUDGE’S CERTIFICATION
We certify that the above awards are in accord with our judging of the stake and that the Judges' Award of Merit as noted on the
back of this page are correct.
____________________________________________ _______________________________________________
(Judge’s Signature) (Judge’s Signature)
(Print Judge's Name) (Print Judge's Name)
FIELD TRIAL SECRETARY'S CERTIFICATION
I certify that the judges have verified the awards and signed this page. I certify that there were ___________ENTRIES
and ____________ STARTERS in this stake.
DATE Signature of Field Trial Secretary
PLEASE GIVE THE NUMBER OF EACH BREED STARTED:
POINTING BREED FIELD
TRIAL REPORT PAGE
1st
2nd
3rd
4th
 
 
 
AKC® HUNTING TESTS FOR POINTING BREEDS
 
Use separate sheets for Junior, Senior and Master levels and additional sheets if needed. NOTE: Score Juniors in Hunting, Bird Finding, Pointing and Trainability
only; score Seniors and Masters in all categories.
 
CIRCLE ONE – (JUNIOR / JUNIOR ADVANCED SENIOR / SENIOR ADVANCED MASTER / MASTER ADVANCED)
 
 
BRACE
#
 
DOG’S NAME
 
BREED
 
HANDLER  
HUNTING
BIRD
FINDING
ABILITY
 
POINTING
 
TRAINABILITY
RETRIEVING
(NOT
APPLICABLE
IN JUNIOR)
HONORING
(NOT
APPLICABLE
IN JUNIOR)
 
TOTAL
 
AVERAGE
                       
                       
                       
                       
                       
                       
                       
                       
 
In order to receive a Qualifying score, a dog must acquire a minimum of not less than 5 on each of the categories of abilities (4 categories in Junior; 6 categories in
Senior and Master) with an overall average score of not less than 7.0. “Advanced” titles require an overall average of not less than 8.0. When averaging scores,
divide total in Junior by 4; divide total in Senior and Master by 6. Judges must agree on which dogs will qualify and will not qualify.
 
 
 
 
JHTPNT (4/15)
Offic
i
al American Kennel Club® FIELD TRIAL or HUNT TEST Entry Form
AKC Rules, Regulations, Policies and Guidelines are available on the American Kennel Club website: www.akc.org
AGREEMENT
IcertifythatIamtheactualownerofthedog,orthatIamthedulyauthorizedagentoftheactualownerwhosenameIhaveenteredabove.Inconsiderationoftheacceptanceofthisentry,I(we)
agreetoabidebytherulesandregulationsofTheAmericanKennelClubineffectatthetimeofthisevent,andanyadditionalrulesandregulationsappearinginthepremiumlistofthiseventand
entryformandanydecisionmadeinaccordwiththem.I(we)agreethattheclubholdingthiseventhastherighttorefusethisentryforcausewhichtheclubshalldeemsufficient.I(we)certifyand
representthatthedogenteredisnotahazardtopersonsorotherdogs.Inconsiderationoftheacceptanceofthisentryandoftheholdingofthiseventandoftheopportunitytohavethedogjudged
andtowinprizes,ribbons,ortrophies,I(we)agreetoholdtheAKC,theevent-givingclub,theirmembers,directors,governors,office rs, agents,superintendentsoreventsecretaryandtheowner
and/or lessor of the premises and any provider of services that are necessary to hold this event and any employees or volunteers of the aforementioned parties, and anyAKC approved judge,
judgingatthisevent,harmlessfromanyclaimforlossorinjurywhichmaybeallegedtohavebeencauseddirectlyorindirectlytoanypersonorthingbytheactofthisdogwhileinorabouttheevent
premisesorgroundsornearanyentrancethereto,andI(we)personallyassumeallresponsibilityandliabilityforanysuchclaim;andI(we)furtheragreetoholdtheaforementionedpartiesharmless
from any claim for loss,injury or damage to this dog.Additionally,I (we) hereby assumethe sole responsibility for and agree to indemnify,defend and save theaforementioned parties harmless
fromanyandalllossandexpense(includinglegalfees)byreasonoftheliabilityimposedbylawuponanyoftheaforementionedpartiesfordamagebecauseofbodilyinjuries,includingdeathat
any time resulting therefrom,sustainedby any personor persons, including myself(ourselves),or on account ofdamage to property, arising outofor in consequenceofmy (our)participationin
thisevent,howeversuch,injuries,deathorpropertydamagemaybecaused,andwhetherornotthesamemayhavebeencausedormaybeallegedtohavebeencausedbythenegligenceof
theaforementionedpartiesoranyoftheiremployees,agents,oranyotherperson.I(we)agreethatthedeterminationofwhethertheinjuryisseriousshallbemadebytheeventveterinarianand
isbindingonme(us). I (WE) AGREE THAT ANY CAUSE OF ACTION, CONTROVERSY OR CLAIM ARISING OUT OF OR RELATED TO THE
ENTRY, EXHIBITION OR ATTENDANCE AT THE EVENT BETWEEN THE AKC AND THE EVENT-GIVING CLUB (UNLESS OTHERWISE
STATED IN THIS PREMIUM LIST) AND MYSELF (OURSELVES) OR AS TO THE CONSTRUCTION, INTERPRETATION AND EFFECT
OF THIS AGREEMENT SHALL BE SETTLED BY ARBITRATION PURSUANT TO THE APPLICABLE RULES OF THE AMERICAN
ARBITRATION ASSOCIATION. HOWEVER, PRIOR TO ARBITRATION ALL APPLICABLE AKC BYLAWS, RULES, REGULATIONS
AND PROCEDURES MUST FIRST BE FOLLOWED AS SET FORTH IN THE AKC CHARTER AND BYLAWS, RULES, REGULATIONS,
Club:
Location:
Email:Tel:
Signature of owner or his
agent duly authorized to make this entry:
Full
Name
Breed:
Sire:
Actual
Owner(s):
Owner’s
Address:
Event #:Date(s):
Event type
(test or trial):
I enclose entry fees
in the amount of: $
Date of Birth:Sex:
Enter in Stake/Test:
Call Name:
Dam:
Name of
Breeder:
Name of Owner’s
Agent/Handler:
AKC® No. Foreign & List Country:
Beagle Trials ONLY: Male Female
Retriever Trials ONLY this dog is qualifie
d
for (check answe r ):
Limited All-Age Stake: YES NO Restricted All-Age Stake: YES NO SpecialAll-Age Stake: YES NO
13” Class 15” Class
AFN999 (03/16) v1.1 Edit
City: State: Zip:
Name of Jr. Handler (if any): Jr. Handler #:
Dog event administration on-site
• Change, cancel, or add runs
– May take payment or provide refunds
• Record results
– Pass/fail, scores
– Must be mailed to AKC after event is finished
My use case: replace paper forms
• Devices: laptops, some tablets and phones
• Challenges
– Little or no Internet access
– Users are NOT technical
• Most are 50-75 years old
• Copy/paste is hard
• Don’t understand “synchronization”
Offline-first
• Offline!
Offline-first
• Latency
– Multiple round trips
Offline-first
• Offline!
• Latency
– Multiple round trips
• WiFi
– Bad/slow connection
Your site name here
Offline-first
• Offline!
• Latency
– Multiple round trips
• WiFi LieFi
– Bad/slow connection
Your site name here
use an offline-first app!
Synchronization options
Offline-first challenges
• User experience
• Security
• Data management
Offline-first challenges
• User experience
• Security
• Data management
User experience (UX)
• Implications of offline-first:
– No “make this available offline”
– Internet access is a feature
– Usually sync data eventually
User experience (cont.)
• Users don’t understand online/offline/sync
– Getting a ”web” page means “online”
– Automatic and seamless sync
• Remind users to sync
– Online-only features
• Indicate online status
UX: Online/offline indicators
https://github.com/hubspot/offline
Make sure you need them!
Offline-first challenges
• User experience
• Security
• Data management
Security: authentication/authorization
• Online client
– Must be online first
– Auth with server, store login token
• Offline client
– Local auth
– Assume all users are admins
• Back online client
– Auth with stored token
– Bi-directional synchronization of changes
Online security flow
Offline security flow
• Local authentication (optional)
– Password, token, device-specific, OS, 2FA
• Local authorization (optional)
• Can’t prevent authentication/authorization
– User has physical control of device
– Don’t store sensitive server data
• No private server passwords, keys, tokens!
Security: offline changes
• Save changes to local storage
• Prevent online-only changes
Security: offline changes (cont.)
• Server can’t trust offline changes
– Never trust user input in any form
– Authenticate and authorize
– Validate and normalize data
• Data format migration
• Apply accepted changes to master data store
• Communicate results back to client
Back online security and data flow
Offline-first challenges
• User experience
• Security
• Data management
Data: offline queries
– Okay to query client-side cache
• Example: show user profile and preferences
– Inform user if data may be missing
• Example: event search results
Data: offline changes (mutations)
• User-private or “lightly shared” data
– Create transactions & prepare for submission
• Example: shopping, enter dog event results
– Inventory or dynamic pricing might be a
problem
Data: e-commerce example
Data: offline changes (mutations)
• Shared data
– Admin can change price or description
– Can resolve conflicts automatically
• Example: sequence number, date, user id
– May need user to resolve conflicts
• Example:
Original price: 10
Your price: 11 Other price: 12
Make new price 11 Make new price 12
Data: offline and online
• Offline
– Save all changes on the client
• Online
– Still save changes on the client first
– Bi-directional sync with the server
– Conflict detection & resolution
Offline data options: AJAX
• The default option: retry or show error
• Complex logic to retry failed REST calls
• 5xx errors, timeouts, network errors
• User closes browser/tab, browser crash, machine crash
– What state is the transaction in if the browser
tab hangs or the browser crashes after the user
clicks “Purchase”?
• Probably bad user experience
• Definitely bad developer experience!
Pyramid of Doom
Promises
• It’s better with promises, but…
– 5xx errors, timeout, network error, user
closes browser/tab, browser crash, machine
crash
• What state is the transaction in if the browser
tab hangs or the browser crashes after the
user clicks “Purchase”?
Offline implementation options
Progressive Web Apps
Offline data options: SW and PWA
• Service Workers and Progressive Web Apps
• JavaScript-based proxy between your client-side code
and the browser
• Good for caching patterns and offline support
• No support today in Safari/iOS Safari, IE/Edge
• “In development” for Edge
• “Under consideration” for WebKit (Safari)
• Powerful option for the future, but not ready today
unless your audience only uses Chrome or Firefox
Offline data options: PouchDB!
• JavaScript, Apache 2.0 license
• “The database that syncs!”
• Replicates with PouchDB or CouchDB
– Local or remote
– Uni- or bi-directional (master-master)
– Automatic conflict resolution
– HTTP (easy testing with curl)
Offline data options: PouchDB (cont.)
• Change stream
– Observe add/change and delete
• Backing stores
– Browser: IndexedDB, WebSQL, memory
– Node.js: options below, memory, and more
PouchDB platforms
Web app languages
Web app frameworks
Desktop apps
Desktop apps… with web technology!
React desktop – Mac and Windows
Key packages
Client
• React, React Native,
React Desktop + Electron
• Redux
– Maintains client state
• GraphQL/Apollo Client
(optional)
• PouchDB
Server
• Express
• GraphQL/Apollo Server
(optional)
• node.js
• PouchDB or CouchDB
Client: React and friends for UI
• React for responsive web app
• React Native for native mobile UI
• React Desktop for native-looking desktop UI
• React Router for URL management
Client: React and friends for data
• Redux for client state management
• Redux/PouchDB
– Bi-directional state sync with local database
• Pouch Websocket Sync
– Bi-directional sync: local/remote DB’s
• PouchDB
– Uses IndexedDB or WebSQL in browser
• Optional: GraphQL integration with PouchDB
PouchDBRedux
Server
PouchDB/
CouchDB
Server: React, PouchDB, and friends
•React SSR (Server-Side Rendering)
–Include initial Redux store state
•Pouch Websocket Sync for sync with auth & reconnect
•PouchDB on LevelDB (from Google)
–Could also use CouchDB, Cloudant, Couchbase
•Pouch Clerk for (async) transaction state machine
http://blog.yld.io/2016/06/24/how-to-build-a-reliable-transaction-experience-for-your-customers
Server (continued)
• Don’t have to use PouchDB/CouchDB on server
• Example: my app is based on Meteor and MongoDB
– PouchDB synced with MongoDB on server
– Pouch Clerk calls Meteor method which updates
MongoDB
– Pouch Clerk updates PouchDB with results
– One server-side PouchDB per dog event
Conclusions
• Offline-first leads to a better user experience
• PouchDB enables offline-first
– Runs everywhere
– Synchronization with conflict resolution
• Build web, mobile, and even desktop apps
with one architecture, language, and
framework family
– JavaScript, React, Electron
Questions?
Rod Cope,
CTO
Rogue Wave Software
68© 2015 Rogue Wave Software, Inc. All Rights Reserved. 68

More Related Content

Similar to Mobile and Desktop Apps with PouchDB

Two Piece & A Biscuit Skate Tour Form
Two Piece & A Biscuit Skate Tour FormTwo Piece & A Biscuit Skate Tour Form
Two Piece & A Biscuit Skate Tour FormJoe Fox
 
Modern Control Systems 12th Edition Dorf Solutions Manual
Modern Control Systems 12th Edition Dorf Solutions ManualModern Control Systems 12th Edition Dorf Solutions Manual
Modern Control Systems 12th Edition Dorf Solutions Manualnofycygo
 
PEX Week 2014: Summer prices available!
PEX Week 2014: Summer prices available!PEX Week 2014: Summer prices available!
PEX Week 2014: Summer prices available!Veronica Araujo
 
HONOUR good food good health tasty .pptx
HONOUR good food good health  tasty .pptxHONOUR good food good health  tasty .pptx
HONOUR good food good health tasty .pptxtinoratwar
 
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdf
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdfModern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdf
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdfdanielosuna31
 
Kiosk simulation lecture [august2010]
Kiosk simulation lecture [august2010]Kiosk simulation lecture [august2010]
Kiosk simulation lecture [august2010]cherrybloosom89
 
Process Transformation Week 2014: Winter Prices available!
Process Transformation Week 2014: Winter Prices available!Process Transformation Week 2014: Winter Prices available!
Process Transformation Week 2014: Winter Prices available!Veronica Araujo
 
Process Transformation Week 2014
Process Transformation Week 2014Process Transformation Week 2014
Process Transformation Week 2014Nicola Abbott
 
Event Registration via The Link
Event Registration via The LinkEvent Registration via The Link
Event Registration via The LinkClubs@RIT
 
Clubs ev randlinkpresentation1
Clubs ev randlinkpresentation1Clubs ev randlinkpresentation1
Clubs ev randlinkpresentation1Zoe Bottcher
 
Color Run Entry Form
Color Run Entry FormColor Run Entry Form
Color Run Entry FormLea Green
 
SPE MEMBERSHIP APPLICATION
SPE MEMBERSHIP APPLICATIONSPE MEMBERSHIP APPLICATION
SPE MEMBERSHIP APPLICATIONHenry Malm
 
Volunteer app march 2011
Volunteer app march 2011Volunteer app march 2011
Volunteer app march 2011spcaofnenc
 
Us falcon airline passenger satisfaction
Us   falcon airline passenger satisfactionUs   falcon airline passenger satisfaction
Us falcon airline passenger satisfactionMithilesh yadav
 
InexpensiveInternetTestingImprovesBottomLineandLowersRisk
InexpensiveInternetTestingImprovesBottomLineandLowersRiskInexpensiveInternetTestingImprovesBottomLineandLowersRisk
InexpensiveInternetTestingImprovesBottomLineandLowersRiskRobert Zagar
 
The Power of Benford's Law in Finding Fraud
The Power of Benford's Law in Finding FraudThe Power of Benford's Law in Finding Fraud
The Power of Benford's Law in Finding FraudFraudBusters
 
Vendor Master File Fraud Detection and Prevention Using Data Analytics
Vendor Master File Fraud Detection and Prevention Using Data Analytics Vendor Master File Fraud Detection and Prevention Using Data Analytics
Vendor Master File Fraud Detection and Prevention Using Data Analytics FraudBusters
 
Workplace accidents and_human_error_by_isti
Workplace accidents and_human_error_by_istiWorkplace accidents and_human_error_by_isti
Workplace accidents and_human_error_by_istiSYED HAIDER ABBAS
 

Similar to Mobile and Desktop Apps with PouchDB (20)

Two Piece & A Biscuit Skate Tour Form
Two Piece & A Biscuit Skate Tour FormTwo Piece & A Biscuit Skate Tour Form
Two Piece & A Biscuit Skate Tour Form
 
Modern Control Systems 12th Edition Dorf Solutions Manual
Modern Control Systems 12th Edition Dorf Solutions ManualModern Control Systems 12th Edition Dorf Solutions Manual
Modern Control Systems 12th Edition Dorf Solutions Manual
 
PEX Week 2014: Summer prices available!
PEX Week 2014: Summer prices available!PEX Week 2014: Summer prices available!
PEX Week 2014: Summer prices available!
 
HONOUR good food good health tasty .pptx
HONOUR good food good health  tasty .pptxHONOUR good food good health  tasty .pptx
HONOUR good food good health tasty .pptx
 
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdf
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdfModern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdf
Modern Control Systems (12th Edition) [Richard C. Dorf and Robert H. Bishop].pdf
 
Kiosk simulation lecture [august2010]
Kiosk simulation lecture [august2010]Kiosk simulation lecture [august2010]
Kiosk simulation lecture [august2010]
 
Related Items
Related ItemsRelated Items
Related Items
 
Process Transformation Week 2014: Winter Prices available!
Process Transformation Week 2014: Winter Prices available!Process Transformation Week 2014: Winter Prices available!
Process Transformation Week 2014: Winter Prices available!
 
Process Transformation Week 2014
Process Transformation Week 2014Process Transformation Week 2014
Process Transformation Week 2014
 
Event Registration via The Link
Event Registration via The LinkEvent Registration via The Link
Event Registration via The Link
 
Clubs ev randlinkpresentation1
Clubs ev randlinkpresentation1Clubs ev randlinkpresentation1
Clubs ev randlinkpresentation1
 
Color Run Entry Form
Color Run Entry FormColor Run Entry Form
Color Run Entry Form
 
SPE MEMBERSHIP APPLICATION
SPE MEMBERSHIP APPLICATIONSPE MEMBERSHIP APPLICATION
SPE MEMBERSHIP APPLICATION
 
Volunteer app march 2011
Volunteer app march 2011Volunteer app march 2011
Volunteer app march 2011
 
Us falcon airline passenger satisfaction
Us   falcon airline passenger satisfactionUs   falcon airline passenger satisfaction
Us falcon airline passenger satisfaction
 
InexpensiveInternetTestingImprovesBottomLineandLowersRisk
InexpensiveInternetTestingImprovesBottomLineandLowersRiskInexpensiveInternetTestingImprovesBottomLineandLowersRisk
InexpensiveInternetTestingImprovesBottomLineandLowersRisk
 
The Power of Benford's Law in Finding Fraud
The Power of Benford's Law in Finding FraudThe Power of Benford's Law in Finding Fraud
The Power of Benford's Law in Finding Fraud
 
Vendor Master File Fraud Detection and Prevention Using Data Analytics
Vendor Master File Fraud Detection and Prevention Using Data Analytics Vendor Master File Fraud Detection and Prevention Using Data Analytics
Vendor Master File Fraud Detection and Prevention Using Data Analytics
 
Workplace accidents and_human_error_by_isti
Workplace accidents and_human_error_by_istiWorkplace accidents and_human_error_by_isti
Workplace accidents and_human_error_by_isti
 
SmartDriver
SmartDriverSmartDriver
SmartDriver
 

More from Rogue Wave Software

The Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveThe Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveRogue Wave Software
 
No liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureNo liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureRogue Wave Software
 
Disrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationDisrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationRogue Wave Software
 
Leveraging open banking specifications for rigorous API security – What’s in...
Leveraging open banking specifications for rigorous API security –  What’s in...Leveraging open banking specifications for rigorous API security –  What’s in...
Leveraging open banking specifications for rigorous API security – What’s in...Rogue Wave Software
 
Adding layers of security to an API in real-time
Adding layers of security to an API in real-timeAdding layers of security to an API in real-time
Adding layers of security to an API in real-timeRogue Wave Software
 
Getting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyGetting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyRogue Wave Software
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsRogue Wave Software
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youRogue Wave Software
 
Are open source and embedded software development on a collision course?
Are open source and embedded software development on a  collision course?Are open source and embedded software development on a  collision course?
Are open source and embedded software development on a collision course?Rogue Wave Software
 
Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Rogue Wave Software
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure successRogue Wave Software
 
PSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliancePSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and complianceRogue Wave Software
 
Java 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureJava 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureRogue Wave Software
 
How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)Rogue Wave Software
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Rogue Wave Software
 
How to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxHow to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxRogue Wave Software
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsRogue Wave Software
 
Enterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSEnterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSRogue Wave Software
 
Walk through an enterprise Linux migration
Walk through an enterprise Linux migrationWalk through an enterprise Linux migration
Walk through an enterprise Linux migrationRogue Wave Software
 
How to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmHow to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmRogue Wave Software
 

More from Rogue Wave Software (20)

The Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveThe Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data Perspective
 
No liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureNo liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failure
 
Disrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationDisrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformation
 
Leveraging open banking specifications for rigorous API security – What’s in...
Leveraging open banking specifications for rigorous API security –  What’s in...Leveraging open banking specifications for rigorous API security –  What’s in...
Leveraging open banking specifications for rigorous API security – What’s in...
 
Adding layers of security to an API in real-time
Adding layers of security to an API in real-timeAdding layers of security to an API in real-time
Adding layers of security to an API in real-time
 
Getting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyGetting the most from your API management platform: A case study
Getting the most from your API management platform: A case study
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applications
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for you
 
Are open source and embedded software development on a collision course?
Are open source and embedded software development on a  collision course?Are open source and embedded software development on a  collision course?
Are open source and embedded software development on a collision course?
 
Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success
 
PSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliancePSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliance
 
Java 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureJava 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the future
 
How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)
 
How to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to LinuxHow to migrate SourcePro apps from Solaris to Linux
How to migrate SourcePro apps from Solaris to Linux
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC apps
 
Enterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSEnterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOS
 
Walk through an enterprise Linux migration
Walk through an enterprise Linux migrationWalk through an enterprise Linux migration
Walk through an enterprise Linux migration
 
How to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmHow to keep developers happy and lawyers calm
How to keep developers happy and lawyers calm
 

Recently uploaded

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Recently uploaded (20)

Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 

Mobile and Desktop Apps with PouchDB

  • 1. 1© 2015 Rogue Wave Software, Inc. All Rights Reserved. 1 Easy offline-first mobile and desktop web apps with PouchDB Rod Cope, CTO
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. JFTPNT (5/15) AKC Event Operations – Performance Events PO Box 900051 Raleigh, NC 27675-9051 Tel 919 816-3908 Fax 919 816-4211 www.akc.org Event #____________________ STAKE____________________________ No. of Entries ______________ Date(s) on which stake was Judged _________________________ No. of Starters _____________ AWARDS: Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____ AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________ Owner’s Name______________________________________________ Owner's Address________________________________________ Handler’s Name___________________________________________ Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____ AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________ Owner’s Name______________________________________________ Owner's Address________________________________________ Handler’s Name___________________________________________ Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____ AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________ Owner’s Name______________________________________________ Owner's Address________________________________________ Handler’s Name___________________________________________ Name of Dog ______________________________________________ Breed____________________ DOB _________________ Sex_____ AKC ® No. _______________________________________ Sire ________________________________ Dam _____ __________________ Owner’s Name______________________________________________ Owner's Address________________________________________ Handler’s Name___________________________________________ Note: Field Trial Secretary shall list on the back of this page the registered name and number of each dog given a Judge's Award of Merit JUDGE’S CERTIFICATION We certify that the above awards are in accord with our judging of the stake and that the Judges' Award of Merit as noted on the back of this page are correct. ____________________________________________ _______________________________________________ (Judge’s Signature) (Judge’s Signature) (Print Judge's Name) (Print Judge's Name) FIELD TRIAL SECRETARY'S CERTIFICATION I certify that the judges have verified the awards and signed this page. I certify that there were ___________ENTRIES and ____________ STARTERS in this stake. DATE Signature of Field Trial Secretary PLEASE GIVE THE NUMBER OF EACH BREED STARTED: POINTING BREED FIELD TRIAL REPORT PAGE 1st 2nd 3rd 4th       AKC® HUNTING TESTS FOR POINTING BREEDS   Use separate sheets for Junior, Senior and Master levels and additional sheets if needed. NOTE: Score Juniors in Hunting, Bird Finding, Pointing and Trainability only; score Seniors and Masters in all categories.   CIRCLE ONE – (JUNIOR / JUNIOR ADVANCED SENIOR / SENIOR ADVANCED MASTER / MASTER ADVANCED)     BRACE #   DOG’S NAME   BREED   HANDLER   HUNTING BIRD FINDING ABILITY   POINTING   TRAINABILITY RETRIEVING (NOT APPLICABLE IN JUNIOR) HONORING (NOT APPLICABLE IN JUNIOR)   TOTAL   AVERAGE                                                                                                                                                                                                   In order to receive a Qualifying score, a dog must acquire a minimum of not less than 5 on each of the categories of abilities (4 categories in Junior; 6 categories in Senior and Master) with an overall average score of not less than 7.0. “Advanced” titles require an overall average of not less than 8.0. When averaging scores, divide total in Junior by 4; divide total in Senior and Master by 6. Judges must agree on which dogs will qualify and will not qualify.         JHTPNT (4/15) Offic i al American Kennel Club® FIELD TRIAL or HUNT TEST Entry Form AKC Rules, Regulations, Policies and Guidelines are available on the American Kennel Club website: www.akc.org AGREEMENT IcertifythatIamtheactualownerofthedog,orthatIamthedulyauthorizedagentoftheactualownerwhosenameIhaveenteredabove.Inconsiderationoftheacceptanceofthisentry,I(we) agreetoabidebytherulesandregulationsofTheAmericanKennelClubineffectatthetimeofthisevent,andanyadditionalrulesandregulationsappearinginthepremiumlistofthiseventand entryformandanydecisionmadeinaccordwiththem.I(we)agreethattheclubholdingthiseventhastherighttorefusethisentryforcausewhichtheclubshalldeemsufficient.I(we)certifyand representthatthedogenteredisnotahazardtopersonsorotherdogs.Inconsiderationoftheacceptanceofthisentryandoftheholdingofthiseventandoftheopportunitytohavethedogjudged andtowinprizes,ribbons,ortrophies,I(we)agreetoholdtheAKC,theevent-givingclub,theirmembers,directors,governors,office rs, agents,superintendentsoreventsecretaryandtheowner and/or lessor of the premises and any provider of services that are necessary to hold this event and any employees or volunteers of the aforementioned parties, and anyAKC approved judge, judgingatthisevent,harmlessfromanyclaimforlossorinjurywhichmaybeallegedtohavebeencauseddirectlyorindirectlytoanypersonorthingbytheactofthisdogwhileinorabouttheevent premisesorgroundsornearanyentrancethereto,andI(we)personallyassumeallresponsibilityandliabilityforanysuchclaim;andI(we)furtheragreetoholdtheaforementionedpartiesharmless from any claim for loss,injury or damage to this dog.Additionally,I (we) hereby assumethe sole responsibility for and agree to indemnify,defend and save theaforementioned parties harmless fromanyandalllossandexpense(includinglegalfees)byreasonoftheliabilityimposedbylawuponanyoftheaforementionedpartiesfordamagebecauseofbodilyinjuries,includingdeathat any time resulting therefrom,sustainedby any personor persons, including myself(ourselves),or on account ofdamage to property, arising outofor in consequenceofmy (our)participationin thisevent,howeversuch,injuries,deathorpropertydamagemaybecaused,andwhetherornotthesamemayhavebeencausedormaybeallegedtohavebeencausedbythenegligenceof theaforementionedpartiesoranyoftheiremployees,agents,oranyotherperson.I(we)agreethatthedeterminationofwhethertheinjuryisseriousshallbemadebytheeventveterinarianand isbindingonme(us). I (WE) AGREE THAT ANY CAUSE OF ACTION, CONTROVERSY OR CLAIM ARISING OUT OF OR RELATED TO THE ENTRY, EXHIBITION OR ATTENDANCE AT THE EVENT BETWEEN THE AKC AND THE EVENT-GIVING CLUB (UNLESS OTHERWISE STATED IN THIS PREMIUM LIST) AND MYSELF (OURSELVES) OR AS TO THE CONSTRUCTION, INTERPRETATION AND EFFECT OF THIS AGREEMENT SHALL BE SETTLED BY ARBITRATION PURSUANT TO THE APPLICABLE RULES OF THE AMERICAN ARBITRATION ASSOCIATION. HOWEVER, PRIOR TO ARBITRATION ALL APPLICABLE AKC BYLAWS, RULES, REGULATIONS AND PROCEDURES MUST FIRST BE FOLLOWED AS SET FORTH IN THE AKC CHARTER AND BYLAWS, RULES, REGULATIONS, Club: Location: Email:Tel: Signature of owner or his agent duly authorized to make this entry: Full Name Breed: Sire: Actual Owner(s): Owner’s Address: Event #:Date(s): Event type (test or trial): I enclose entry fees in the amount of: $ Date of Birth:Sex: Enter in Stake/Test: Call Name: Dam: Name of Breeder: Name of Owner’s Agent/Handler: AKC® No. Foreign & List Country: Beagle Trials ONLY: Male Female Retriever Trials ONLY this dog is qualifie d for (check answe r ): Limited All-Age Stake: YES NO Restricted All-Age Stake: YES NO SpecialAll-Age Stake: YES NO 13” Class 15” Class AFN999 (03/16) v1.1 Edit City: State: Zip: Name of Jr. Handler (if any): Jr. Handler #:
  • 9. Dog event administration on-site • Change, cancel, or add runs – May take payment or provide refunds • Record results – Pass/fail, scores – Must be mailed to AKC after event is finished
  • 10.
  • 11. My use case: replace paper forms • Devices: laptops, some tablets and phones • Challenges – Little or no Internet access – Users are NOT technical • Most are 50-75 years old • Copy/paste is hard • Don’t understand “synchronization”
  • 12.
  • 14.
  • 16. Offline-first • Offline! • Latency – Multiple round trips • WiFi – Bad/slow connection Your site name here
  • 17. Offline-first • Offline! • Latency – Multiple round trips • WiFi LieFi – Bad/slow connection Your site name here use an offline-first app!
  • 19. Offline-first challenges • User experience • Security • Data management
  • 20. Offline-first challenges • User experience • Security • Data management
  • 21. User experience (UX) • Implications of offline-first: – No “make this available offline” – Internet access is a feature – Usually sync data eventually
  • 22. User experience (cont.) • Users don’t understand online/offline/sync – Getting a ”web” page means “online” – Automatic and seamless sync • Remind users to sync – Online-only features • Indicate online status
  • 23.
  • 25. Offline-first challenges • User experience • Security • Data management
  • 26. Security: authentication/authorization • Online client – Must be online first – Auth with server, store login token • Offline client – Local auth – Assume all users are admins • Back online client – Auth with stored token – Bi-directional synchronization of changes
  • 28. Offline security flow • Local authentication (optional) – Password, token, device-specific, OS, 2FA • Local authorization (optional) • Can’t prevent authentication/authorization – User has physical control of device – Don’t store sensitive server data • No private server passwords, keys, tokens!
  • 29. Security: offline changes • Save changes to local storage • Prevent online-only changes
  • 30. Security: offline changes (cont.) • Server can’t trust offline changes – Never trust user input in any form – Authenticate and authorize – Validate and normalize data • Data format migration • Apply accepted changes to master data store • Communicate results back to client
  • 31. Back online security and data flow
  • 32. Offline-first challenges • User experience • Security • Data management
  • 33. Data: offline queries – Okay to query client-side cache • Example: show user profile and preferences – Inform user if data may be missing • Example: event search results
  • 34. Data: offline changes (mutations) • User-private or “lightly shared” data – Create transactions & prepare for submission • Example: shopping, enter dog event results – Inventory or dynamic pricing might be a problem
  • 36. Data: offline changes (mutations) • Shared data – Admin can change price or description – Can resolve conflicts automatically • Example: sequence number, date, user id – May need user to resolve conflicts • Example: Original price: 10 Your price: 11 Other price: 12 Make new price 11 Make new price 12
  • 37. Data: offline and online • Offline – Save all changes on the client • Online – Still save changes on the client first – Bi-directional sync with the server – Conflict detection & resolution
  • 38.
  • 39. Offline data options: AJAX • The default option: retry or show error • Complex logic to retry failed REST calls • 5xx errors, timeouts, network errors • User closes browser/tab, browser crash, machine crash – What state is the transaction in if the browser tab hangs or the browser crashes after the user clicks “Purchase”? • Probably bad user experience • Definitely bad developer experience!
  • 41.
  • 42. Promises • It’s better with promises, but… – 5xx errors, timeout, network error, user closes browser/tab, browser crash, machine crash • What state is the transaction in if the browser tab hangs or the browser crashes after the user clicks “Purchase”?
  • 45. Offline data options: SW and PWA • Service Workers and Progressive Web Apps • JavaScript-based proxy between your client-side code and the browser • Good for caching patterns and offline support • No support today in Safari/iOS Safari, IE/Edge • “In development” for Edge • “Under consideration” for WebKit (Safari) • Powerful option for the future, but not ready today unless your audience only uses Chrome or Firefox
  • 46. Offline data options: PouchDB! • JavaScript, Apache 2.0 license • “The database that syncs!” • Replicates with PouchDB or CouchDB – Local or remote – Uni- or bi-directional (master-master) – Automatic conflict resolution – HTTP (easy testing with curl)
  • 47. Offline data options: PouchDB (cont.) • Change stream – Observe add/change and delete • Backing stores – Browser: IndexedDB, WebSQL, memory – Node.js: options below, memory, and more
  • 49.
  • 53. Desktop apps… with web technology!
  • 54.
  • 55. React desktop – Mac and Windows
  • 56.
  • 57. Key packages Client • React, React Native, React Desktop + Electron • Redux – Maintains client state • GraphQL/Apollo Client (optional) • PouchDB Server • Express • GraphQL/Apollo Server (optional) • node.js • PouchDB or CouchDB
  • 58. Client: React and friends for UI • React for responsive web app • React Native for native mobile UI • React Desktop for native-looking desktop UI • React Router for URL management
  • 59. Client: React and friends for data • Redux for client state management • Redux/PouchDB – Bi-directional state sync with local database • Pouch Websocket Sync – Bi-directional sync: local/remote DB’s • PouchDB – Uses IndexedDB or WebSQL in browser • Optional: GraphQL integration with PouchDB
  • 60.
  • 62. Server: React, PouchDB, and friends •React SSR (Server-Side Rendering) –Include initial Redux store state •Pouch Websocket Sync for sync with auth & reconnect •PouchDB on LevelDB (from Google) –Could also use CouchDB, Cloudant, Couchbase •Pouch Clerk for (async) transaction state machine
  • 64. Server (continued) • Don’t have to use PouchDB/CouchDB on server • Example: my app is based on Meteor and MongoDB – PouchDB synced with MongoDB on server – Pouch Clerk calls Meteor method which updates MongoDB – Pouch Clerk updates PouchDB with results – One server-side PouchDB per dog event
  • 65. Conclusions • Offline-first leads to a better user experience • PouchDB enables offline-first – Runs everywhere – Synchronization with conflict resolution • Build web, mobile, and even desktop apps with one architecture, language, and framework family – JavaScript, React, Electron
  • 68. 68© 2015 Rogue Wave Software, Inc. All Rights Reserved. 68

Editor's Notes

  1. .