SlideShare a Scribd company logo
1 of 151
Download to read offline
Is HTML5
   ready for
production?
Hi, I’m Remy

@rem
remy@leftlogic.com

I <3 JavaScript

Questions: interrupt
& ask!
There's a lot more down here.
HTML5 is a spec
sort of
"HTML5" is a ^brand
MOAR!!!
"HTML5"




          Geolocation
          Web Workers
          Web Sockets
          Web SQL Databases
          Web Storage
          Offline applications
HTML5
          Offline events
          Canvas
          Video
          Web Forms
H TM L5
N OT


NOT HTM
           L5
CSS != HTML
But maybe we should have been more careful
caniuse.com
When can I
use "HTML5"?
Making it
work in
the "other"
browser
Polyfill
A shim that mimics a future
API providing a fallback to
       older browsers
    http://goo.gl/0Z9eI
Tools
Modernizr to detect support
yepnode.js to conditionally load
(available as part of Modernizr)
Tools
Modernizr.load({
  test: Modernizr.geolocation,
  nope: 'geo-polyfill.js',
  complete: initMyGeoApp
});
Oh, and learn
JavaScript
Web Storage
Cookies
suck.
Not the edible ones, duh.




Cookies
suck.
The code for cookies
 is a pain - I always
       google it.
"Session" cookies
leak across sessions.
Persistent cookies
require special date
       format
Deleting a cookie, isn't
 really deleting, but
 setting in the past.
Varying degrees of
limitations on size and
       number.
Fuck cookies.
Sexy Web Storage FTW
One Interface


localStorage
sessionStorage

 http://dev.w3.org/html5/webstorage/
localStorage

• Persists
• Applied to document origin, i.e.
  scheme/host/port tuple

• No expiry
sessionStorage

• Lasts whilst on the document origin
• Doesn't leak
• Exactly the same API as localStorage
5mb?
Done! o/
However: utf-16 ∴ 2½Mb
API
void setItem(key, value)
any* getItem(key)
void removeItem(key)
string key(index)
void clear()
readonly number length
var store = sessionStorage;
Play
       store.setItem('name','rem');
       store.getItem('name');
       store.removeItem('name');




                    Do it in the console!
API
setter setItem
getter getItem
deleter removeItem
var store = sessionStorage;
Play
       store.name = 'rem';
       store.name;
       delete store.name;




                     Do it in the console!
t ip
   There's no security
   protecting the API
 // Safari debugger broken:
 ss.setItem('key', 12);
Values are strings

      Work around: JSON
 (and http://www.json.org/json2.js)
Play
       var store = sessionStorage,
           user = { screen_name : ‘rem’,
                    rating : 11 };


       store.user = JSON.stringify(user));
       var gotUser = JSON.parse(store.user);
       alert(gotUser.screen_name);
Events too
window.addEventListener('storage', function (event) {
  console.log(event);
}, false);


                                http://jsbin.com/ahafa3
Storage in all
  browsers
window.name
sessionStorage = (function () {
  var data = window.name ? JSON.parse(window.name) : {};

  return {
     clear: function () {
        data = {};
        window.top.name = '';
     },
     getItem: function (key) {
        return data[key] || null;
     },
     removeItem: function (key) {
        delete data[key];
        window.top.name = JSON.stringify(data);
     },
     setItem: function (key, value) {
        data[key] = value;
        window.top.name = JSON.stringify(data);
     }
  };
})();
                       http://gist.github.com/350433
t ip
 Firefox cookie security
 applies to Storage too :(
t ip
var cookiesEnabled = (function () {
  // the id is our test value
  var id = +new Date();

  // generate a cookie to probe cookie access
  document.cookie = '__cookieprobe=' + id + ';path=/';

  // if the cookie has been set, then we're good
  return (document.cookie.indexOf(id) !== -1);
})();
Web SQL Databases




             http://flic.kr/p/drmCJ
IndexedDB



            http://flic.kr/p/5KXFwB
Questions?
Canvas
Cooler than this guy.
Canvas   SVG
http://vimeo.com/6691519
• It's not one is better than the other,
  they do different things

• Select canvas when it makes sense
• Don't assume interactive means
  canvas

• Check out raphaeljs.com
http://mrdoob.com
canvas-1.html
Play
       <!DOCTYPE html>
       <html lang="en">
       <head>
       <meta charset="utf-8" />
       <title>Canvas</title>
       </head>
       <body>
         <canvas></canvas>
       </body>
       </html>
        http://dev.w3.org/html5/canvas-api/canvas-2d-api.html
2D API

ctx = canvas.getContext('2d')
Start Simple
fillRect, strokeRect
      & colours
ctx.fillRect(10, 10, 100, 100);
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(100, 75, 50, 50);
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(100, 75, 50, 50);
ctx.strokeStyle = '#0c0';
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(100, 75, 50, 50);
ctx.strokeStyle = '#0c0';
ctx.lineWidth = 5;
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(100, 75, 50, 50);
ctx.strokeStyle = '#0c0';
ctx.lineWidth = 5;
ctx.arc(100,50,25,0,Math.PI*2,true);
ctx.fillRect(10, 10, 100, 100);
ctx.fillStyle = '#c00';
ctx.fillRect(100, 75, 50, 50);
ctx.strokeStyle = '#0c0';
ctx.lineWidth = 5;
ctx.arc(100,50,25,0,Math.PI*2,true);
ctx.stroke();
t ip

  Math.PI == 180°
t ip

 Math.PI *2 == 360°
t ip
  d * Math.PI / 180
      == radian
t ip   CSS stretches
Gradient fills
1. Create a gradient object

2.Add colour stops

3.Set the gradient to the
 fillStyle

4.Draw
var w = canvas.width,
    h = canvas.height;

var gradient = ctx.createLinearGradient(0, 0, w, h);
var w = canvas.width,
    h = canvas.height;

var gradient = ctx.createLinearGradient(0, 0, w, h);
gradient.addColorStop(0, '#fff');
gradient.addColorStop(0.5, '#f00');
gradient.addColorStop(1, '#000');
var w = canvas.width,
    h = canvas.height;

var gradient = ctx.createLinearGradient(0, 0, w, h);
gradient.addColorStop(0, '#fff');
gradient.addColorStop(0.5, '#f00');
gradient.addColorStop(1, '#000');

ctx.fillStyle = gradient;
var w = canvas.width,
    h = canvas.height;

var gradient = ctx.createLinearGradient(0, 0, w, h);
gradient.addColorStop(0, '#fff');
gradient.addColorStop(0.5, '#f00');
gradient.addColorStop(1, '#000');

ctx.fillStyle = gradient;
ctx.fillRect(0, 0, w, h);
Play



createRadialGradient(x0,y0,r0,x1,y1,r1)
Pattern Fills
var img = new Image();
img.src = url;
var pattern = ctx.createPattern(img,'repeat');
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, w, h);
t ip   invalid_state

 img.onload = function () {
    // now use image for canvas
 };
Playing with paths
• For drawing irregular shapes
• Can be filled
• ...or stroked.
lineWidth     rect(x,y,h,w)

lineTo(x,y)   arc(x,y,r,s,e,
              anticw)
moveTo(x,y)
              fill()
beginPath()
              stroke()
closePath()
drawImage
<img>    <canvas>   <video>




        <canvas>
drawImage(src, dx, dy)

drawImage(src, dx, dy, dw, dh)

drawImage(src, sx, sy, sw, sh,
          dx, dy, dw, dh)
Play
       img.onload = function () {
          // this == img
          canvas.width = this.width;
          canvas.height = this.height;
          ctx.drawImage(this, 0, 0);
       };




                           canvas-10.html
pixel
pushing
ctx.getImageData(0,0,w,h)
ctx.getImageData(0, 0, w, h);


         0   1   2    3


 i = 0   r   g   b    a


 i = 1   r   g   b    a


 i...    r   g   b    a
pixels.data[i * 4 + 0];


        0   1   2    3


i = 0   r   g   b    a


i = 1   r   g   b    a


i...    r   g   b    a
pixels.data[i * 4 + 1];


        0   1   2    3


i = 0   r   g   b    a


i = 1   r   g   b    a


i...    r   g   b    a
pixels.data[i * 4 + 2];


        0   1   2    3


i = 0   r   g   b    a


i = 1   r   g   b    a


i...    r   g   b    a
pixels.data[i * 4 + 3];


        0   1   2    3


i = 0   r   g   b    a


i = 1   r   g   b    a


i...    r   g   b    a
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0; i < l; i += 4) {




}
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0; i < l; i += 4) {


                     This says loop
                     over each pixel
}
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0; i < l; i += 4) {
  // red:   pixels.data[i+0]



}
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0; i < l; i += 4) {
  // red:   pixels.data[i+0]
  // green: pixels.data[i+1]


}
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0;   i < l; i += 4) {
  // red:     pixels.data[i+0]
  // green:   pixels.data[i+1]
  // blue:    pixels.data[i+2]

}
var pixels = ctx.getImageData(0, 0, w, h),
    l = pixels.data.length,
    i;

for (i = 0;   i < l; i += 4) {
  // red:     pixels.data[i+0]
  // green:   pixels.data[i+1]
  // blue:    pixels.data[i+2]
  // alpha:   pixels.data[i+3]
}
ctx.putImageData(pixels, 0, 0)
ctx.putImageData(pixels, 0, 0)

           Needs to be a
         CanvasPixelArray
              object
t ip      security_err

 To use getImageData, your document
 must be served over http (or https) -
 i.e. it doesn't work offline.
/workshop/authors-large.jpg
Play
       greyscale = r*.3 + g*.59 + b*.11;
       r = g = b = greyscale;


       saturation = (Math.max(r,g,b) +
       Math.min(r,g,b))/2;
       r = g = b = saturation;




                      http://jsbin.com/aguho3/2/edit
canvas.toDataURL('image/png');
Play
       save.onclick = function () {
          window.open(
             canvas.toDataURL('image/png')
          );
       };




                                canvas-13.html
Questions?
Offline Applications
Offline Apps

• Application cache / manifest
• Events: offline, online
• navigator.onLine property
http://icanhaz.com/rubiks
Using a Manifest
<!DOCTYPE html>
<html manifest="my.appcache">
<body>
<!-- my page -->
</body>
</html>
my.appcache
CACHE MANIFEST
app.html
css/style.css
js/app.js
#version 13
The Manifest

1. Serve as text/manifest, by
   adding to mime.types:

text/cache-manifest appcache
t ip    Firefox caching

 <IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType text/cache-manifest
  ↪ “access plus 0 seconds”
 </IfModule>
The Manifest

2. First line must be:

    CACHE MANIFEST
The Manifest

3. Including page is implicitly
   included in the cache.
The Manifest

4. Two futher namespaces:
   NETWORK & FALLBACK

    FALLBACK:
    / offline.html
CACHE MANIFEST

/
index.html
range.js
datastore.js

FALLBACK:
# force everything through
# the index url
/ /

# this won't match
# anything unless it's on
# another domain
NETWORK:
*

# v4
CACHE MANIFEST

                    /
                    index.html
Served from cache   range.js
                    datastore.js

                    FALLBACK:
                    # force everything through
                    # the index url
                    / /

                    # this won't match
                    # anything unless it's on
                    # another domain
                    NETWORK:
                    *

                    # v4
CACHE MANIFEST

                          /
                          index.html
                          range.js
Requests for files not    datastore.js

found in the cache, are   FALLBACK:
                          # force everything through
     directed to /        # the index url
                          / /
    i.e. index.html
                          # this won't match
    (when offline).       # anything unless it's on
                          # another domain
                          NETWORK:
                          *

                          # v4
CACHE MANIFEST

                       /
                       index.html
                       range.js
                       datastore.js
Any requests to urls
                       FALLBACK:
that don't match / -   # force everything through
                       # the index url
  i.e. on another      / /

  domain, will be      # this won't match
                       # anything unless it's on
served through the     # another domain
                       NETWORK:
       web.            *

                       # v4
CACHE MANIFEST

                       /
                       index.html
                       range.js
                       datastore.js

                       FALLBACK:
                       # force everything through
                       # the index url
                       / /
   Also ensures
                       # this won't match
  browser even         # anything unless it's on
                       # another domain
attempts to load the   NETWORK:
                       *
       asset
                       # v4
CACHE MANIFEST

                       /
                       index.html
                       range.js
                       datastore.js

                       FALLBACK:
                       # force everything through
                       # the index url
                       / /
The contents of the
                       # this won't match
   manifest must       # anything unless it's on
                       # another domain
change to trigger an   NETWORK:
                       *
      update
                       # v4
The Manifest

5. Include some versioning to
   cache bust your manifest

     # version 16
The process
Browser: I have a
Browser: request   Server: serve all    manifest, cache
                                            assets



                       Browser:
 Server: serve
                   applicationCache    Browser: reload
manifest assets
                       updated



                    Browser: only
 Browser: serve                        Server: 304 Not
                   request manifest
    locally                               Modified
                         file
Browser: I have a
    Problem: serve all
Browser: requestServer:                manifest, cache
                                           assets
    Change of content
    requires 2 refreshes reload
 Server: serve
                   Browser:
               applicationCache Browser:
manifest assets
                       updated



                    Browser: only
 Browser: serve                       Server: 304 Not
                   request manifest
    locally                              Modified
                         file
document.body.onOnline =
function () {
   // fire an update to the cache
   applicationCache.update();
};
applicationCache.onUpdateReady = function () {
   if (confirm("New version ready. Refresh?")) {
     // reload
     window.location.refresh();
   }
};
t ip

 Do offline last
Questions?
Web Sockets
Native or polyfilled
http://github.com/gimite/web-socket-js/
new WebSocket(url)



   http://dev.w3.org/html5/websockets/
ws://node.remysharp.com:8000




 http://github.com/miksago/node-websocket-server
onopen
onmessage
onclose
onerror
var data = JSON.parse(event.data);
.send
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
      conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};
var url = 'ws://node.remysharp.com:8000',
       conn = new WebSocket(url);


conn.onopen = function () {
     conn.send('hello world');
};


conn.onmessage = function (event) {
     console.log(event.data);
};


Play
Questions?
      To contact me after my presentation
      – text NHT to INTRO (46876)


      Or --
      remy@leftlogic.com
      @rem

More Related Content

What's hot

Polymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web componentsPolymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web componentspsstoev
 
Prototype & jQuery
Prototype & jQueryPrototype & jQuery
Prototype & jQueryRemy Sharp
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryRemy Sharp
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)jeresig
 
jQuery (MeshU)
jQuery (MeshU)jQuery (MeshU)
jQuery (MeshU)jeresig
 
Processing and Processing.js
Processing and Processing.jsProcessing and Processing.js
Processing and Processing.jsjeresig
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009Remy Sharp
 
Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...Thinqloud
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasLoiane Groner
 
jQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingjQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingDoug Neiner
 
20190118_NetadashiMeetup#8_React2019
20190118_NetadashiMeetup#8_React201920190118_NetadashiMeetup#8_React2019
20190118_NetadashiMeetup#8_React2019Makoto Mori
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
An in-depth look at jQuery UI
An in-depth look at jQuery UIAn in-depth look at jQuery UI
An in-depth look at jQuery UIPaul Bakaus
 

What's hot (20)

course js day 3
course js day 3course js day 3
course js day 3
 
Polymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web componentsPolymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web components
 
jQuery Essentials
jQuery EssentialsjQuery Essentials
jQuery Essentials
 
HTML,CSS Next
HTML,CSS NextHTML,CSS Next
HTML,CSS Next
 
Prototype & jQuery
Prototype & jQueryPrototype & jQuery
Prototype & jQuery
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQuery
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
jQuery (MeshU)
jQuery (MeshU)jQuery (MeshU)
jQuery (MeshU)
 
Processing and Processing.js
Processing and Processing.jsProcessing and Processing.js
Processing and Processing.js
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009
 
jQuery Essentials
jQuery EssentialsjQuery Essentials
jQuery Essentials
 
Intro to HTML5
Intro to HTML5Intro to HTML5
Intro to HTML5
 
Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...Learning jQuery made exciting in an interactive session by one of our team me...
Learning jQuery made exciting in an interactive session by one of our team me...
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
 
jQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and BlingjQuery: Nuts, Bolts and Bling
jQuery: Nuts, Bolts and Bling
 
20190118_NetadashiMeetup#8_React2019
20190118_NetadashiMeetup#8_React201920190118_NetadashiMeetup#8_React2019
20190118_NetadashiMeetup#8_React2019
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
An in-depth look at jQuery UI
An in-depth look at jQuery UIAn in-depth look at jQuery UI
An in-depth look at jQuery UI
 
The jQuery Divide
The jQuery DivideThe jQuery Divide
The jQuery Divide
 

Similar to Is HTML5 Ready? (workshop)

Brave new world of HTML5
Brave new world of HTML5Brave new world of HTML5
Brave new world of HTML5Chris Mills
 
webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5smueller_sandsmedia
 
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....Patrick Lauke
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
JavaScript para Graficos y Visualizacion de Datos
JavaScript para Graficos y Visualizacion de DatosJavaScript para Graficos y Visualizacion de Datos
JavaScript para Graficos y Visualizacion de Datosphilogb
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?Remy Sharp
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?Remy Sharp
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014Christian Heilmann
 
Paris js extensions
Paris js extensionsParis js extensions
Paris js extensionserwanl
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
JavaScript para Graficos y Visualizacion de Datos - BogotaJS
JavaScript para Graficos y Visualizacion de Datos - BogotaJSJavaScript para Graficos y Visualizacion de Datos - BogotaJS
JavaScript para Graficos y Visualizacion de Datos - BogotaJSphilogb
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIscodebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIsRemy Sharp
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...BradNeuberg
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Patrick Chanezon
 
HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015Christian Heilmann
 

Similar to Is HTML5 Ready? (workshop) (20)

Brave new world of HTML5
Brave new world of HTML5Brave new world of HTML5
Brave new world of HTML5
 
webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5webinale2011_Chris Mills_Brave new world of HTML5Html5
webinale2011_Chris Mills_Brave new world of HTML5Html5
 
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
Moustamera
MoustameraMoustamera
Moustamera
 
JavaScript para Graficos y Visualizacion de Datos
JavaScript para Graficos y Visualizacion de DatosJavaScript para Graficos y Visualizacion de Datos
JavaScript para Graficos y Visualizacion de Datos
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
HTML5: huh, what is it good for?
HTML5: huh, what is it good for?HTML5: huh, what is it good for?
HTML5: huh, what is it good for?
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014
 
Paris js extensions
Paris js extensionsParis js extensions
Paris js extensions
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
JavaScript para Graficos y Visualizacion de Datos - BogotaJS
JavaScript para Graficos y Visualizacion de Datos - BogotaJSJavaScript para Graficos y Visualizacion de Datos - BogotaJS
JavaScript para Graficos y Visualizacion de Datos - BogotaJS
 
Html5 Overview
Html5 OverviewHtml5 Overview
Html5 Overview
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIscodebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
 
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fallHtml5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
 
Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?Google's HTML5 Work: what's next?
Google's HTML5 Work: what's next?
 
HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015
 

More from Remy Sharp

Forget the Web
Forget the WebForget the Web
Forget the WebRemy Sharp
 
Interaction Implementation
Interaction ImplementationInteraction Implementation
Interaction ImplementationRemy Sharp
 
jQuery: out with the old, in with the new
jQuery: out with the old, in with the newjQuery: out with the old, in with the new
jQuery: out with the old, in with the newRemy Sharp
 
HTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsHTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsRemy Sharp
 
Developing for Mobile
Developing for MobileDeveloping for Mobile
Developing for MobileRemy Sharp
 
Webapps without the web
Webapps without the webWebapps without the web
Webapps without the webRemy Sharp
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIsRemy Sharp
 
iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless AppsRemy Sharp
 
HTML5 & Friends
HTML5 & FriendsHTML5 & Friends
HTML5 & FriendsRemy Sharp
 
jQuery Loves Developers - SWDC2009
jQuery Loves Developers - SWDC2009jQuery Loves Developers - SWDC2009
jQuery Loves Developers - SWDC2009Remy Sharp
 

More from Remy Sharp (12)

Forget the Web
Forget the WebForget the Web
Forget the Web
 
Interaction Implementation
Interaction ImplementationInteraction Implementation
Interaction Implementation
 
jQuery: out with the old, in with the new
jQuery: out with the old, in with the newjQuery: out with the old, in with the new
jQuery: out with the old, in with the new
 
HTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsHTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & sockets
 
Developing for Mobile
Developing for MobileDeveloping for Mobile
Developing for Mobile
 
Webapps without the web
Webapps without the webWebapps without the web
Webapps without the web
 
TwitterLib.js
TwitterLib.jsTwitterLib.js
TwitterLib.js
 
HTML5 JavaScript APIs
HTML5 JavaScript APIsHTML5 JavaScript APIs
HTML5 JavaScript APIs
 
iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless Apps
 
HTML5 & Friends
HTML5 & FriendsHTML5 & Friends
HTML5 & Friends
 
HTML5 JS APIs
HTML5 JS APIsHTML5 JS APIs
HTML5 JS APIs
 
jQuery Loves Developers - SWDC2009
jQuery Loves Developers - SWDC2009jQuery Loves Developers - SWDC2009
jQuery Loves Developers - SWDC2009
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 

Recently uploaded (20)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
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
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
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 ...
 
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?
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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...
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
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
 

Is HTML5 Ready? (workshop)