Index
A
- active communication
- Airdrop
- Apple Safari
- cache, clearing / Apple Safari
B
- Behavior Driven Development (BDD)
- about / Writing a test
- Bluetooth
- Bonjour
- browser
- using / A browser
- Bryntum Siesta
- about / Testing frameworks
- installing / Installing Siesta
- URL / Installing Siesta
- test, writing / Writing a test
C
- cache
- limitations / Cache limits
- clearing / Clearing the cache
- clearing, in Google Chrome / Google Chrome
- clearing, in Mozilla Firefox / Mozilla Firefox
- clearing, in Apple Safari / Apple Safari
- clearing, in Microsoft Edge / Microsoft Edge
- Chrome
- Cloudant DB
- about / What it means to be offline
- command line
- about / A command line
- communication
- passive communication / Building trust through up front communication
- active communication / Building trust through up front communication
- compensation, for bad network conditions
- performing / Staying functional in bad network conditions
- databases, creating / Creating new databases and users
- new users, creating / Creating new databases and users
- Main controller, refactoring / Refactoring the Main controller
- Item store, updating / Updating the Item store
- list store, updating / Updating the list store
- models, updating / Updating models and views
- views, updating / Updating models and views
- Sync controller, wiring up / Wiring up the Sync controller
- follow-up communication, sending / Sending the follow-up communication
- conflict detection
- implementing / Implementing conflict detection
- conflicts, returning with PouchDB / Getting PouchDB to return conflicts
- conflicts, attaching to item model / Attaching conflicts to the item model
- current revision, attaching to item model / Attaching the current revision to the item model
- revision, checking / Checking the revision before loading the data
- conflict resolution
- implementing / Implementing the conflict resolution
- supporting methods, adding / Adding the supporting methods
- fields, adding to edit views / Adding fields to the edit views
- controller logic, adding / Adding controller logic
- to-do item, defining / Trying it out
- for maps / Conflict resolution for maps and images
- for images / Conflict resolution for maps and images
- Cordova camera plugin
- installing / Installing the Cordova camera plugin
- CouchDB
- about / Adding an online data store
- Craigslist
- about / Making the case to yourself
- Cross-Origin Resource Sharing (CORS)
- about / PouchDB
D
- design principles
- comparing / Comparing and contrasting with the design principles
- contrasting / Comparing and contrasting with the design principles
- development tools
- configuring / Configuring the development tools
- text editor / A text editor
- browser / A browser
- command line / A command line
- Homebrew / Homebrew
- NPM / npm
- Java / Java
- workspace, arranging / Arranging your workspace
- device support
- about / Device support
- Bluetooth / Bluetooth
- NFC / NFC
- Wi-Fi P2P / Peer-to-peer Wi-Fi
- Domain Name System (DNS)
- Dropbox
- Dynamic Host Configuration Protocol (DHCP)
E
- error messages
- displaying / Displaying error messages
- event handlers
- refactoring / Refactoring the event handlers
- onLoadRecords method / The onLoad method
- onAddRecords method, adding / The onAddRecords method
- onRemoveRecords method, adding / The onRemoveRecords method
- onUpdateRecord method, adding / The onUpdateRecord method
F
- follow-up communication
- sending, for bad network conditions / Sending the follow-up communication
G
- Git repository
- creating / Creating a Git repository
- Google Chrome
- cache, clearing / Google Chrome
- Google Drive
- Google Static Maps API
- using / Offline Maps
- URL / Offline Maps
H
- Homebrew
- Hoodie
- about / Convincing other developers, Hoodie
I
- IBM Cloudant
- about / Adding an online data store
- image documents
- image support
- implementing / Implementing image support
- Cordova camera plugin, installing / Installing the Cordova camera plugin
- custom image component, creating / Creating a custom image component
- enabling / Enabling image support
- intelligent caching, scenarios
- about / Usage scenarios
- dimensions / Usage scenarios
- off-the-grid vacation / Going on an off-the-grid vacation
- living in third-world country / Living in a third-world country
- commuting, on public transportation / Commuting on public transportation
- Wi-Fi only device / Working on a Wi-Fi only device
- files, sharing between mobile devices / Sharing files between mobile devices
- high-definition videos, streaming from YouTube / Streaming high-definition videos from YouTube
- online shopping, with phone / Online shopping with your phone
- at conferences / Getting work done at a conference
- IP address, assigning to device
- about / Assigning an IP address to each device
- connection, testing / Testing the connection
- Item store
- updating, for bad network conditions / Updating the Item store
- new databases, defining / Defining new databases
- data, retrieving from databases / Retrieving the data from the databases
- databases, flagging for sync / Flagging the databases for sync
- items, piecing together from multiple databases / Piecing items together from multiple databases
- items, splitting / Splitting items apart
- individual data items, removing / Removing the individual data items
- individual data items, updating / Updating the individual data items
- item store
- refactoring / Refactoring the item store
- sync, restricting to users lists / Restricting sync to the user's lists
- data, setting / Only set the data if needed
- event handlers, refactoring / Refactoring the event handlers
J
- Java
- installing / Java
L
- last view, offline-first application
- restoring / Restoring the last view
- store, creating / Creating a store and model
- model, creating / Creating a store and model
- pages, specifying to restore / Specifying which pages to restore
- page, loading / Loading the page when the app starts
- least developed countries (LDCs)
- about / Making the case to yourself
- list frequency
- about / List frequency
- lists, sharing
- share views, creating / Creating share views
- existing views, modifying / Modifying the existing views
- model, adding / Adding a model
- store, adding / Adding a store
- list store, modifying / Modifying the list store
- logic, adding to controller / Adding logic to the controller
- list store
- updating, for bad network conditions / Updating the list store
- pointer, creating for metadata database / Creating a pointer to the metadata database
- databases, flagging / Flagging the databases when they change
- LocalStorage
- about / Sencha Touch, Adding PouchDB to the app
M
- manual testing
- about / Manual testing
- to-do item, creating / Creating a to-do item
- collaborators, adding / Adding and removing collaborators
- collaborators, removing / Adding and removing collaborators
- bandwidth notifications, sending / The bandwidth notifications
- to-do item, deleting / Cleaning up
- map documents
- mapping support
- implementing / Implementing mapping support
- custom map component, creating / Creating a custom map component
- logic, adding to view / Adding logic to the view
- controller, wiring up / Wiring up the controller
- map view, building / Building the map view
- drilldown support, adding to controller / Adding drilldown support to the controller
- map view, wiring up / Wiring up the map view
- map views, refactoring / Refactoring the map views
- MemoryProxy
- about / Sencha Touch
- metadata documents
- MFi certification
- reference link / Bluetooth
- Microsoft Edge
- cache, clearing / Microsoft Edge
- Model View Controller (MVC)
- about / Adding a model
- Mozilla Firefox
- cache, clearing / Mozilla Firefox
- Multipeer Connectivity
- multiple lists, online-only features
- managing / Multiple lists
- views, refactoring / Refactoring our views
- views, implementing / Implementing new views
- backing store, creating / Creating the backing store
- sync logic, removing from item store / Removing sync logic from the item store
- model, creating / Giving the list store a model
- logic, adding to controller / Adding logic to the controller
N
- NFC
- about / Device support, NFC, NFC
- NPM
O
- offline
- about / What it means to be offline
- offline-first application
- importance / Making the case to yourself
- challenges / Making the case to others
- developers, convincing / Convincing other developers
- designers, convincing / Convincing other designers
- upper-level management, convincing / Convincing your boss or the upper-level management
- problems, solving / Low-hanging fruit
- error messages, adding / Error messages
- empty state, defining for data views / Empty states
- last view, restoring / Restoring the last view
- offline databases
- about / Offline databases
- Sencha Touch / Sencha Touch
- PouchDB / PouchDB
- remotestorage.io library / The remotestorage.io library
- Hoodie / Hoodie
- offline design
- principles / Principles of a good offline design
- offline experience
- designing / Designing the offline experience
- need for / What do users need from this app and why?
- goals, accomplishing / How will people accomplish their goals using the app?
- items, displaying / Items should display while offline
- devices, syncing / Keep all my devices in sync
- delays, avoiding / Don't keep me waiting
- to-do items, sharing / Sharing with friends should be bulletproof
- data, safeguarding / Safeguard my data
- app design / What does the app look like, roughly?
- to-do items, listing / A list of to-dos
- new item, creating / Creating a new item
- existing item, editing / Editing an existing item
- offline paradigm
- about / The offline paradigm
- offline synchronization, making easy
- about / Making the setup less painful
- multiprotocol sync / Multiprotocol sync
- services, on mobile / Services on a mobile
- zero configuration networking / Zero configuration networking
- automatic switching, to offline mode / Automatic switching to offline mode
- offline syncing
- support, implementing for / Implement support for offline syncing
- offline to-do app
- building / Building an offline to-do app
- views, breaking / Breaking the views into their own files
- views, connecting / Connecting the views together
- store, creating / Creating a store to populate the list view
- buttons, adding to each to-do item / Adding buttons to each to-do item
- buttons, defining / Making the buttons functional
- deploying, to phone / Deploying the app to a phone
- design principles, comparing / How does it compare?
- improvements / Where does it need to improve?
- using / Using the app as a baseline for the future
- online-only features
- adding / Adding online-only features
- user account, managing / User account management
- multiple lists, managing / Multiple lists
- lists, sharing / Sharing lists
- online/offline indicator
- creating / Creating an online/offline indicator
- global toolbar, adding / Adding a global toolbar
- indicator logic, adding / Adding indicator logic
- online/offline transition
- about / The online/offline transition
- strategies, defining for users / Being informative about what can or cannot be done
- graceful degradation / Graceful degradation
- data, recovering / Recovering when things go horribly wrong
- online/offline transition, scenarios
- about / Example scenarios
- to-do item, creating while offline / Susan creates a to-do item while offline
- to-do item, sharing while offline / Susan tries to share a to-do item while offline
- lists, synchronizing over weak connection / Susan synchronizes her lists over a weak connection
- video attachment, adding over weak connection / Susan adds a video attachment over a weak connection
- multiple to-do items, adding while offline / Susan adds multiple to-do items while offline
- online data store
- adding / Adding an online data store
- Cloudant account, creating / Creating a Cloudant account
- data structures / Data structures and validation
- validation / Data structures and validation
- validation function, writing / Writing a validation function
- validation function, testing / Testing the validation function
- online workflow
- designing / Designing the online workflow
- multiple devices, synchronizing / Keep all my devices in sync
- lists, sharing with friends / Sharing with friends should be bulletproof
- data, safeguarding / Safeguard my data
- open source software (OSS)
- about / Creating a Git repository
P
- P2P connection
- setting up / Setting up the P2P connection
- passive communication
- PhoneGap-WifiInfoPlugin
- reference link / Wi-Fi P2P
- PhoneGap NFC Plugin
- reference link / NFC
- platform-independent libraries
- PouchDB
- about / Convincing other developers, PouchDB, Bluetooth
- URL / Adding PouchDB to the app
- adding, to app / Adding PouchDB to the app
- updating / Update PouchDB when changes occur
- predictive algorithm
- need for / Predicting the future
- writing / Writing a predictive algorithm
- location, ensuring / Is the location accurate enough?
- seed location, creating / Creating a seed location
- additional points, adding / Adding additional points
- existing points, updating / Updating the existing points
- velocity, ensuring / Ensuring that the velocity is significant enough
- future connectivity, predicting / Predicting future connectivity
- online/offline state, setting / Setting our online/offline state
- position store, creating / Creating the position store
R
- Remotestorage.io
- about / Convincing other developers
- remotestorage.io library
- about / The remotestorage.io library
- Representational State Transfer (REST)
S
- Secure Shell (SSH)
- about / Bluetooth
- Sencha Touch
- configuring / Configuring Sencha Touch
- URL / Configuring Sencha Touch
- about / Sencha Touch
- Sencha Touch application
- creating / Creating a skeleton application
- files, generating with Sencha cmd / Generating files with Sencha cmd
- main view, creating / Creating the main view
- list view, adding / Adding the list view
- create view, adding / Adding the create view
- edit view, adding / Adding the edit view
- changes, committing / Committing your changes
- Server
- about / What it means to be offline
- split-brain
- about / What is a split-brain?
- collective agreement / A collective agreement
- self-appointed dictator / A self-appointed dictator
- Sublime Text 3
- about / A text editor
- installing / A text editor
- URL / A text editor
- Sync controller
- wiring up, for bad network conditions / Wiring up the Sync controller
- databases, initializing / Initializing the databases
- connection logic, tweaking / Tweaking the connection logic
- synchronization, modifying / Changing how the syncing works
- synchronization, prioritizing / Prioritizing the synchronization
- synchronization, over Wi-Fi
- about / Synchronization over Wi-Fi
- P2P connection, setting up / Setting up the P2P connection
- IP address, assigning to device / Assigning an IP address to each device
- support, implementing for offline syncing / Implement support for offline syncing
- system state
- exposing, to user / Exposing the system state to the user
- online/offline indicator, creating / Creating an online/offline indicator
- error messages, displaying / Displaying error messages
T
- tags
- about / NFC
- testing frameworks
- Bryntum Siesta / Testing frameworks
- text documents
- text editor
- about / A text editor
- to-do app
- evaluating / Before and after
- with offline experience / Before – offline only
- with offline plus online experience / After – offline plus online
- to-do app, improvements
- conflict resolution / Conflict resolution
- cache size limits / The cache size limits
- account management / Account management
- offline Maps / Offline Maps
- granular sync indicators / Granular sync indicators
- offline sync / Offline sync
U
- up front communication
- setting up / Building trust through up front communication
- USB
- USB Host and Accessory
- reference link / USB
- user account
- managing / User account management
- credentials, generating / Generating credentials
- stores, expanding / Expanding the stores
- sign in view, creating / Creating the sign in view
- controller references, updating / Updating the controller references
- handler functions, adding / Adding the handler functions
- item store, tweaking / Tweaking the item store
- user guidance
- obtaining / Getting user guidance
- modal, adding to app / Adding modal to the app
- modal, displaying / Showing the modal once per sync
- users
- input, obtaining / Letting users provide direction
- informing, for turbulent network conditions / Letting the users know when encountering turbulence
- messages, displaying / Displaying messages at regular intervals
- timestamp, creating / Creating a timestamp when the sync starts
W
- Web API connection
- performing / Connecting to our Web API
- PouchDB, adding to app / Adding PouchDB to the app
- live synchronization, enabling / Enabling live synchronization
- PouchDB, updating / Update PouchDB when changes occur
- store, using / Tweaking how the store is used
- lists, sharing between devices / Sharing lists between devices
- Wi-Fi P2P
- about / Peer-to-peer Wi-Fi, Wi-Fi P2P
- worst-case scenario
- developing / Developing for a worst-case scenario
- during off-the-grid vacation / Going on an off-the-grid vacation
- in third-world country / Living in a third-world country
- while commuting, on public transportation / Commuting on public transportation
- Wi-Fi only device / Working on a Wi-Fi only device
- files, sharing between mobile devices / Sharing files between mobile devices
- high-definition video, streaming from YouTube / Streaming a high-definition video from YouTube
- online shopping / Online shopping with your phone
- at conferences / Getting work done at a conference
Z
- ZeroConf