SlideShare a Scribd company logo
1© 2015 Rogue Wave Software, Inc. All Rights Reserved. 1
Easy offline-first mobile
and desktop web apps
with PouchDB
Rod Cope, CTO
Easy offline-first mobile and desktop web apps with PouchDB
Easy offline-first mobile and desktop web apps with PouchDB
Easy offline-first mobile and desktop web apps with PouchDB
Easy offline-first mobile and desktop web apps with PouchDB
Easy offline-first mobile and desktop web apps with PouchDB
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps with PouchDB
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”
Easy offline-first mobile and desktop web apps with PouchDB
Offline-first
• Offline!
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps with PouchDB
Web app languages
Web app frameworks
Desktop apps
Desktop apps… with web technology!
Easy offline-first mobile and desktop web apps with PouchDB
React desktop – Mac and Windows
Easy offline-first mobile and desktop web apps with PouchDB
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
Easy offline-first mobile and desktop web apps 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

PPTX
What if you could eliminate the hidden costs of development?
PDF
Offline-First Apps with PouchDB
PPTX
Couch DB/PouchDB approach for hybrid mobile applications
PDF
Apache CouchDB
PDF
Offline first, the painless way
PPTX
The 10 Best University Mobile Apps of 2015
PDF
近未来の人工知能のカタチ
PDF
Device Synchronization with Javascript and PouchDB
What if you could eliminate the hidden costs of development?
Offline-First Apps with PouchDB
Couch DB/PouchDB approach for hybrid mobile applications
Apache CouchDB
Offline first, the painless way
The 10 Best University Mobile Apps of 2015
近未来の人工知能のカタチ
Device Synchronization with Javascript and PouchDB

Similar to Easy offline-first mobile and desktop web apps with PouchDB (20)

PDF
Two Piece & A Biscuit Skate Tour Form
PDF
Modern Control Systems 12th Edition Dorf Solutions Manual
PDF
PEX Week 2014: Summer prices available!
PPTX
HONOUR good food good health tasty .pptx
PPTX
Kiosk simulation lecture [august2010]
PDF
Related Items
PDF
Process Transformation Week 2014: Winter Prices available!
PDF
Process Transformation Week 2014
PPTX
Event Registration via The Link
PPTX
Clubs ev randlinkpresentation1
PDF
Color Run Entry Form
PDF
SPE MEMBERSHIP APPLICATION
DOC
Volunteer app march 2011
PDF
Us falcon airline passenger satisfaction
PPTX
InexpensiveInternetTestingImprovesBottomLineandLowersRisk
PDF
The Power of Benford's Law in Finding Fraud
PDF
Vendor Master File Fraud Detection and Prevention Using Data Analytics
PDF
Workplace accidents and_human_error_by_isti
PDF
2019-12-WWC-Toronto.pdf
PDF
SmartDriver
Two Piece & A Biscuit Skate Tour Form
Modern Control Systems 12th Edition Dorf Solutions Manual
PEX Week 2014: Summer prices available!
HONOUR good food good health tasty .pptx
Kiosk simulation lecture [august2010]
Related Items
Process Transformation Week 2014: Winter Prices available!
Process Transformation Week 2014
Event Registration via The Link
Clubs ev randlinkpresentation1
Color Run Entry Form
SPE MEMBERSHIP APPLICATION
Volunteer app march 2011
Us falcon airline passenger satisfaction
InexpensiveInternetTestingImprovesBottomLineandLowersRisk
The Power of Benford's Law in Finding Fraud
Vendor Master File Fraud Detection and Prevention Using Data Analytics
Workplace accidents and_human_error_by_isti
2019-12-WWC-Toronto.pdf
SmartDriver
Ad

More from Rogue Wave Software (20)

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

Recently uploaded (20)

PDF
Nekopoi APK 2025 free lastest update
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
history of c programming in notes for students .pptx
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
medical staffing services at VALiNTRY
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
System and Network Administraation Chapter 3
PPTX
Introduction to Artificial Intelligence
PDF
System and Network Administration Chapter 2
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Softaken Excel to vCard Converter Software.pdf
Nekopoi APK 2025 free lastest update
Design an Analysis of Algorithms I-SECS-1021-03
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Navsoft: AI-Powered Business Solutions & Custom Software Development
Online Work Permit System for Fast Permit Processing
Odoo POS Development Services by CandidRoot Solutions
Upgrade and Innovation Strategies for SAP ERP Customers
history of c programming in notes for students .pptx
Which alternative to Crystal Reports is best for small or large businesses.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
medical staffing services at VALiNTRY
Design an Analysis of Algorithms II-SECS-1021-03
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
System and Network Administraation Chapter 3
Introduction to Artificial Intelligence
System and Network Administration Chapter 2
How to Migrate SBCGlobal Email to Yahoo Easily
2025 Textile ERP Trends: SAP, Odoo & Oracle
Softaken Excel to vCard Converter Software.pdf

Easy offline-first mobile and desktop web 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
  • 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
  • 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”
  • 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
  • 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
  • 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!
  • 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
  • 53. Desktop apps… with web technology!
  • 55. React desktop – Mac and Windows
  • 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
  • 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