SlideShare a Scribd company logo
1 of 144
CouchApps with
CouchDB & jQuery
  Cross-Platform, Offline-Enabled,
       Synchronizable Apps
The Problem Set
Problem:
Multiple Platforms
How to create apps for multiple platforms?
Problem:
Multiple Platforms
How to create apps for multiple platforms?
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for
  each supported
     platform
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for
  each supported
     platform
                            Web app
                          optimized for
                       targeted platforms
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for                                Web app
  each supported                             packaged up as a
     platform
                            Web app           “native” app for
                          optimized for        each platform
                       targeted platforms
Problem:
Multiple Platforms
How to create apps for multiple platforms?




   Native app for                                Web app
  each supported                             packaged up as a
     platform
                            Web app           “native” app for
                          optimized for        each platform
                       targeted platforms
Problem:
Offline Apps
How to create offline apps?
Problem:
Offline Apps
How to create offline apps?
Problem:
Offline Apps
How to create offline apps?



    HTML5:
 Offline Web[1]
Applications




                            1. http://diveintohtml5.org/offline.html
                            2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?



    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]




                                 1. http://diveintohtml5.org/offline.html
                                 2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]




                                      1. http://diveintohtml5.org/offline.html
                                      2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                      HTML5
                                                                :
                                                Web SQ
                                                Databa L
                                                      se




                                      1. http://diveintohtml5.org/offline.html
                                      2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?

                                  HTML5:
                                 IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                      HTML5
                                                                :
                                                Web SQ
                                                Databa L
                                                      se
        Embedded
        Database:
         SQLite

                                      1. http://diveintohtml5.org/offline.html
                                      2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?

                                              HTML5:
                                             IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                                  HTML5
                                                                            :
                                                            Web SQ
                                                            Databa L
                                                                  se
        Embedded                 Embedded
        Database:                Database:
         SQLite                CouchDB/
                               Couchbase
                                                  1. http://diveintohtml5.org/offline.html
                                                  2. http://diveintohtml5.org/storage.html
Problem:
Offline Apps
How to create offline apps?

                                              HTML5:
                                             IndexedDB
    HTML5:
 Offline Web[1]         HTML5:
Applications          Local
                    Storage[2]
                                                                  HTML5
                                                                            :
                                                            Web SQ
                                                            Databa L
                                                                  se
        Embedded                 Embedded
        Database:                Database:
         SQLite                CouchDB/
                               Couchbase
                                                  1. http://diveintohtml5.org/offline.html
                                                  2. http://diveintohtml5.org/storage.html
Problem:
Synchronization
How to synchronize data between devices, servers and users?
Problem:
Synchronization
How to synchronize data between devices, servers and users?
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c
         synchronization
           (e.g. SyncML)
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c                CouchDB/
         synchronization
           (e.g. SyncML)
                                   Couchbase Mobile
                                    synchronization
Problem:
Synchronization
How to synchronize data between devices, servers and users?




   Build your own
    sync feature                  iCloud




         Domain-speci c                CouchDB/
         synchronization
           (e.g. SyncML)
                                   Couchbase Mobile
                                    synchronization
One Possible Solution
CouchApp
CouchApp
• web app built using JavaScript, CSS and HTML5
CouchApp
• web app built using JavaScript, CSS and HTML5
• can be packaged up as a “native” app
CouchApp
• web app built using JavaScript, CSS and HTML5
• can be packaged up as a “native” app
• stores data in its own CouchDB/Couchbase database
CouchApp
•   web app built using JavaScript, CSS and HTML5
•   can be packaged up as a “native” app
•   stores data in its own CouchDB/Couchbase database
•   can synchronize with other CouchApps




             +                           =
Creating “Native” Mobile Web Apps
jQuery Mobile: Touch-
Optimized Web Framework
“A uni ed user interface
system across all popular
mobile device platforms,
built on the rock-solid jQuery
and jQuery UI foundation. Its
lightweight code is built with
progressive enhancement,
and has a exible, easily
themeable design.”

From:
http://jquerymobile.com/
PhoneGap
“PhoneGap is an HTML5 app
platform that allows you to
author native applications
with web technologies and get
access to APIs and app stores.
PhoneGap leverages web
technologies developers
already know best... HTML and
JavaScript.”

From:
http://www.phonegap.com/
Building iPhone Apps with
HTML, CSS, and JavaScript
“It's a fact: if you know HTML, CSS,
and JavaScript, you already have
the tools you need to develop
your own iPhone apps. With this
book, you'll learn how to use these
open source web technologies to
design and build apps for the
iPhone and iPod Touch on the
platform of your choice-without
using Objective-C or Cocoa.”

From:
http://shop.oreilly.com/
product/9780596805791.do
Building Android Apps with
HTML, CSS, and JavaScript
“If you know HTML, CSS, and
JavaScript, you already have
the tools you need to develop
Android applications. This
hands-on book shows you how
to use these open source web
standards to design and build
apps that can be adapted for
any Android device – without
having to use Java.”

From:
http://shop.oreilly.com/
product/0636920010067.do
CouchDB and Couchbase
About CouchDB
About CouchDB
• a database that stores JSON "documents"
About CouchDB
• a database that stores JSON "documents"
• accessed through HTTP
About CouchDB
• a database that stores JSON "documents"
• accessed through HTTP
• queried using views produced by Map/Reduce functions
About CouchDB
•   a database that stores JSON "documents"
•   accessed through HTTP
•   queried using views produced by Map/Reduce functions
•   can also serve static les
About CouchDB
•   a database that stores JSON "documents"
•   accessed through HTTP
•   queried using views produced by Map/Reduce functions
•   can also serve static les
•   can act as a "side-effect free" web application server
About Couchbase
About Couchbase
• superset of CouchDB
About Couchbase
• superset of CouchDB
• includes geospatial indexing
About Couchbase
• superset of CouchDB
• includes geospatial indexing
• available as Couchbase Mobile for iOS and Android
Device
Synchronization
CouchApp Examples
Grocery Sync
Demo app that keeps
your shopping list in
sync between devices.

Links:
  • CouchApp code
  • iOS code
  • Android code
  • Presentation about
    Couchbase Mobile
Monocles
Diaspora federated social
web node implemented
as a CouchApp.

Links:
  • Demo
  • Code
  • ReadWriteHack
    Interview with
    Max Ogden:
    Part 1, Part 2
CatMapper
“Geospatially referencing cats”

Links:
  • Demo
  • Code
The CouchDB jQuery Plugin
HTML Skeleton
<!DOCTYPE html>
<html>
 <head>
  <title>jQuery and CouchDB</title>
  <script src="/_utils/script/jquery.js?1.4.2"></script>
  <script src="/_utils/script/jquery.couch.js?0.11.0"></script>
 </head>
 <body>
 </body>
</html>
The same-origin policy[1] dictates that
your HTML and AJAX data (JSON) must
be retrieved from the same origin.




                        1. http://www.w3.org/Security/wiki/Same_Origin_Policy
All Databases
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/_all_dbs 200 OK
All Databases
$.couch.allDbs({
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/_all_dbs 200 OK

[
    "_replicator",
    "_users"
]
Create a Database
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb 201 Created
Create a Database
$.couch.db("mydb").create({
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb 201 Created

{"ok":true}
Save a New Document
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});

POST http://localhost:5984/mydb    201 Created
Save a New Document
$.couch.db("mydb").saveDoc({}, {
   success: function(data) {
     console.log(data);
   }
});

POST http://localhost:5984/mydb    201 Created

{
    "ok":true,
    "id":"e15d848571c8a0352e94738ba6018790",
    "rev":"1-967a00dff5e02add41819138abb3284d"
}
Open a Document
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/mydb/e15d8485…    200 OK
Open a Document
$.couch.db("mydb").openDoc("e15d8485…", {
   success: function(data) {
     console.log(data);
   }
});

GET http://localhost:5984/mydb/e15d8485…    200 OK

{
    _id="e15d848571c8a0352e94738ba6018790",
    _rev="1-967a00dff5e02add41819138abb3284d"
}
Save an Updated Document
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb/0a72c9c3…        201 Created
Save an Updated Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "1-967a00dff5e02add41819138abb3284d",
   title: "CouchApps"
};

$.couch.db("mydb").saveDoc(doc, {
   success: function(data) {
     console.log(data);
   }
});

PUT http://localhost:5984/mydb/0a72c9c3…         201 Created

{
    "ok":true,
    "id":"0a72c9c36bd169818dc97ed18b000aa4",
    "rev":"2-516027e3179a22a22e06874c374e8ef0"
}
Remove Document
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});

DELETE http://localhost:5984/mydb/0a72…?rev=2-51… 200 OK
Remove Document
var doc = {
   _id: "0a72c9c36bd169818dc97ed18b000aa4",
   _rev: "2-516027e3179a22a22e06874c374e8ef0"
};

$.couch.db("mydb").removeDoc(doc, {
    success: function(data) {
      console.log(data);
   }
});

DELETE http://localhost:5984/mydb/0a72…?rev=2-51… 200 OK

{
    "id": "0a72c9c36bd169818dc97ed18b000aa4"
    "ok":true,
    "rev":"3-e9a5aa1c486eee23c84fa028bc904991"
}
Changes
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});

GET http://localhost:5984/mydb/_changes
?heartbeat=10000&feed=longpoll&since=34     200 OK
Changes
$.couch.db("mydb").changes().onChange(function(data) {
   console.log(data);
});

GET http://localhost:5984/mydb/_changes
?heartbeat=10000&feed=longpoll&since=34     200 OK

{ "results":[
     { "seq":35,
       "id":"d12ee5ea1df6baa2b06451f44a01b7b5",
       "changes":[
         { "rev":"1-967a00dff5e02add41819138abb3284d" }
       ]
     }
  ],
  "last_seq":35
}
Documentation
CouchDB jQuery Plugin Reference
http://bradley-holt.com/2011/07/couchdb-jquery-plugin-reference/

jQuery CouchDB jsDoc Reference
http://daleharvey.github.com/jquery.couch.js-docs/symbols/index.html
CouchApp Tooling
Compiling and Pushing
a CouchApp
Install the CouchApp Tool
Install the CouchApp Tool
$ sudo easy_install pip
Install the CouchApp Tool
$ sudo easy_install pip

$ sudo pip install couchapp
Generate a CouchApp
Generate a CouchApp
$ couchapp generate tutorial
Generate a CouchApp
$ couchapp generate tutorial

2011-09-27 11:54:12 [INFO] /tutorial generated.
Generate a CouchApp
$ couchapp generate tutorial

2011-09-27 11:54:12 [INFO] /tutorial generated.

$ cd tutorial
Generated Files
Generated Files
$ tree -FL 1
Generated Files
$ tree -FL 1

.
      README.md
      _attachments/
      _id
      couchapp.json
      evently/
      language
      lists/
      shows/
      updates/
      vendor/
Push the CouchApp
Push the CouchApp
$ couchapp push tutorial
Push the CouchApp
$ couchapp push tutorial

2011-09-27 11:55:02 [INFO] Visit your CouchApp here:
http://127.0.0.1:5984/tutorial/_design/tutorial/index.html
The Generated CouchApp
A CouchApp is entirely self-contained
within a design document.
About Design Documents
A CouchDB design document stores
application-speci c code such as:
  • View de nitions
    • Map functions
    • Reduce functions
  • Show functions
  • List functions
  • Document update handlers
  • Document update validation functions
  • Rewrite de nitions
  • Arbitrary elds
  • Attachments
CouchApp Building Blocks
Evently
Evently is a jQuery plugin for
writing event-based applications.
Widgets
$("#user").evently({
   _init: {
     async: function(callback) {
        $.couch.session({
           success: function(data) {
             callback(data);
           }
        });
     },
     mustache: "<span>{{#name}}Logged in as {{name}}{{/name}}
{{^name}}Not logged in{{/name}}</span>",
     data: function(data) {
        return data.userCtx;
     }
   }
});
CouchApp + Evently
CouchApp + Evently
$ tree -F evently
CouchApp + Evently
$ tree -F evently

evently
       items/
           _changes/
                data.js
                mustache.html
                query.json
       profile/
         profileReady/
            mustache.html
            selectors/
                 form/
}
Mustache
Logic-Less Templates
Evently knows how to wire Mustache
templates and data together.
Variables
Template:
<p>Hello, {{name}}.</p>

Hash:
{
  "name": "Bradley"
}

Output:
<p>Hello, Bradley.</p>
False or Empty Sections
Template:
<p>Shown.</p>
{{#show}}
<p>Not shown.</p>
{{/show}}

Hash:
{
  "show": false
}

Output:
<p>Shown.</p>
Inverted Sections
Template:
{{^user}}
 <p>Not logged in</p>
{{/user}}

Hash:
{
  "user": false
}

Output:
 <p>Not logged in</p>
Non-Empty Lists
Template:
{{#users}}
 <p>{{name}}</p>
{{/users}}

Hash:
{ "users": [
    { "name": "Bradley" },
    { "name": "Jason" },
  ]
}

Output:
 <p>Bradley</p>
 <p>Jason</p>
CouchApp + Evently +
Mustache
CouchApp + Evently +
Mustache
$ tree -F evently/posts
CouchApp + Evently +
Mustache
$ tree -F evently/posts

evently/posts
       _init.js
       data.js
       mustache.html
       post/
           _init.js
           data.js
           mustache.html
           query.json
       query.json
The “Posts” Mustache File
The “Posts” Mustache File
$ cat evently/posts/mustache.html
The “Posts” Mustache File
$ cat evently/posts/mustache.html

<ul>
{{#posts}}
 <li>
  <a href="/posts/{{id}}">{{title}}</a>
 </li>
{{/posts}}
</ul>
The “Post” Mustache File
The “Post” Mustache File
$ cat evently/posts/post/mustache.html
The “Post” Mustache File
$ cat evently/posts/post/mustache.html

{{#post}}
<article>
 <h1>{{title}}</h1>
 {{content}}
 <p><a href="/posts/{{id}}">{{updated}}</a></p>
</article>
{{/post}}
Pathbinder
Pathbinder is a jQuery plugin for
triggering events based on the path
components of a URL hash.
Pathbinder + Evently
<div id="pro le"></div>
<script type="text/javascript">
$("#pro le").evently({
   _init: {
      path: "/",
      mustache: '<p><a href="#/pro le/Bradley">View Pro le</a></p>'
   },
   viewPro le: {
      path: "/pro le/:id",
      mustache: '<p>Viewing {{id}}'s pro le; <a href="#/">Back</a></p>',
      data: function(e, params) {
        return params;
      }
   }
});
</script>
An Evently widget’s path de nition
can be stored in a path.txt le within
a CouchApp.
CouchApp + Evently +
Pathbinder
CouchApp + Evently +
Pathbinder
$ tree -F evently/posts
CouchApp + Evently +
Pathbinder
$ tree -F evently/posts

evently/posts
       _init.js
       data.js
       mustache.html
       path.txt
       post/
           _init.js
           data.js
           mustache.html
           path.txt
Path Files
Path Files
$ cat evently/posts/path.txt
Path Files
$ cat evently/posts/path.txt

/posts
Path Files
$ cat evently/posts/path.txt

/posts

$ cat evently/posts/post/path.txt
Path Files
$ cat evently/posts/path.txt

/posts

$ cat evently/posts/post/path.txt

/posts/:id
Resources
Alternative CouchApp Tools
node.couchapp.js
  • Command-line tool written for Node.js
  • https://github.com/mikeal/node.couchapp.js
Kanso Framework
  • Also built using Node.js
  • http://kansojs.org
soca
  •    Command-line tool written in Ruby
  •    https://github.com/quirkey/soca

Reupholster
  • A simple way to get started developing CouchApps
  • http://reupholster.iriscouch.com/reupholster/_design/app/index.html
Hosting
Iris Couch
   • Free (for now)
   • Couchbase server
   • GeoCouch geospatial indexing
   • http://www.iriscouch.com
Cloudant
  • Various pricing levels
  • Full-text searching
  • Ad-hoc queries
  • Elastic scaling, clustering and sharding using BigCouch
  • https://cloudant.com
Documentation and Books
CouchApp Wiki                     Writing and Querying MapReduce
http://couchapp.org/              Views in CouchDB
                                  by Bradley Holt (O’Reilly)
CouchDB Wiki                      978-1-449-30312-9
http://wiki.apache.org/couchdb/
                                  Scaling CouchDB
CouchDB: The De nitive Guide      by Bradley Holt (O’Reilly)
by J. Chris Anderson, Jan         063-6-920-01840-7
Lehnardt and Noah Slater
(O’Reilly)                        Beginning CouchDB
978-0-596-15589-6                 by Joe Lennon (Apress)
                                  978-1-430-27237-3
http://oreilly.com/catalog/9781449303129/   http://oreilly.com/catalog/9781449303433/
Questions?
Thank You
                                  @BradleyHolt
                             http://bradley-holt.com
                           bradley.holt@foundline.com




Copyright © 2011 Bradley Holt. All rights reserved.

More Related Content

What's hot

Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)ColdFusionConference
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101Greg Hurlman
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDee Sadler
 
Advanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsAdvanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsChris Love
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Serdar Basegmez
 
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...David Kaneda
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulRobert Nyman
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitHristo Chakarov
 
High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)Nicholas Zakas
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017AmarInfotech
 
Service workers your applications never felt so good
Service workers   your applications never felt so goodService workers   your applications never felt so good
Service workers your applications never felt so goodChris Love
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceDmitry Sheiko
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed BumpsNicholas Zakas
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?Evan Stone
 
The Future Of Web Frameworks
The Future Of Web FrameworksThe Future Of Web Frameworks
The Future Of Web FrameworksMatt Raible
 
Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Matt Raible
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angularBasarat Syed
 

What's hot (20)

Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
 
SharePoint Development 101
SharePoint Development 101SharePoint Development 101
SharePoint Development 101
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
Advanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms toolsAdvanced front end debugging with ms edge and ms tools
Advanced front end debugging with ms edge and ms tools
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
 
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
 
What is HTML 5?
What is HTML 5?What is HTML 5?
What is HTML 5?
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkit
 
do u webview?
do u webview?do u webview?
do u webview?
 
High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)High Performance JavaScript (Amazon DevCon 2011)
High Performance JavaScript (Amazon DevCon 2011)
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017
 
Service workers your applications never felt so good
Service workers   your applications never felt so goodService workers   your applications never felt so good
Service workers your applications never felt so good
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right Choice
 
Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed Bumps
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?
 
The Future Of Web Frameworks
The Future Of Web FrameworksThe Future Of Web Frameworks
The Future Of Web Frameworks
 
Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 

Similar to jQuery Conference Boston 2011 CouchApps

CouchConf NYC CouchApps
CouchConf NYC CouchAppsCouchConf NYC CouchApps
CouchConf NYC CouchAppsBradley Holt
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"Software Park Thailand
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1NAILBITER
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
Worklight technical intro v2
Worklight technical intro v2Worklight technical intro v2
Worklight technical intro v2Vinh Nguyen
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...boxuno
 
HTML5 Technical Executive Summary
HTML5 Technical Executive SummaryHTML5 Technical Executive Summary
HTML5 Technical Executive SummaryGilad Khen
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDKIntel® Software
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaWASdev Community
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum SlidesAbhishek Gupta
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)Saltlux zinyus
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)zinyus
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpPrabhakar Manthena
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesKyle McInnes
 
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Taras Filatov
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsRomin Irani
 

Similar to jQuery Conference Boston 2011 CouchApps (20)

CouchConf NYC CouchApps
CouchConf NYC CouchAppsCouchConf NYC CouchApps
CouchConf NYC CouchApps
 
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet""BlackBerry Webworks : Apps for The Smartphone and Tablet"
"BlackBerry Webworks : Apps for The Smartphone and Tablet"
 
Html5 workshop part 1
Html5 workshop part 1Html5 workshop part 1
Html5 workshop part 1
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
Worklight technical intro v2
Worklight technical intro v2Worklight technical intro v2
Worklight technical intro v2
 
Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...Should you use HTML5 to build your product? The pros & cons of using current ...
Should you use HTML5 to build your product? The pros & cons of using current ...
 
BlackBerry WebWorks
BlackBerry WebWorksBlackBerry WebWorks
BlackBerry WebWorks
 
HTML5 Technical Executive Summary
HTML5 Technical Executive SummaryHTML5 Technical Executive Summary
HTML5 Technical Executive Summary
 
Web works presso
Web works pressoWeb works presso
Web works presso
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDK
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
 
Education&work experience
Education&work experienceEducation&work experience
Education&work experience
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum Slides
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wp
 
WebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and SmartphonesWebWorks Development for BlackBerry PlayBook and Smartphones
WebWorks Development for BlackBerry PlayBook and Smartphones
 
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
Mobile Backend Apps and APIs meetup London overview of BaaS APIs and discussi...
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElements
 
Qnx html5 hmi
Qnx html5 hmiQnx html5 hmi
Qnx html5 hmi
 

More from Bradley Holt

Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Bradley Holt
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignBradley Holt
 
Entity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonEntity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonBradley Holt
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignBradley Holt
 
ZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBBradley Holt
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchAppsBradley Holt
 
OSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBOSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBBradley Holt
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with ApacheBradley Holt
 
CouchDB at New York PHP
CouchDB at New York PHPCouchDB at New York PHP
CouchDB at New York PHPBradley Holt
 
New Features in PHP 5.3
New Features in PHP 5.3New Features in PHP 5.3
New Features in PHP 5.3Bradley Holt
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHPBradley Holt
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web ServicesBradley Holt
 
Zend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughZend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughBradley Holt
 
Burlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBurlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBradley Holt
 

More from Bradley Holt (15)

Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Entity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf BostonEntity Relationships in a Document Database at CouchConf Boston
Entity Relationships in a Document Database at CouchConf Boston
 
ZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven DesignZendCon 2011 UnCon Domain-Driven Design
ZendCon 2011 UnCon Domain-Driven Design
 
ZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDBZendCon 2011 Learning CouchDB
ZendCon 2011 Learning CouchDB
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchApps
 
OSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDBOSCON 2011 Learning CouchDB
OSCON 2011 Learning CouchDB
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with Apache
 
CouchDB at New York PHP
CouchDB at New York PHPCouchDB at New York PHP
CouchDB at New York PHP
 
Intermediate PHP
Intermediate PHPIntermediate PHP
Intermediate PHP
 
New Features in PHP 5.3
New Features in PHP 5.3New Features in PHP 5.3
New Features in PHP 5.3
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web Services
 
Zend Framework Quick Start Walkthrough
Zend Framework Quick Start WalkthroughZend Framework Quick Start Walkthrough
Zend Framework Quick Start Walkthrough
 
Burlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion PresentationBurlington, VT PHP Users Group Subversion Presentation
Burlington, VT PHP Users Group Subversion Presentation
 

Recently uploaded

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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 ...
 

jQuery Conference Boston 2011 CouchApps

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  5. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  6. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  7. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  8. &amp;#x201C;Add to home screen&amp;#x201D; option\n
  9. \n
  10. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  11. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  12. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  13. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  14. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  15. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  16. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  17. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  18. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  19. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  20. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  21. &amp;#x201C;Offline Web Applications&amp;#x201D; refers to &amp;#x201C;appcache&amp;#x201D; or &amp;#x201C;application cache&amp;#x201D; which is implemented via a cache manifest file.\n&amp;#x201C;Local Storage&amp;#x201D; refers to the &amp;#x201C;Web Storage API&amp;#x201D; which stores key/value pairs.\n
  22. \n
  23. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  24. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  25. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  26. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  27. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  28. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  29. Building your own sync feature is difficult.\niCloud is for iOS 5 only.\nCouchbase Mobile works on both iOS and Android devices.\n
  30. \n
  31. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  32. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  33. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  34. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  35. Technically, a CouchApp can synchronize with anything else using CouchDB/Couchbase.\n
  36. Not the focus of this talk.\n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  43. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  44. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  45. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  46. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  47. Static files could include HTML files, images, videos, etc.\nDiscuss &amp;#x201C;side-effect free&amp;#x201D; in the context of CouchDB show and list functions.\n
  48. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  49. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  50. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  51. Geospatial indexing is implemented via GeoCouch.\nCouchbase is also the name of the company behind the product of the same name.\nCouchbase contributes back to CouchDB.\n
  52. CouchDB implements multi-master replication.\nCouchApps are an example of &amp;#x201C;ground computing&amp;#x201D; where data moves from the &amp;#x201C;cloud&amp;#x201D; to the end user&amp;#x2019;s device.\n
  53. \n
  54. I believe the iOS and Android versions are actually native.\n
  55. CouchDB is a great fit for decentralized social apps.\n
  56. This app takes advantage of the geospatial indexing available in GeoCouch.\n
  57. \n
  58. This will need to be served by CouchDB.\njQuery and the CouchDB jQuery plugin ship with CouchDB.\n
  59. \n
  60. Console logging can easily be replaced with DOM manipulation code.\n
  61. Console logging can easily be replaced with DOM manipulation code.\n
  62. Console logging can easily be replaced with DOM manipulation code.\n
  63. \n
  64. \n
  65. \n
  66. This is saving an empty document.\n
  67. This is saving an empty document.\n
  68. This is saving an empty document.\n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. A new revision is created when a document is deleted.\n
  76. A new revision is created when a document is deleted.\n
  77. A new revision is created when a document is deleted.\n
  78. This uses long polling, keeping a connection open between client and server.\n
  79. This uses long polling, keeping a connection open between client and server.\n
  80. This uses long polling, keeping a connection open between client and server.\n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. This CouchApp tool is written in Python.\nOther CouchApp tooling options are available.\n
  87. This CouchApp tool is written in Python.\nOther CouchApp tooling options are available.\n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. Includes account, profile and items widgets out-of-the-box.\n
  96. \n
  97. A database can have multiple CouchApps and/or design documents.\nDesign documents are named &amp;#x201C;_design/&lt;name&gt;&amp;#x201D;.\n
  98. \n
  99. \n
  100. \n
  101. Widgets are wired up to specified DOM elements.\n
  102. File system tree is packaged up as a set of Evently widgets.\nEvently widgets can be deeply nested.\n
  103. File system tree is packaged up as a set of Evently widgets.\nEvently widgets can be deeply nested.\n
  104. \n
  105. \n
  106. Variables can be &amp;#x201C;unescaped&amp;#x201D; by using three braces instead of two.\n&amp;#x201C;Missed&amp;#x201D; (e.g. undefined or null) variables will output nothing.\n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. Mustache templates seem to require one, and only one, root element.\n
  113. Mustache templates seem to require one, and only one, root element.\n
  114. \n
  115. \n
  116. \n
  117. \n
  118. Creating a &amp;#x201C;View Profile&amp;#x201D; hyperlink which can be clicked, triggering a &amp;#x201C;viewProfile&amp;#x201D; widget which contains a link &amp;#x201C;back&amp;#x201D; to the first widget.\n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. Not necessarily compatible with the Python version.\n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n