 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>Bringing Web 2.0 to Mobile Devices</title>
     <meta name="author" content="Michael(tm) Smith" />
     <meta name="contact" content="mikes@opera.com" />
     <meta name="generator" content="Opera Show Generator 1.0" />
     <meta name="presdate" content="2005-05-19" />
     <meta name="title" content="Bringing Web 2.0 to Mobile Devices" />
     <meta name="venue" content="XTech 2006 Amsterdam" />
     <meta name="version" content="OSF 1.0" />
     <meta http-equiv="Content-Type" content="application/xhtml+xml;charset=utf-8" />
     <style type="text/css">

       /* Stylesheet info 								*/
       /* Name: hi-tech								*/
       /* Author: Opera Sofware*/

       /* general all-media styles */
       html,body { font-family: "Trebuchet MS",Arial,sans-serif; }

       a, a:visited, a:hover { color: #25366C; text-decoration: none; }
       a:hover { color: #CC0000;  }

       div.slide { counter-increment: slide; }
       div.handout:before { content: "Slide notes:"; font-style: italic; border-bottom: 1px black solid; }

       /* div.slide img { max-width: 50%; } */
       img.right { float: right; margin-top: 1em; margin-bottom: 1em; margin-left: 1em; }
       img.left { float: left; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; }

       div.spacer { clear:both; height:0px; }

       li.nested { list-style: none; }

       /* styles for the navigation and control menu provided the addons */
       #navmenu, #controlmenu { display:block; border: 1px #CC0000 solid; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1AcOCCwYM8r9%2BgAAABZJREFUeNpj%2FP%2F%2F%2F00GNMDEgAVQKAgAi%2B0D4JO186sAAAAASUVORK5CYII%3D); color: black; font-size: 0.8em; position: fixed; top: 50%; left: 50%; width: 30%; height: 250px; margin-left: -15%; margin-top: -125px; overflow: auto; }
       #navmenu ol { margin-top: 5px; margin-bottom: 5px; margin-left: 30px; width: 80%; }
       #navmenu a { display: list-item; color: black; list-style-type: decimal; }
       #navmenu div, #controlmenu div { background-color:#c00; color: white; line-height: 1.5em; padding-left: 1em; display:block; }

       #controlmenu dl { text-align: center; }
       #controlmenu dt { font-weight: bold; text-align: left; padding-left: 1em;}
       #controlmenu dd { display:inline; cursor: pointer; margin: auto; padding: 2px 5px; }

       /* will be overriden in projection section for specific divs */
       .layout > * { display: none; }

       /* screen styles */
       @media screen { 
       body { color: black; padding: 0em 2em 2em 2em; margin: 0px; background-color: white; }
       .presentation:before { content: "Press F11 to start the Opera Show Presentation \A Use PageUp and PageDown to navigate"; display:block; text-align: center; font-size: 1.2em; padding:0.5em;}
       .slide { border: 1px black solid; padding: 10px; margin: 0px 0px 20px 0px; /* for IE6 */ position:relative; }
       .slide:before { content: "Slide " counter(slide); float:right; }
       .slide h1 { margin: -10px -10px 10px -10px; background-color:#EFEFEF; padding: 5px; }
       .handout { margin-top: 0px; border-color: black; border-style: solid; border-width: 1px 0px 0px 0px; padding: 5px; }
       .layout > #promo { display:block; text-align:center; padding: 5px; margin-top: 10px;}
       }


       /* projection styles */
       /* basic fontsize is roughly screenwidth/50 */
       @media projection and (max-device-width:640px) { body { font-size: 12px; }}
       @media projection and (min-device-width:640px) { body { font-size: 13px; }}
       @media projection and (min-device-width:800px) { body { font-size: 16px; }}
       @media projection and (min-device-width:1024px) { body { font-size: 22px; }}
       @media projection and (min-device-width:1280px) { body { font-size: 26px; }}
       @media projection and (min-device-width:1600px) { body { font-size: 32px; }}

       @media projection { 

       html, body, .presentation { height: 100%; margin: 0px; padding: 0px; }
       body { background-image: url(data:image/jpeg;base64,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); }
       body { margin: 0px; padding: 0px; color:#fff; background-color:#376B99; background-attachment:fixed;}

       div.layout a, div.layout a:hover  { color: inherit; }

       /* slide is given a max-height so that pagedown will still work when there's too much content to fit on screen */
       div.slide { page-break-after: always; padding: 3em; font-size: 1.8em; max-height:80%; overflow: visible; }
       div.notes, div.handout { display:none; }

       h1:first-letter { text-transform: uppercase; }
       h1 { margin-top: -30px; border-bottom: 0.1em #FFD100 solid; }

       /* liststyles*/
       ul, ol, li { list-style-position:inside; margin-left: 0px; }
       li li { margin: 0.2em auto 0em 1.5em; }
       li, .slidecontent { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAQSURBVHjaYvj//786QIABAAkjAyWJRh3rAAAAAElFTkSuQmCC); border-top:1px solid #B6C9F4; border-right:1px solid #25366C; border-bottom:1px solid #25366C; border-left:1px solid #B6C9F4; padding: 0.3em; padding-left: 0.5em; margin-bottom: 0.2em; }
       li.nested { list-style: none; }
       li:first-letter { text-transform: uppercase; }
       li:hover { color: #FFD100; }
       li:hover li { color: white; }
       li:hover li:hover { color: #FFD100; }

       /* when slidecontent is used */
       .slidecontent img.right, .slidecontent img.left { margin-top: auto; }

       .attribution { font-size: 0.5em; }

       /* only topleft and topright have background-color to prevent obscuring */
       .layout > div { line-height: 2em; font-size: 0.8em; }
       .layout .topleft { position: fixed; top: 0px; left: 0px; padding-left:0.5em; width: 100%; background-color: #CC0000; border-bottom: 0.2em white solid; display:block; }
       .layout .topright { z-index:2; position: fixed; top: 0px; right: 0px; padding-right:0.5em; background-color: transparent; width: 50%; text-align: right; display:block; }
       .layout .bottomleft { position: fixed; bottom: 0px; left: 0px; padding-left:0.5em; width: 100%; background-color:#CC0000; border-top: 0.2em white solid; display:block; }
       .layout .bottomright { z-index:2; position: fixed; bottom: 0px; right: 0px; padding-right:0.5em; background-color: transparent; width: 50%; text-align: right; display:block; }

       /* with position fixed/absolute the images are taken out of the flow, so that the horizontal bars do not expand to the height of the image */
       /* bug in Opera makes position:absolute inside position:fixes disappear, so images now also have position:fixed */
       .topleft img { position:fixed; top: 0px; left: 0px; max-height:25%;}
       .topright img { position:fixed; top: 0px; right: 0px; max-height:25%; }
       .bottomleft img { position:fixed; bottom: 0px; left: 0px; max-height:25%;}
       .bottomright img { position:fixed; bottom: 0px; right: 0px; max-height:25%;}
       }


       /* print styles */
       @media print { 
       html, body { font-size: 12px; margin: 0px; padding: 0px; }
       h1 { background-color:#EFEFEF; padding: 5px; margin: -5px -5px 10px -5px; }
       .slide { width: 70%; border: 1px black solid; margin-top: 2%; padding: 5px; page-break-inside: avoid; position:relative; min-height:200px;}
       .slide:before { content: "Slide " counter(slide); float:right; }
       .handout { border-top: 1px black solid; padding: 5px; }
       .layout > #promo { display:block; text-align:center; padding: 5px; margin-top: 10px; border: 1px black solid; }
       .layout > #promo > a:after { content:""; }

       /* following code extracts all the relevant metadata and shows it with Generated Content */
       /* code could have been saved by using CSS3 content, but this is compatible with Mozilla */
       head { display: block; border: 1px black solid; padding: 5px; }
       head:before {content: "Presentation information"; background-color:#EFEFEF; padding: 5px; margin: -5px -5px 0px -5px; display:block; font-size: 1.2em; font-weight:bold; }
       title { display: block; padding: 0px; margin: 0px; }
       title:before { content: "Title: "; font-weight: bold;}
       meta { display:block; }
       meta:before { text-transform: capitalize; font-weight:bold;}
       meta[name="presdate"]:after, meta[name="slogan"]:after, meta[name="author"]:after, meta[name="contact"]:after, meta[name="company"]:after, meta[name="venue"]:after, meta[name="date"]:after, meta[name="website"]:after { content: ": " attr(content); }
       meta[name="presdate"]:before, meta[name="slogan"]:before, meta[name="author"]:before, meta[name="contact"]:before, meta[name="company"]:before, meta[name="venue"]:before, meta[name="date"]:before, meta[name="website"]:before { content: attr(name);  }
       a[href]:after { content: " [url: " attr(href) "]"; font-style:italic;}
       .presentation:before { float:right; width: 25%; content: "Add notes in this column"; border-bottom: 1px black solid; }
       .presentation:after { position:fixed; right: 0px; bottom: 3cm; width: 25%; content: "Add notes in this column"; border-top: 1px black solid; }
       }

       @page { margin-top: 1cm; margin-bottom: 1cm; margin-left: auto; margin-right: auto; }

     </style>
     <script type="text/JavaScript">
       //<![CDATA[
       // Name: powerpack
       // Description: provides animations + UI, font-size adjuster, navmenu
       // Copyright 2004, Opera Software

       var hdir = "rtl"; // left-to-right, ltr || right-to-left, rtl || none
       var vdir = "btt"; // bottom-to-top, btt || top-to-bottom, ttb (buggy) || none
       var width = screen.width;
       var height = screen.height;
       var step = 30;
       var pause = 10; 
       var slidedisplay = 0;
       var slides = new Array();
       var hor = 0;
       var ver = 0;
       var basefont;
       var changefont;
       var ns = "http://www.w3.org/1999/xhtml";


       function slideShow () {
       var divs = document.getElementsByTagName("div");
       var k = 0;
       for (var i=0; i<divs.length;i++) {
       if (divs[i].className == "slide") {
       slides[k++] = divs[i];
       }
       }
       }


       function doAnim() {
       // check if there is a slides array or not, otherwise create it
       if (!slides[0]) { slideShow(); }

       slidedisplay++;

       // check whether at end or beginning of presentation
       if (slidedisplay >= (slides.length)) { slidedisplay = (slides.length);  return;}
       else if (slidedisplay < 0) { slidedisplay = 0; return; }

       // some extra conditions for animations
       hdir == "none" ? hor = 0 : hor = width;	
       vdir == "none" ? ver = 0 : ver = height;	

       doMove();
       }

       // this doMove allows diagonal movements but it is buggy when coming from above     
       function doMove() {
       var slide = slides[slidedisplay];
       var slidekids = slide.childNodes;

       if (hdir != "none"){ hor = hor - width/step; }
       if (vdir != "none") { ver = ver - height/step; }

       if ( hor>0 || ver>0) { 
       for (var j=0;j<slidekids.length;j++) {
       if (slidekids[j].nodetype = 1 && slidekids[j].style) {
       slidekids[j].style.position = "relative";
       if (hdir == "ltr") {slidekids[j].style.left = -hor + "px";}
       else if (hdir == "rtl") {slidekids[j].style.left = hor + "px";}
       if (vdir == "ttb") { slidekids[j].style.top = -ver + "px"; }
       else if (vdir == "btt") { slidekids[j].style.top = ver + "px"; }
       }
       }
       }
       else if ( hor<=0 && ver<=0) { 

       for (var j=0;j<slidekids.length;j++) {
       if (slidekids[j].nodetype = 1 && slidekids[j].style) {
       slidekids[j].style.left = "0px";
       slidekids[j].style.top = "0px";
       }
       }
       return;

       }
       setTimeout("doMove()",pause);
       }

       // navigation menu
       function navMenu () {
       var titles = new Array();
       var slides = new Array();
       var divs = document.getElementsByTagName("div");

       for (var i=0, k=0; i<divs.length;i++) {
       if (divs[i].className == "slide") {
       slides[k] = divs[i];
       if (divs[i].getElementsByTagName("h1")[0]) {titles[k] = divs[i].getElementsByTagName("h1")[0];}
       else if (divs[i].getElementsByTagName("h2")[0]) {titles[k] = divs[i].getElementsByTagName("h2")[0];}
       else if (divs[i].getElementsByTagName("h3")[0]) {titles[k] = divs[i].getElementsByTagName("h3")[0];}
       else {titles[k] = ""; }

       if(!slides[k].id) { slides[k].id = "autonum" + (k+1); }
       k++;
       }
       }


       var y = document.body.appendChild(document.createElementNS(ns,'div'));
       y.id = 'navmenu';

       var a = y.appendChild(document.createElementNS(ns,'div'));
       a.appendChild(document.createTextNode('Slide navigation [close]'));
       a.onclick = 'toggleNavMenu()';

       var z = y.appendChild(document.createElementNS(ns,'ol'));
       for (var i=0; i<slides.length; i++) {
       var tmp = z.appendChild(document.createElementNS(ns,'a'));

       titles[i].firstChild ? tmp.innerHTML = titles[i].firstChild.data : tmp.innerHTML = "Slide " + (i+1);
       tmp.href = '#' + slides[i].id;
       tmp.onclick = 'slidedisplay =' + i + '; toggleNavMenu();';
       }

       document.getElementById('navmenu').style.display = "none";
       }

       function controlMenu () {
       basefont = window.getComputedStyle(document.getElementsByTagName('body')[0],null).fontSize;
       changefont = basefont.match(/^(\d+)px$/)[1];

       var y = document.body.appendChild(document.createElementNS(ns,'div'));
       y.id = 'controlmenu';
       y.style.fontSize = window.getComputedStyle(y,null).fontSize;

       var a = y.appendChild(document.createElementNS(ns,'div'));
       a.appendChild(document.createTextNode('Control menu [close]'));
       a.onclick = 'toggleControlMenu()';

       var dl = y.appendChild(document.createElementNS(ns,'dl'));

       // font-size adjuster
       var dt = dl.appendChild(document.createElementNS(ns,'dt'));
       dt.appendChild(document.createTextNode('Change FontSize:'));

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.appendChild(document.createTextNode('[+]'));
       dd.onclick='increaseFontSize();'

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.appendChild(document.createTextNode('[restore]'));
       dd.onclick='restoreFontSize()';

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.appendChild(document.createTextNode('[-]'));
       dd.onclick='decreaseFontSize();'

       // animation adjuster
       var dl = y.appendChild(document.createElementNS(ns,'dl'));
       dl.id = 'animset';

       // horizontal
       var dt = dl.appendChild(document.createElementNS(ns,'dt'));
       dt.appendChild(document.createTextNode('Horizontal animation direction'));

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'hltr';
       dd.appendChild(document.createTextNode('ltr'));
       dd.onclick='hdir="ltr";animdirection();'

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'hnone';
       dd.appendChild(document.createTextNode('none'));
       dd.onclick='hdir="none";animdirection();'

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'hrtl';
       dd.appendChild(document.createTextNode('rtl'));
       dd.onclick='hdir="rtl";animdirection();'

       // vertical
       var dt = dl.appendChild(document.createElementNS(ns,'dt'));
       dt.appendChild(document.createTextNode('Vertical animation direction'));

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'vbtt';
       dd.appendChild(document.createTextNode('btt'));
       dd.onclick='vdir="btt";animdirection();'

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'vnone';
       dd.appendChild(document.createTextNode('none'));
       dd.onclick='vdir="none";animdirection();'

       var dd = dl.appendChild(document.createElementNS(ns,'dd'));
       dd.id = 'vttb';
       dd.appendChild(document.createTextNode('ttb'));
       dd.onclick='vdir="ttb";animdirection();'

       document.getElementById('controlmenu').style.display = "none";
       animdirection();
       }


       function animdirection() {
       var animdirs = document.getElementById('animset').getElementsByTagName('dd');
       for (var j=0;j<animdirs.length;j++) {
       animdirs[j].style.fontWeight = 'normal';
       }
       document.getElementById('v'+vdir).style.fontWeight = 'bold';
       document.getElementById('h'+hdir).style.fontWeight = 'bold';
       }


       function increaseFontSize() {
       changefont = Math.round(1.2*changefont);
       document.getElementsByTagName('body')[0].style.fontSize = changefont +'px';
       }

       function decreaseFontSize() {
       changefont = Math.round(0.8*changefont);
       document.getElementsByTagName('body')[0].style.fontSize = changefont +'px';
       }

       function restoreFontSize() {
       if (document.getElementsByTagName('body')[0].hasAttribute('style')) { document.getElementsByTagName('body')[0].removeAttribute('style');}
       changefont = basefont.match(/^(\d+)px$/)[1];
       }

       function toggleNavMenu() {
       if (!document.getElementById('navmenu')) {navMenu();}
       if (document.getElementById('controlmenu')) { document.getElementById('controlmenu').style.display = "none"; }

       var navmenu = document.getElementById('navmenu');
       navmenu.style.display == "none" ? navmenu.style.display = "block" : navmenu.style.display = "none";
       }

       function toggleControlMenu() {
       if (!document.getElementById('controlmenu')) {controlMenu();}
       if (document.getElementById('navmenu')) { document.getElementById('navmenu').style.display = "none"; }

       var controlmenu = document.getElementById('controlmenu');
       controlmenu.style.display == "none" ? controlmenu.style.display = "block" : controlmenu.style.display = "none";
       }

       function leaveFullScreen() {
       if (document.getElementById('controlmenu')) { document.getElementById('controlmenu').style.display = "none"; }
       if (document.getElementById('navmenu')) { document.getElementById('navmenu').style.display = "none"; }
       if (document.getElementsByTagName('body')[0].hasAttribute('style')) { document.getElementsByTagName('body')[0].removeAttribute('style');}
       }


       // Handle keypresses
       function dokey(evt) {
       var ch = evt.keyCode;

       // check to see if you're in fullscreen. Dirty hack, but hey?! :-)
       var firstslide = document.getElementById('slide1');
       if (window.getComputedStyle(firstslide,null).pageBreakAfter == "always") {
       if (ch == "34" || ch == "32" ) {  doAnim(); }
       else if (ch == "33" ) { slidedisplay = slidedisplay -2; doAnim(); }
       else if (ch == "0" ) { slidedisplay = -1; doAnim(); }
       else if (ch == "110" ) {  toggleNavMenu(); }
       else if (ch == "99" ) {  toggleControlMenu(); } // c toggles controlmenu
       else if (ch == "122" || ch == "27" ) {  leaveFullScreen(); } // F11/Esc clear up menus
       }
       else {
       if (ch == "110" ) {  toggleNavMenu(); }
       }
       }



       // Check if OperaShow file
       function checkOShow() {
       var metas = document.getElementsByTagName('meta');
       for (var i=0;i<metas.length;i++) { if (metas[i].getAttribute('content').match(/^OSF.(\d+)\.(\d+)$/)) { document.addEventListener('keypress', dokey, false); return; } }
       alert('Cannot apply Script. File is not compatible Opera Show')
       }

       checkOShow();

       //]]>
 </script>
 </head>
 <body>

 <!-- start layout section -->
 <div class="layout">
 <div class="bottomleft">Opera Software</div>
 <div class="bottomright">“The Best Internet Experience on Any Device”</div>
 <div class="topright" id="author"><a href="mailto:mikes@opera.com">Michael(tm) Smith</a></div>
 <div class="topleft" id="title">Bringing Web 2.0 to Mobile Devices</div>
 </div>
 <!-- end layout section -->

 <!-- start presentation -->
 <div class="presentation">
<!-- start slide -->
 <div class="slide" id="slide40">
   <h1>Developer resources</h1>
   <p>http://my.opera.com/dev/</p>
   <p>http://labs.opera.com/</p>
   <p>#opera, #widgets, and #userjs on irc.opera.com</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide39">
   <h1>Related presentations</h1>
   <p>Benjamin Smedberg, “Converging Rich-Client and Web Application
   Development with Mozilla XULRunner” (discusses Mozilla XULRunner as
   a platform)</p>
   <p>Håkon Lie, “Mobile Web Applications”; teaser: “A modern web
   browser, once installed on a mobile device, can be used for much
   more than just browsing. In fact, the whole user interface for the
   device can be built using web formats.”</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide38">
   <h1>Goodbye web apps, hello widgets?</h1>
   <p>The emergence of browsers as platforms for running
   standards-based (HTML, CSS, Javascript) apps that that are powerful
   but at the same time lightweight by design. Widgets,
   basically. Sets of apps developed around the platform will displace
   some of the apps that have been developed using other technologies
   (chiefly, Java and BREW applications), and may in fact obviate the
   need for certain types of web-based apps.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide37">
   <h1>One possible answer</h1>
   <p>One person in particular who has spent time thinking about, and
   writing about, the possibilities is Ajit Jaokar,whose essay
   “Mobile web 2.0: AJAX for mobile devices -- why mobile AJAX
   will replace both J2ME and XHTML as the preferred platform for
   mobile applications development - Part two”, is a must-read for
   anyone considering development for mobile devices. </p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide36">
   <h1>A perhaps more interesting question.</h1>
   <p>What might Javascript and AJAX be used for other than, say,
   developing the kinds of unmobile (an often monolithic) web apps
   it's mostly been used for so far?</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide35">
   <h1>What use to make of mobile AJAX?</h1>
   <p>Commonly asked: How do I take a web app designed for viewing on
   a PC screen, and for interacting with using a pointing device and
   cursor, and make is usable on a mobile device?</p>
   <p>The short and obvious answer is, you can't. Current mobile
   handsets do not have pointing devices, and if your app requires
   windowing within a browser frame, it's not going to be usable on a
   small screen.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide34">
   <h1>AJAX support?</h1>
   <p>Finally, we come to asking about that most-obvious aspect of Web
   2.0: the rich user experience enabled by browser support for
   AJAX/Javascript, and the question of how AJAX relates to mobile web
   browsing.</p>
   <p>Short answer: AJAX-enabled mobile browsers are available today,
   now. Developers who focus on users of the mobile web have already
   built web applications that make use of those, and will be building
   a lot more.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide33">
   <h1>Peter Ferne session description</h1>
   <p>“Current use of GPS is highly focused on navigation; we are
   changing this paradigm to a focus on exploration, discovery,
   sharing and interaction. Conversely much mobile technology strives
   to be insensitive to physical location; we are augmenting this with
   additional location-specific content.”</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide32">
   <h1>Apps related to social interaction</h1>
   <p>A key piece of Web 2.0 is the facilitation of a variety of group
   behaviors and social interactions that Tim O'Reilly, in his
   oft-cited “What Is Web 2.0” essay, describes as enabling users to
   “harness collective intelligence”.</p>
   <p>Example: Peter Ferne's “Sharing Places -- find, remix and share
   located media with the world” presentation at XTech 2006</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide31">
   <h1>Cameraphones &amp; QR codes (barcodes)</h1>
   <p>Handsets equipped with cameras and barcode reader software
   enable use of the camera as an input device; example: instead of
   typing in a URL manually to get a certain site, I just point my the
   camera on my handset at a barcode that encodes the URL, and the
   handset reads the code, recognizes it as a URL, and automatically
   launches the browser on the handset.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide29">
   <h1>GPS chipsets and location-based services</h1>
   <p>Example: NaviWalker, a real-time, location-aware trip-routing
   service built by Navitime.</p>

   <p>If there is currently anything that might be considered a
   “killer application” for mobile devices, location-based
   applications such as NaviWalker are it.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide28">
   <h1>Exploit mobile-specific hardware capabilities</h1>
   <ul>
     <li>GPS chipsets</li>
     <li>cameras as input devices (OCR translation, barcode
     reading)</li>
     <li>bluetooth</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide27">
   <h1>A new lease on life for “push” apps?</h1>
   <p>Unlike most unmobile usage, where users sit down in front of
   their PCs with a specific purpose in mind, users often initiate
   mobile-device usage without a specific intention of what they plan
   on doing or finding.</p>
   <p>Remember “push” technologies? They may have made a bad name for
   themselves in the desktop world, but in the mobile world -- where
   push is actually useful -- idle-time mobile users will appreciate
   pushed content.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide26">
   <h1>Idle-time browsing</h1>
   <p>Mobile-web usage is not just about services. Example: In Tokyo,
   people spend much time in transit -- riding on trains, waiting for
   trains; it's common to see people using their mobile
   handsets during those times.</p>
   <p>Often they have some specific purpose in mind (sending e-mail),
   but increasingly more often, the purpose is simply to pass time
   doing something other than just remaining idle -- e.g. by reading
   news or just browsing.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide25">
   <h1>Portable services: Another example</h1>
   <p>Example: Rocco Georgi's AJAX lightning demo at XTech 2006 -- a
   web app designed for a specific kind of mobile use: looking up
   used-car prices in real time while you're out car shopping.</p>
   <p>Certain types of data have higher value depending on
   location; you go to a used-car lot without knowing what you might
   find there. You don't know what data you need until you get there.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

<!-- start slide -->
 <div class="slide" id="slide24">
   <h1>Realize that much mobile-web usage is acutely
   service-driven</h1>
   <p>Example: In Tokyo, where most people do not own cars, but
   instead travel by train and by foot, services that provide
   information about navigating the city by train and by foot are in
   already in heavy use on mobile devices.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide23">
   <h1>Examples from the MWBP draft</h1>
   <p>06. [NAVBAR] Provide only minimal navigation at the top of the page.</p>
   <p>23. [CENTRAL_MEANING] Ensure that material that is central to
   the meaning of the page precedes material that is not.</p>
   <p>55. [AVOID_FREE_TEXT] Avoid free text entry where possible.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide22">
   <h1>Fortunately, help is available</h1>
   <p>Mobile Web Best Practices 1.0</p>
   <p>http://www.w3.org/TR/mobile-bp/</p>
   <p>A collation of existing wisdom (currently, 60 separate items)
   from a variety of sources, refined through WG discussion and
   solicitation of public comments.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide21">
   <h1>Mobile-considerate site design</h1>
     <dl>
       <dt>Reality check.</dt>
     <dd>Not practical for most developers to create mobile-specific
     versions of their sites and web apps, even if they thought it
     would be a good idea to do so.</dd>
     </dl>
     <dl>
       <dt>But a little consideration goes a long way.</dt>
       <dd>You can, with very little additional effort and cost,
       provide a usable mobile experience by designing your sites and
       apps in a “mobile considerate” way.</dd>
     </dl>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide20">
   <h1>A painful disease, and a cure.</h1>
     <dl>
       <dt>The versionitis problem</dt>
     <dd>Mobile-specific sites -- often N different mobile-specific
     sites for N different mobile carriers (in Japan, separate sites
     for Au, Jphone/Vodaphone, and DoCoMo)</dd>
     </dl>
     <dl>
       <dt>The sane (“one Web”) solution.</dt>
       <dd>Create only one version of a website and serve it to
       all kinds of devices, cell phones included</dd>
     </dl>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide18">
   <h1>Design considerations (cont'd)</h1>
   <ul>
     <li>Exploit mobile-specific hardware capabilities</li>
     <li>Take advantage of increased opportunities for creating apps for
     social interaction</li>
     <li>Say goodbye to web apps and hello to widgets?</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide17">
   <h1>Design considerations (cont'd)</h1>
   <ul>
     <li>Exploit mobile-specific hardware capabilities</li>
     <li>Take advantage of increased opportunities for creating apps for
     social interaction</li>
     <li>Say goodbye to web apps and hello to widgets?</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide16">
   <h1>Design considerations</h1>
   <ul>
     <li>Abandon the “versionitis” approach</li>
     <li>Design all sites and web apps to be
     <strong>mobile-considerate</strong></li>
     <li>Anticipate service-driven and “idle time” mobile-web
     usage</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide15">
   <h1>The time is now</h1>
   <p>Users now have the means to productively browse the real Web
   from their handsets. Our job as web developers is to get over our
   (ahem) myopic focus on developing exclusively for viewing on
   unmobile (aka desktop) viewing and start making sure our web sites
   and web apps are usable on mobile devices.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide14">
   <h1>Going beyond just sucking less</h1>
   <ul>
     <li>Javascript support</li>
     <li>XMLHttpRequest support</li>
     <li>and more (e.g., SVG support)</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide13">
   <h1>Minimal criteria for making a mobile web browser that sucks
   less</h1>
   <ul>
     <li>ability to intelligently reformat pages for small-screen
     viewing (including inconsiderate page designs)</li>
     <li>ability to handle large images</li>
     <li>ability to display pages in excess of 500Kb</li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide12">
   <h1>Hey, this mobile browser actually doesn't suck</h1>
   <p>Most users have never had particulary compelling (or even
   marginally satisfactory) experiences with the legacy browsers on
   their handsets. Their expectations are low...</p>
   <p>So when users finally encounter a real mobile browser, it can be
   quite an epiphany: “Wow. I think I might actually be able to use
   this thing to browse the real Web.”</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide11">
   <h1>Factors driving change</h1>
   <ul>
     <li>speedier CPUs and increased RAM (?)</li>
     <li>faster data rates (2.4Mbps at KDDI) (?)</li>
     <li>flat-rate pricing for data services</li>
     <li><strong>wider availability of non-crappy mobile browsers (aka
     “full browsers” that actually let you browse the real Web (as
     opposed to the hobbled, walled-garden “toy” Web)</strong></li>
   </ul>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide10">
   <h1>What the numbers tell us</h1>
   <p>The percentage of users browsing the web from mobile devices has
   increased dramatically and will continue to increase dramatically.</p>
   <p>Believe it.</p>
   <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide9">
   <h1>Math lesson #3</h1>
   <img src="browsing-pie.png" alt=""/>
   <p class="attribution">source: Nokia report, by way of Philipp
   Hoschka, April 22, 2006</p> <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide8">
   <h1>Math lesson #2 (cont'd)</h1>
   <img src="multimedia-users-ed2.gif" alt=""/>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide7">
   <h1>Math lesson #2</h1>
   <img src="multimedia-users-ed.gif" alt=""/>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide6">
   <h1>Math lesson #1</h1>
   <img src="households-amp.gif" alt=""/>
   <p class="attribution">source: eMarketer, April 21, 2006 (hat tip to
   Russell Beattie)</p>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide5">
   <h1>I answer:</h1>
   <p><strong>Do the math.</strong></p>
 <div class="spacer"></div>
 </div>

 <!-- start slide -->
 <div class="slide" id="slide4">
   <h1>You ask:</h1>
   <p>Why bother designing for <strike>“the mobile web”</strike>
   <strong>viewing on mobile devices</strong>?</p>
   <p>Isn't it too early for that?</p>
 <div class="spacer"></div>
 </div>


 <!-- start slide -->
 <div class="slide" id="slide3">
   <img src="mobile-hipster.jpg" alt=""/>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide2a">
   <h1>What do you mean by Mobility?</h1>
   <p>I want to help enable people to access the real Internet from
   wherever the want, any time they want.</p>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide2a">
   <p>Home: Tokyo, Japan</p>
   <p>Employer: Opera Software</p>
   <p>Religious affiliation: Mobility</p>
 <div class="spacer"></div>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide2">
   <p style="font-size: 64pt">mikes@opera.com</p>
 </div>
 <!-- end slide -->

 <!-- start slide -->
 <div class="slide" id="slide1">
 <h1>Bringing Web 2.0 to Mobile Devices</h1>
 <h2>XTech 2006 Amsterdam</h2>
 <h2>Michael(tm) Smith</h2>
 <h2>http://sideshowbarker.net/xtech06/</h2>
 </div>
 <!-- end slide -->

 </div>
 <!-- end presentation -->

</body>
</html>

