SlideShare a Scribd company logo
1 of 43
Offline Survival
in the Deadzone
by Scott Steinbeck
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
2
ABOUT ME
• Scott Steinbeck
• Entrepreneur
• CF Engineer 10 Years
• Hybrid App developer
• Hardware/IOT Geek
• Amateur Woodworker
• Husband
• Father
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
3
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
4THE PROBLEM: LOAD TIMES…
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
5
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
6
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
7THE SOLUTION
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL
Indexed DB
Lets play a little game called
name that crappy browser
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies
Local Storage
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies
•Small Storage (4k Max)
•Limit 50 per domain
•Meant for storing simple data such as a
session token
•No default getter/setter API
•Only String Support
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies
•Small Storage (4k Max)
•Limit 50 per domain
•Meant for storing simple data such as a
session token
•No default getter/setter API
•Only String Support
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies
•Small Storage (4k Max)
•Limit 50 per domain
•Meant for storing simple data such as a
session token
•No default getter/setter API
•Only String Support
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies
//Set
document.cookie = "username=John Doe";
//Set with expire
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013
12:00:00 UTC";
//Edit
document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013
12:00:00 UTC; path=/";
//Delete (set the expire date to before now)
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00
UTC";
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookies (jCookie)
//Create a cookie, valid across the entire site:
Cookies.set('name', ‘value');
//Create a cookie that expires 7 days from now:
Cookies.set('name', 'value', { expires: 7 });
//Read cookie:
Cookies.get('name'); // => ‘value' or undefined
//Read all visible cookies:
Cookies.get(); // => { name: 'value' }
//Delete cookie:
Cookies.remove('name');
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Local Storage
•Medium Storage (10M Max)
•Key-Value pair
•Simple getter/setter syntax
•Can only store strings
• Local Storage (persistent after browser
close)
•Session Storage (removed when tab is
closed)
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
//Create a local storage item
localStorage.setItem('name', 'value');
//Create a local storage with object
var fullNameObj = {'first': 'John', 'last': ‘Smith'};
localStorage
.setItem(‘fullname',JSON.stringify(fullNameObj));
//Read local storage item:
localStorage.getItem('name'); // => 'value' or undefined if doesnt exist
//Read local storage object
JSON.parse(localStorage.getItem('fullname'));
// => {'first': 'John', 'last': ‘Smith'}
//Delete local storage item:
localStorage.removeItem('name');
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Local Storage (in the browser)
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Cookie & Local Storage Gotchas!
• only stores strings. which means anything being stored
gets converted to a string.
8 -> “8”
true -> “true”
{“a”:1} -> [object Object]
JSON.stringify(), JSON.parse()
Solution
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
20
But what happens when our data get more complicated?
Both IndexedDB & WebSQL can serve as great solutions for this problem.
WebSQL Indexed DB
Except we have some support issues…..
We need to search?
Join Data?
Add / Edit / Delete Items inside of our object?
Sync Data?
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Client Side Storage Solutions
WebSQL
•Large Storage (50M Max)
•Relational Database (SQL lite)
•Tables and relationships, moderately fast
IndexedDB
•Large Storage (50M Max)
•Document Store DB (NoSQL)
•Indexable, large row storage
•No tables, Super fast
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Client Side Storage Frameworks
Loki JS
javascript embedded / in-memory
database
Lovefield
Lovefield is a relational
database written in pure
JavaScript. It provides SQL-like
AlaSQL.js
JavaScript SQL database for
browser and Node.js. Handles both
traditional relational tables and
nested JSON data (NoSQL)
Lawnchair
A lightweight client side JSON
document store
NoSQL SQL
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Client Side Storage Frameworks
Pouchdb
PouchDB is an open-source
JavaScript database inspired
by Apache CouchDB
Firebase
Firebase provides a realtime
database synchronized across
clients and stored on Firebase's
cloud.
WebSqlSync
Automatically synchronize a local
WebSql database (SQLite of the
browser) with a server
Persistence.js
An asynchronous Javascript
database mapper library.
NoSQL Syncing Frameworks SQL Syncing Frameworks
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Which one do you use?
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Database Usage
By Type 2015
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
A Pie Chart of My Favorite Bars
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
A Bar Chart of My Favorite Pies
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Interest Over Time
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
The SQL vs NoSQL Holy War
SQL and NoSQL do the same thing: store data. They take different approaches, which may help or
hinder your project. Despite feeling newer and grabbing recent headlines, NoSQL is not a replacement
for SQL — it’s an alternative.
SQLNoSQL
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL Storage
• Persists after the
browser is closed
• Storage is shared
across all pages on
a domain
Column Types
• TEXT
• NUMERIC
• INTEGER
• REAL
• BLOB
• Sorting
• Grouping
• Compound
SELECTs
• JOINs
• last_insert_rowid(
)
• like, between, in
• indexes
• Primary Key
• Autoincrement
• Limit, Offset
Most Common
Features Supported
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
//Create Our Database
var db = openDatabase('mydb', '1.0', 'my first
database', 2 * 1024 * 1024);
//Create a transaction and run our qureies inside of it
db.transaction(function (tx) {
//Create Table
tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
//Insert Data without params (BAD)
tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
});
WebSQL
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL
db.transaction(function (tx) {
var id = 2;
var userValue = 'creativity';
//Insert Data with params
tx.executeSql(
'INSERT INTO foo (id, text) VALUES (?, ?)',
[id, userValue]
);
});
db.transaction(function (tx) {
//Delete Data with params
tx.executeSql(‘DELETE FROM foo WHERE id = ?', [id]);
});
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL
db.transaction(function (tx) {
// Return Data
// executeSql(query,params,callback)
tx.executeSql('SELECT * FROM foo', [], function (tx, results) {
var len = results.rows.length, i;
for (i = 0; i < len; i++) {
alert(results.rows.item(i).text);
}
});
});
Gotchas
Results is not a array of objects.
The results array is very similar to a query object in CF.
It has a length property
and can be iterated over using parens instead of brackets
you can easily turn it into an array of objects, works great for using in
angular, etc.
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
WebSQL
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
So by 2018 we should have full support…. nope
Web SQL was deprecated because standards are really
important and turning Web SQL into a proper standard
would have been prohibitively difficult.
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
If it is critical to your project to have support on many
different browsers polyfills have been created to
implement support.
In this case local storage would be used to implement
it,
(since it works cross platform, persists across browser
tabs, and persists after browser restarts)
Lovefield - A relational database written in pure JavaScript. It
provides SQL-like syntax and works cross-browser. Created By
Google,
Web Developers
Cordova/PhoneGap sqlite storage adapter
- Drop-in replacement for HTML5/Web SQL API:
Only Change:
window.openDatabase() -> window.sqlitePlugin.openDatabase()
Mobile Developers
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
IndexedDB
window.indexedDB =
window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB
|| window.msIndexedDB;
window.IDBTransaction =
window.IDBTransaction || window.webkitIDBTransaction ||
window.msIDBTransaction;
window.IDBKeyRange =
window.IDBKeyRange || window.webkitIDBKeyRange ||
window.msIDBKeyRange
if (!window.indexedDB) {
window
.alert("Your browser doesn't support a stable version of IndexedDB.")
}
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
IndexedDB
var db;
var request = window.indexedDB.open("newDatabase", 1);
request.onerror = function(event) {
console.log("error: ");
};
request.onsuccess = function(event) {
db = request.result;
console.log("success: "+ db);
};
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
IndexedDB
//Add a record
var request = db.transaction(["employee"], "readwrite")
.objectStore("employee")
.add({ id: "00-03", name: "Kenny", age: 19, email: "kenny@planet.org" });
request.onsuccess = function(event) {
alert("Kenny has been added to your database.");
};
request.onerror = function(event) {
alert("Unable to add datarnKenny is aready exist in your database! ");
}
//Remove a record
var request = db.transaction(["employee"], "readwrite")
.objectStore("employee")
.delete("00-03");
request.onsuccess = function(event) {
alert("Kenny's entry has been removed from your database.");
};
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
IndexedDB (in the browser)
www.agritrackingsystems.com
AGRI TRACKING
SYSTEMS
Agri Tracking Systems keeps track of your
farms, fields, crops, nutrient samples,
budgets all the way down to your daily
operations. Our purpose is simple, we want
to give you the power to become more
efficient by staying informed.
www.agritrackingsystems.com
Agri Mapping makes its simple to build
your maps without having to read through
tons of help guides. We provide all the
information and tools you need, and none
of the ones you don’t. And the best part is
it is accessible from anywhere!
www.agrimapping.com
OUR PRODUCTS

More Related Content

What's hot

Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionDavid Pilato
 
PostgreSQL, your NoSQL database
PostgreSQL, your NoSQL databasePostgreSQL, your NoSQL database
PostgreSQL, your NoSQL databaseReuven Lerner
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced previewPatrick McFadin
 
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...DataStax Academy
 
WebObjects Optimization
WebObjects OptimizationWebObjects Optimization
WebObjects OptimizationWO Community
 
Apache Cassandra and Drivers
Apache Cassandra and DriversApache Cassandra and Drivers
Apache Cassandra and DriversDataStax Academy
 
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...DataStax
 
Spark and cassandra (Hulu Talk)
Spark and cassandra (Hulu Talk)Spark and cassandra (Hulu Talk)
Spark and cassandra (Hulu Talk)Jon Haddad
 
Spark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataSpark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataVictor Coustenoble
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseDataStax Academy
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with ElasticsearchSamantha Quiñones
 
Workshop: Learning Elasticsearch
Workshop: Learning ElasticsearchWorkshop: Learning Elasticsearch
Workshop: Learning ElasticsearchAnurag Patel
 
Leveraging parse.com for Speedy Development
Leveraging parse.com for Speedy DevelopmentLeveraging parse.com for Speedy Development
Leveraging parse.com for Speedy DevelopmentAndrew Kozlik
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraDataStax Academy
 
Elk its big log season
Elk its big log seasonElk its big log season
Elk its big log seasonEric Luellen
 
C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinC* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinDataStax Academy
 
Cassandra EU - Data model on fire
Cassandra EU - Data model on fireCassandra EU - Data model on fire
Cassandra EU - Data model on firePatrick McFadin
 

What's hot (20)

Cassandra in e-commerce
Cassandra in e-commerceCassandra in e-commerce
Cassandra in e-commerce
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English version
 
PostgreSQL, your NoSQL database
PostgreSQL, your NoSQL databasePostgreSQL, your NoSQL database
PostgreSQL, your NoSQL database
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced preview
 
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
 
WebObjects Optimization
WebObjects OptimizationWebObjects Optimization
WebObjects Optimization
 
Apache Cassandra and Drivers
Apache Cassandra and DriversApache Cassandra and Drivers
Apache Cassandra and Drivers
 
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...
The Promise and Perils of Encrypting Cassandra Data (Ameesh Divatia, Baffle, ...
 
Spark and cassandra (Hulu Talk)
Spark and cassandra (Hulu Talk)Spark and cassandra (Hulu Talk)
Spark and cassandra (Hulu Talk)
 
Spark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational DataSpark + Cassandra = Real Time Analytics on Operational Data
Spark + Cassandra = Real Time Analytics on Operational Data
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax Enterprise
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with Elasticsearch
 
Workshop: Learning Elasticsearch
Workshop: Learning ElasticsearchWorkshop: Learning Elasticsearch
Workshop: Learning Elasticsearch
 
Oak Lucene Indexes
Oak Lucene IndexesOak Lucene Indexes
Oak Lucene Indexes
 
Leveraging parse.com for Speedy Development
Leveraging parse.com for Speedy DevelopmentLeveraging parse.com for Speedy Development
Leveraging parse.com for Speedy Development
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache Cassandra
 
Lokijs
LokijsLokijs
Lokijs
 
Elk its big log season
Elk its big log seasonElk its big log season
Elk its big log season
 
C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinC* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
 
Cassandra EU - Data model on fire
Cassandra EU - Data model on fireCassandra EU - Data model on fire
Cassandra EU - Data model on fire
 

Viewers also liked

Quality, Courtesy and a big Parking
Quality, Courtesy and a big ParkingQuality, Courtesy and a big Parking
Quality, Courtesy and a big ParkingFrancesco Fullone
 
Segregation And Resegregation (Online1)
Segregation And Resegregation (Online1)Segregation And Resegregation (Online1)
Segregation And Resegregation (Online1)dwax
 
Html5 storage and browser storage
Html5 storage and browser storageHtml5 storage and browser storage
Html5 storage and browser storageSway Deng
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an islandJacopo Romei
 

Viewers also liked (6)

Quality, Courtesy and a big Parking
Quality, Courtesy and a big ParkingQuality, Courtesy and a big Parking
Quality, Courtesy and a big Parking
 
your browser, your storage
your browser, your storageyour browser, your storage
your browser, your storage
 
Agile == Dynamic?
Agile == Dynamic?Agile == Dynamic?
Agile == Dynamic?
 
Segregation And Resegregation (Online1)
Segregation And Resegregation (Online1)Segregation And Resegregation (Online1)
Segregation And Resegregation (Online1)
 
Html5 storage and browser storage
Html5 storage and browser storageHtml5 storage and browser storage
Html5 storage and browser storage
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an island
 

Similar to Offline survival in the deadzone

In-browser storage and me
In-browser storage and meIn-browser storage and me
In-browser storage and meJason Casden
 
Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRHosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRWoonsan Ko
 
Persistent Offline Storage White
Persistent Offline Storage WhitePersistent Offline Storage White
Persistent Offline Storage WhiteAlexei White
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09Chris Purrington
 
M|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksM|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksMariaDB plc
 
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud
 
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPSimpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPDaniel Zivkovic
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaAmazee Labs
 
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017Alluxio, Inc.
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideDominic Woodman
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfAlkin Tezuysal
 
RateMyArea - interesting rails bits
RateMyArea - interesting rails bitsRateMyArea - interesting rails bits
RateMyArea - interesting rails bitsCiaran Lee
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBJustin Smestad
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Arun Gupta
 
Running your Java EE 6 applications in the Cloud (FISL 12)
Running your Java EE 6 applications in the Cloud (FISL 12)Running your Java EE 6 applications in the Cloud (FISL 12)
Running your Java EE 6 applications in the Cloud (FISL 12)Arun Gupta
 
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011Arun Gupta
 

Similar to Offline survival in the deadzone (20)

In-browser storage and me
In-browser storage and meIn-browser storage and me
In-browser storage and me
 
Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRHosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
 
Persistent Offline Storage White
Persistent Offline Storage WhitePersistent Offline Storage White
Persistent Offline Storage White
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
 
M|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksM|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocks
 
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
 
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCPSimpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
Simpler, faster, cheaper Enterprise Apps using only Spring Boot on GCP
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & Kibana
 
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017
Effective Spark with Alluxio at Strata+Hadoop World San Jose 2017
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech Side
 
Figaro
FigaroFigaro
Figaro
 
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdfMySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
MySQL Ecosystem in 2023 - FOSSASIA'23 - Alkin.pptx.pdf
 
RateMyArea - interesting rails bits
RateMyArea - interesting rails bitsRateMyArea - interesting rails bits
RateMyArea - interesting rails bits
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
DOTNET8.pptx
DOTNET8.pptxDOTNET8.pptx
DOTNET8.pptx
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
 
SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
 
Running your Java EE 6 applications in the Cloud (FISL 12)
Running your Java EE 6 applications in the Cloud (FISL 12)Running your Java EE 6 applications in the Cloud (FISL 12)
Running your Java EE 6 applications in the Cloud (FISL 12)
 
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
 

Recently uploaded

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Offline survival in the deadzone

Editor's Notes

  1. so you have just completed your beautiful app and it works flawlessly on your dev environment. you send it to production sit back and wait for the everyone to start telling you how amazing it is using your app
  2. right because thats how it works. no instead you get the site live and you start to gradually increase traffic simultaneously your site starts slowing down
  3. shortly after you are getting phone calls about how your site takes forever to load or its broken, its a piece of crap, or many other unpleasant comments and you somehow have to fix it quickly
  4. or maybe your app requirements include “it has to work everywhere” and suddenly you have to start worrying about Offline Support for my company this was necessity and of course offline support has its own set of challenges
  5. but that never stopped anyone remember your a programmer, you can do anything thankfully the browser is here to help
  6. I present to you databases in browsers! the best thing since sliced bread but lets make sure we've got good browser support
  7. IE Edge Firefox Opera Mini So as expected IE is here to spoil the party again but don't worry IE has its strengths
  8. But hey the do rank number one for something although thats basically like saying you win at losing but thankfully IE does support some features for offline support
  9. and as for opera mini, well the fact that it doesn't support cookies is a little concerning but in the same breath, i cant name a single person i know that uses it so im just going to let that one slide
  10. so why don't we just use cookies or local storage for everything?
  11. so why don't we just use cookies or local storage for everything?
  12. so why don't we just use cookies or local storage for everything?
  13. working with strings, not very extensible by themselves, a pain to work with thankfully there is a javascript library called jCookie which allows you to add edit and delete it like local storage
  14. jCookie is an api for working with cookies it even allows you to store JSON and will parse it back for you but remember we have a limitation of 4KB so
  15. so for scenarios like caching, storing temporary data, or persisting across browser tabs these work great
  16. so why don't we just use cookies or local storage for everything?