SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a 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
 
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
 
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
 
2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdfMeghalMistry1
 
Recruitment tameka
Recruitment tamekaRecruitment tameka
Recruitment tamekawoody232009
 

Similar a 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
 
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
 
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
 
2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf
 
SmartDriver
SmartDriverSmartDriver
SmartDriver
 
Recruitment tameka
Recruitment tamekaRecruitment tameka
Recruitment tameka
 

Más de 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
 

Más de 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
 

Último

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 

Último (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 

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

Notas del editor

  1. .