SlideShare a Scribd company logo
1 of 161
Download to read offline
Browsers
    with
  Wings:
  HTML5
  & APIs
HTML5 brand
HTML5 is:
markup,
JavaScript, CSS,
SVG, jQuery &
your dinner.
HTML5 is:
markup, Lie.
        Don'CSS,
JavaScript, t be
       stoop
             id
SVG, jQuery & ,
        but...
your dinner.
HTML5 is
anything & everything
to mere mortal beings.
Today
Media
<video src=bruce.mp4>
<video src=bruce.mp4>
 <a href="bruce.mp4">Download</a>
</video>
Codec Wars
<video>
 <source src=bruce.mp4>
 <source src=bruce.ogv>
</video>
<video>
 <source src=bruce.webm>
 <source src=bruce.mp4>
 <source src=bruce.ogv>
</video>
<video controls>
 <source src=bruce.mp4>
 <source src=bruce.ogv>
</video>
<video>
works i n IE6
<video>
wo L    n .IE6
   rks iie
http://camendesign.com/code/video_for_everybody

<video width="640" height="360" controls preload="none">
  <!-- MP4 must be first for iPad! -->
  <source src="__VIDEO__.MP4" type="video/mp4" /><!-- WebKit video     -->
  <source src="__VIDEO__.OGV" type="video/ogg" /><!-- Firefox / Opera -->
  <!-- fallback to Flash: -->
  <object width="640" height="384" type="application/x-shockwave-flash"
data="__FLASH__.SWF">
     <!-- Firefox uses the `data` attribute above, IE/Safari uses the param below -->
     <param name="movie" value="__FLASH__.SWF" />
     <param name="flashvars" value="image=__POSTER__.JPG&amp;file=__VIDEO__.MP4" />
     <!-- fallback image. note the title field below, put the title of the video there -->
     <img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__"
          title="No video playback capabilities, please download the video below" />
  </object>
</video>
<!-- you *must* offer a download link as they may be able to play the file locally.
customise this bit all you want -->
<p> <strong>Download Video:</strong>
  Closed Format: <a href="__VIDEO__.MP4">"MP4"</a>
  Open Format: <a href="__VIDEO__.OGV">"OGG"</a>
</p>
Custom player style
function toggle() {
  if (video.paused) {
    video.play();
    this.innerHTML = 'Pause';
  } else {
    video.pause();
    this.innerHTML = 'Play';
  }
}

var play = document.getElementById('play');
play.onclick = toggle;
function toggle() {
  if (video.paused) {
    video.play();
    this.innerHTML = 'Pause';
  } else {
    video.pause();
    this.innerHTML = 'Play';
  }
}

var play = document.getElementById('play');
play.onclick = toggle;
function toggle() {
  if (video.paused) {
    video.play();
    this.innerHTML = 'Pause';
  } else {
    video.pause();
    this.innerHTML = 'Play';
  }
}

var play = document.getElementById('play');
play.onclick = toggle;
function toggle() {
  if (video.paused) {
    video.play();
    this.innerHTML = 'Pause';
  } else {
    video.pause();
    this.innerHTML = 'Play';
  }
}

var play = document.getElementById('play');
play.onclick = toggle;
// get & set
video.currentTime

// half speed
video.playbackRate = 0.5

// actual loaded video
video.currentSrc

// etc
video.ontimeupdate = function () {
   updatePlayhead(this.currentTime);
};
Fullscreen?
Warning! User agents should not provide a public API to cause
videos to be shown full-screen. A script, combined with a carefully
crafted video file, could trick the user into thinking a system-modal
dialog had been shown, and prompt the user for a password. There is
also the danger of "mere" annoyance, with pages launching full-
screen videos when links are clicked or pages navigated. Instead,
user-agent specific interface features may be provided to easily allow
the user to obtain a full-screen playback mode.
Canvas
Cooler than a fake Han Solo.
First consider SVG:
Standard
Vertical
Graphing
First consider SVG:
Standard
Vertical
  Lie.
Graphing
First consider SVG:
Standard a lie.
       Not
Vertical
  Lie.
Graphing
SVG: Vector based, good for simple
and interactive

Canvas: Pixel based, good for pixel
manipulation & high animation



Check out raphaeljs.com
Mix & match
to the
technology's
strength
pixel
pushing
http://mugtug.com/darkroom
var ctx = canvas.getContext('2d');
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 px = ctx.getImageData(0, 0, w, h),
    l = px.data.length,
    i;

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




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

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


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

for (i = 0; i < l; i += 4) {
  px.data[i+0] = 255 - px.data[i+0];



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

for (i = 0; i < l; i += 4) {
  px.data[i+0] = 255 - px.data[i+0];
  px.data[i+1] = 255 - px.data[i+1];


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

for (i = 0; i < l; i   += 4) {
  px.data[i+0] = 255   - px.data[i+0];
  px.data[i+1] = 255   - px.data[i+1];
  px.data[i+2] = 255   - px.data[i+2];

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

for (i = 0; i < l; i += 4) {
  px.data[i+0] = 255 - px.data[i+0];
  px.data[i+1] = 255 - px.data[i+1];
  px.data[i+2] = 255 - px.data[i+2];
  // don't need to do the alphachannel
}
var px = ctx.getImageData(0, 0, w, h),
    l = px.data.length,
    i;

for (i = 0; i < l; i += 4) {
  px.data[i+0] = 255 - px.data[i+0];
  px.data[i+1] = 255 - px.data[i+1];
  px.data[i+2] = 255 - px.data[i+2];
  // don't need to do the alphachannel
}

ctx.putImageData(px, 0, 0);
You can do
that in SVG,
but you can't
do this:
http://mrdoob.com
canvas.toDataURL()
canvas.toDataURL()
data:image/
png;base64,iVBORw0KGgoAA
AGQCAYAAACAvzbMAAAgAElEQ
f2e692YghpAYQuYQQaP9U8Ur
Q4gSwXNbREIaqVKlpVFPq6G0
VIhMZJDc3OEM/
99v7b3P2efcfc49e5+9z9nDd
+67PWWd
+95liOD8IBAiAAAiAAAjYJxG
GAgCAjgAAIgAAIOCIAAXGEDY
ACIAACjghAQBxhgyMQAAEQAA
IQEEfY4AgEQAAEQAACgjwAAi
IBEAABEICAIA
+AAAiAAAg4IgABcYQNjkAABE
KOCEBAHGGDIxAAARAAAQgI8g
Shims


1. Silverlight
Bridge
2. excanvas.js
Storage
Cookies
suck.
    (for most situations)
The code for
cookies is
painful: so
we google it.
"Session"
     cookies
leak across
 "sessions".
Non-session
cookies require
"special"
date format
Deleting
       cookies,
doesn't delete,
    but sets it
   in the past.
Fuck cookies.
Sexy Web Storage FTW
Key/value pair
One API
setItem(key, value)
One API
setItem(key, value)
string* getItem(key)
One API
setItem(key, value)
string* getItem(key)
removeItem(key)
One API
setItem(key, value)
string* getItem(key)
removeItem(key)
string key(index)
One API
setItem(key, value)
string* getItem(key)
removeItem(key)
string key(index)
clear()
One API
setItem(key, value)
string* getItem(key)
removeItem(key)
string key(index)
clear()
.length
Two instances


localStorage
sessionStorage
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
var ss = sessionStorage;


ss.setItem('version', 12);
ss.getItem('version');
rnin g!
Wa


     Values are strings
rnin g!
Wa


     Values are strings

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


ss.setItem(‘user’, JSON.stringify(user));
var obj = JSON.parse(ss.getItem(‘user’));
alert(obj.screen_name);
window.name shim




    http://gist.github.com/350433
Alternatives
Web SQL Database
IndexedDB
Geolocation
navigator.geolocation
getCurrentPosition
watchPosition
clearPosition
var geo = navigator.geolocation;
geo.getCurrentPosition(function(data){
  map(data.coords.latitude,
      data.coords.longitude);
});
var geo = navigator.geolocation;
geo.getCurrentPosition(function(data){
  map(data.coords.latitude,
      data.coords.longitude);
});
var geo = navigator.geolocation;
geo.getCurrentPosition(function(data){
  map(data.coords.latitude,
      data.coords.longitude);
});
var geo = navigator.geolocation;
geo.getCurrentPosition(function(data){
  map(data.coords.latitude,
      data.coords.longitude);
});
var geo = navigator.geolocation;
geo.getCurrentPosition(function(data){
  map(data.coords.latitude,
      data.coords.longitude);
});
Check your accuracy
http://j.mp/geoshim
if (!navigator.geolocation) {

navigator.geolocation = (function (window) {
  function getCurrentPosition(callback) {
    // source: http://www.maxmind.com/app/javascript_city
    var geourl = 'http://j.maxmind.com/app/geoip.js_' + Math.random(),
        iframe = document.createElement('iframe'),
        doc, win;

    iframe.style.display = 'none';
    window.document.body.appendChild(iframe);

    doc = iframe.contentDocument || iframe.contentWindow.document;
    win = iframe.contentWindow;

    // once the script has loaded, it triggers an onload event
    iframe.onload = function () {
      // assign all the captured values across to our geo object
      var geo = {
        coords: {
           latitude: win.geoip_latitude(),
           longitude: win.geoip_longitude()
           // other values are supported, i.e. accuracy, speed, heading, etc
        },
        timestamp: (new Date()).getTime()
Sockets
Move
 over
comet.
Low latency.
Direct connection.
Simple API.
var url = 'ws://apps.leftlogic.com:8000/',
       conn = new WebSocket(url);


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


conn.send('hello world');
var url = 'ws://apps.leftlogic.com:8000/',
       conn = new WebSocket(url);


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


conn.send('hello world');
var url = 'ws://apps.leftlogic.com:8000/',
      conn = new WebSocket(url);


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


conn.send('hello world');
var url = 'ws://apps.leftlogic.com:8000/',
       conn = new WebSocket(url);


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


conn.send('hello world');
var url = 'ws://apps.leftlogic.com:8000/',
       conn = new WebSocket(url);


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


conn.send('hello world');
var url = 'ws://apps.leftlogic.com:8000/',
       conn = new WebSocket(url);


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


conn.send('hello world');
http://rem.im/collab-drawing
http://rem.im/collab-drawing
http://rem.im/collab-drawing
http://github.com/gimite/web-socket-js/
Partial
Offline
Using a Manifest
<!DOCTYPE html>
<html manifest="my.manifest">
<body>
<!-- my page -->
</body>
</html>
my.manifest
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 manifest
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. Include some versioning to
   cache bust your manifest

     # version 16
The Manifest

5. Two futher namespaces:
   NETWORK & FALLBACK

    FALLBACK:
    / offline.html
CACHE MANIFEST

CACHE:
app.js
app.css
index.html

NETWORK:
/live/*

FALLBACK:
* offline.html
CACHE MANIFEST

                    CACHE:
                    app.js
Served from cache   app.css
                    index.html

                    NETWORK:
                    /live/*

                    FALLBACK:
                    * offline.html
CACHE MANIFEST

                           CACHE:
                           app.js
                           app.css
                           index.html
      Requests to
http://mysite.com/live/x   NETWORK:
                           /live/*
  must go via the web
                           FALLBACK:
                           * offline.html
CACHE MANIFEST

                        CACHE:
                        app.js
                        app.css
Requests for files not
                        index.html
 found in the cache,
                        NETWORK:
   are directed to      /live/*
 offline.html (when
                        FALLBACK:
      offline).           / offline.html
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
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
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
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
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
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
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
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
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
File API
files[0].getAsDataURL()
files[0].getAsDataURL()
Link prefetching
Web Workers
Web Forms
Hash change event, history state management
Contenteditable
Native drag and drop - embedding of data
Microdata
Cross server messaging
embedded attribute data
mime-type registration

DXHTML6
Link prefetching
Web Workers
Web Forms
Hash change event, history state management
Contenteditable
Native drag and drop - embedding of data
Microdata
Cross server messaging
embedded attribute data
mime-type registration           Lie.
DXHTML6
"Should I be
using HTML5
today?"
1. doctype, script & styles only
1. doctype, script & styles only

2. New HTML5 elements
1. doctype, script & styles only

2. New HTML5 elements

3. Existing APIs
1. doctype, script & styles only

2. New HTML5 elements

3. Existing APIs

4. Shims
Yes.
introducinghtml5.com




              Yes.

@rem
remy@leftlogic.com

More Related Content

What's hot

Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, CroatiaLeave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, CroatiaRobert Nyman
 
iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless AppsRemy Sharp
 
Vue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMRVue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMRJavier Abadía
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.jsTechExeter
 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJSSylvain Zimmer
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaÖnder Ceylan
 
JavaScript APIs - The Web is the Platform - MozCamp, Buenos Aires
JavaScript APIs - The Web is the Platform - MozCamp, Buenos AiresJavaScript APIs - The Web is the Platform - MozCamp, Buenos Aires
JavaScript APIs - The Web is the Platform - MozCamp, Buenos AiresRobert Nyman
 
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, Chile
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, ChileJavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, Chile
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, ChileRobert Nyman
 
Making your Angular.js Application accessible
Making your Angular.js Application accessibleMaking your Angular.js Application accessible
Making your Angular.js Application accessibleDirk Ginader
 
JavaScript APIs - The Web is the Platform - MDN Hack Day, Montevideo
JavaScript APIs - The Web is the Platform - MDN Hack Day, MontevideoJavaScript APIs - The Web is the Platform - MDN Hack Day, Montevideo
JavaScript APIs - The Web is the Platform - MDN Hack Day, MontevideoRobert Nyman
 
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos Aires
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos AiresJavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos Aires
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos AiresRobert Nyman
 
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
 
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
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do MoreRemy Sharp
 

What's hot (20)

Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, CroatiaLeave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
 
iPhone Appleless Apps
iPhone Appleless AppsiPhone Appleless Apps
iPhone Appleless Apps
 
Vue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMRVue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMR
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.js
 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJS
 
YUI 3
YUI 3YUI 3
YUI 3
 
Moustamera
MoustameraMoustamera
Moustamera
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - Frontmania
 
JavaScript APIs - The Web is the Platform - MozCamp, Buenos Aires
JavaScript APIs - The Web is the Platform - MozCamp, Buenos AiresJavaScript APIs - The Web is the Platform - MozCamp, Buenos Aires
JavaScript APIs - The Web is the Platform - MozCamp, Buenos Aires
 
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, Chile
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, ChileJavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, Chile
JavaScript APIs - The Web is the Platform - MDN Hack Day, Santiago, Chile
 
Making your Angular.js Application accessible
Making your Angular.js Application accessibleMaking your Angular.js Application accessible
Making your Angular.js Application accessible
 
JavaScript APIs - The Web is the Platform - MDN Hack Day, Montevideo
JavaScript APIs - The Web is the Platform - MDN Hack Day, MontevideoJavaScript APIs - The Web is the Platform - MDN Hack Day, Montevideo
JavaScript APIs - The Web is the Platform - MDN Hack Day, Montevideo
 
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos Aires
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos AiresJavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos Aires
JavaScript APIs - The Web is the Platform - MDN Hack Day - Buenos Aires
 
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....
 
Intro to HTML5
Intro to HTML5Intro to HTML5
Intro to HTML5
 
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
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do More
 

Viewers also liked (20)

The Power of BIG OER
The Power of BIG OERThe Power of BIG OER
The Power of BIG OER
 
Yliko pake geniko_meros_201105.20-27
Yliko pake geniko_meros_201105.20-27Yliko pake geniko_meros_201105.20-27
Yliko pake geniko_meros_201105.20-27
 
Newton's laws jeopardy
Newton's laws jeopardyNewton's laws jeopardy
Newton's laws jeopardy
 
Simple c-programs
Simple c-programsSimple c-programs
Simple c-programs
 
Kkpi
KkpiKkpi
Kkpi
 
แก้ข้อสอบ..
แก้ข้อสอบ..แก้ข้อสอบ..
แก้ข้อสอบ..
 
Chapter7 6-pr5-exporting movies-pdf
Chapter7 6-pr5-exporting movies-pdfChapter7 6-pr5-exporting movies-pdf
Chapter7 6-pr5-exporting movies-pdf
 
Teens24
Teens24Teens24
Teens24
 
Sed petrolgy[1]
Sed petrolgy[1]Sed petrolgy[1]
Sed petrolgy[1]
 
Pemeriksaaan thoraks
Pemeriksaaan thoraksPemeriksaaan thoraks
Pemeriksaaan thoraks
 
Wais i
Wais   iWais   i
Wais i
 
PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud  PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud
 
fgfdgdfg
fgfdgdfg fgfdgdfg
fgfdgdfg
 
Proactive Professionalism Networking Today Nj 1
Proactive Professionalism Networking Today Nj 1Proactive Professionalism Networking Today Nj 1
Proactive Professionalism Networking Today Nj 1
 
Quran in Hindi Part-30
Quran in Hindi Part-30Quran in Hindi Part-30
Quran in Hindi Part-30
 
MySQL Idiosyncrasies That Bite
MySQL Idiosyncrasies That BiteMySQL Idiosyncrasies That Bite
MySQL Idiosyncrasies That Bite
 
Praktek kimia menguji kadar vitamin c
Praktek kimia menguji kadar vitamin cPraktek kimia menguji kadar vitamin c
Praktek kimia menguji kadar vitamin c
 
Makalah dematitis
Makalah dematitisMakalah dematitis
Makalah dematitis
 
Inside Sina Weibo
Inside Sina WeiboInside Sina Weibo
Inside Sina Weibo
 
Xbrm Overview 2009
Xbrm Overview 2009Xbrm Overview 2009
Xbrm Overview 2009
 

Similar to Browsers with Wings

Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02PL dream
 
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
 
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
 
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
 
HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015Christian Heilmann
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIscodebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIsRemy Sharp
 
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
 
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
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
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
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Game Development With HTML5
Game Development With HTML5Game Development With HTML5
Game Development With HTML5Gil Megidish
 
Django + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar DjangoDjango + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar DjangoJavier Abadía
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWDChristopher Schmitt
 

Similar to Browsers with Wings (20)

Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
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
 
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
 
HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015HTML5 after the hype - JFokus2015
HTML5 after the hype - JFokus2015
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIscodebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
 
WebXR if X = how?
WebXR if X = how?WebXR if X = how?
WebXR if X = how?
 
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
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
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)
 
Python, WebRTC and You (v2)
Python, WebRTC and You (v2)Python, WebRTC and You (v2)
Python, WebRTC and You (v2)
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
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?
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Game Development With HTML5
Game Development With HTML5Game Development With HTML5
Game Development With HTML5
 
Django + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar DjangoDjango + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar Django
 
[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD[cssdevconf] Adaptive Images in RWD
[cssdevconf] Adaptive Images in RWD
 
Progressive What Apps?
Progressive What Apps?Progressive What Apps?
Progressive What Apps?
 

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: 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
 
HTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsHTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsRemy 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
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009Remy 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
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryRemy Sharp
 
Prototype & jQuery
Prototype & jQueryPrototype & jQuery
Prototype & jQueryRemy Sharp
 

More from Remy Sharp (14)

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: 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?
 
HTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & socketsHTML5 tutorial: canvas, offfline & sockets
HTML5 tutorial: canvas, offfline & sockets
 
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
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009
 
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
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQuery
 
Prototype & jQuery
Prototype & jQueryPrototype & jQuery
Prototype & jQuery
 

Recently uploaded

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
 
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
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
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
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
🐬 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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Recently uploaded (20)

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
 
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
 
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...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Browsers with Wings