SlideShare uma empresa Scribd logo
1 de 53
Overview
 ‣ The Power and Future of Mobile
 ‣ Mobile Browsers and Engines (WebKit/HTML5)

 ‣ CBC Mobile Services (Apps/Sites)

 ‣ Web Apps, Native Apps and Hybrid Apps

 ‣ Mobile Web Information Architecture

 ‣ Enabling Your Site for Mobile Web

 ‣ Optimization / Best Practices / (Debugging) Tools

 ‣ Links/Literature Resources
Who has developed a website before?
Why develop for mobile web?
6.8 billion people in the world




http://www.robert-alonso-photos.com/wp-content/uploads/2009/08/3ConeyIslandBeach.jpg
3.4 billion people with mobile devices

                                Flickr: Batikart
Mobile is the 7th Mass Media
Print        Recordings


Radio        Television


Cinema      The Internet



        Mobile
Print        Recordings


            Radio        Television


            Cinema      The Internet



                    Mobile

Mobile is the only mass media that can do
   everything the previous six can do
                                       Source: http://en.wikipedia.org/wiki/Seven_mass_media
Unique Benefits
First truly personal mass media                                                                      Permanently carried


    First “always on” mass media                                                                 Built-in payment channel


                                                                                      Most accurate audience measurement


http://www.flickr.com/photos/blogumentary/3947228410/sizes/o/in/faves-caseymckinnon/                Source: http://en.wikipedia.org/wiki/Seven_mass_media
Desktop vs. Mobile Browsing
http://www.motivationalmemo.com/wp-content/uploads/2010/06/change.jpg
Mobile Users vs. Desktop Users




          Source: Morgan Stanley Research, http://gigaom.com/2010/04/12/mary-meeker-mobile-internet-will-soon-overtake-fixed-internet/
Enough Reasons to go mobile?


               ...but what mobile platform should you target?




Let’s look at mobile browsers and engines




                                            http://bunkadefresh.com/wp-content/uploads/2010/07/evophones2.jpg
What browsers should you develop for?




                 Source: http://gs.statcounter.com/#mobile_browser-na-yearly-2009-2011-bar
Mobile Grade Browsers
               A
               A browser that’s capable of, at minimum,
               utilizing media queries, support HTML5,
               WebKit Engine, CSS, JavaScript



               B
               A browser that’s capable of minimum
               CSS and JavaScript



               C
               A browser that is not capable of utilizing
               media queries. Watch out for complicated
               JS, CSS — they DON’T support them


                    Source: JQuery Mobile, http://jquerymobile.com/gbs/
Device vs. Browser

Feature Phones                        Smart Phones                                    Touch Phones
 FlipPhone, e.g. Samsung   e.g. most BlackBerry’s before Torch (i.e. Bold, Curve)   e.g. Google Nexus, BB Torch, iPhone




           C                         B                        A                                   A


                                    http://gizmodo.com/5090988/mobile-browser-battlemodo-which-phones-deliver-the-real-web
Browser Engines


‣ WebKit (BlackBerry 6.0, Android, iOS)
‣ Presto (Opera Mini)
‣ NetFront (Playstation)
‣ Gecko (Camino, Firefox, SeaMonkey)
‣ and more
Go with WebKit

‣ WebKit (BlackBerry 6.0, Android, iOS)
‣ Presto (Opera Mini)
‣ NetFront (Playstation)
‣ Gecko (Camino, Firefox, SeaMonkey)
‣ and more
WebKit and HTML5



‣ WebKit is not a browser, it’s an engine
‣ Most A-Grade mobile browsers are based on WebKit
  and support HTML5
HTML5



‣ Why you want to make use of HTML5 features
  in your web app/site
HTML5 Rocks!
‣ Easy Markup / new semantic elements
   <video src="movie.mp4" controls="controls">
   your browser does not support the video tag
   </video>



‣ New, smarter form controls, i.e. placeholder, date, number, url
   <input   type="email" placeholder="Enter your email address"/>
   <input   type=”date”/>
   <input   type="number" min="1" value="4" name="2" size="2"/>
   <input   type=”url”/>


‣ Client-Side database, SQLite

‣ Offline Storage via cache.manifest file
   <html manifest=”cache.manifest”>            CACHE MANIFEST
                                               index.html
                                               css/basic.css
                                               images/logo.png
                                               images/footer.png
‣ and...
HTML5 - Location Based
Services
‣ W3C Specification: http://dev.w3.org/geo/api/spec-source.html
CBC Mobile Services

      More under cbc.ca/mobile/services
CBC Mobile Site Strategy



‣ To cover A, B and C grade mobile browsers by
  creating three main mobile sites that encompass the
  different features and limitations of those browsers.
CBC Mobile Sites
                     TOUCH                          RICH                               TEXT
                 cbc.ca/m/touch                 cbc.ca/m/rich                      cbc.ca/m/text

  Device         Touch Devices               Mostly BB devices                   Feature Phones

 Browser               A-Grade                     B/C-Grade                           C-Grade
              ‣Extended use of JavaScript    ‣Simple CSS and JavaScript     ‣ No images/photos
               and Ajax                      ‣Simple Media (Story images,   ‣ Simple navigation, less links
              ‣WebKit based, CSS3, CSS        Photo Galleries)              ‣ No complicated JavaScript, simple
 Features      sprites, conditional CSS      ‣Use of resized story images    CSS
              ‣Photo galleries and videos     (prefix s_)
              ‣Use of resized story images
               (prefix t_)




Site/Device
Web App, Native App and Hybrid App




‣ Why would you want to have a web app in addition to/
  instead of a native app?
Web vs. Native vs. Hybrid Apps
                   Web Apps                                            Native Apps

‣   Easy distribution/installation                 ‣      Possible complicated distribution trough app
‣   Native Look & Feel                                    stores, fees/charges
‣   Works on all platforms                         ‣      Strict UI Guidelines
‣   Single click using HTML5,Ajax                  ‣      Easy attention through app store
‣   Offline Storage                                 ‣      Platform-dependent
‣   No advertisement restrictions                  ‣      New app for each platform (knowledge of
‣   Fast development time, any web developer              language, Objective-C, Java etc)
    can create web app                             ‣      Full Access to native APIs, features, i.e.
‣   BUT Cannot access all native features, i.e            camera, calendar, address book, push
    compass, camera etc.                                  notification

Example: Google Gmail



                                            Hybrid Apps

‣   Web app wrapped around native app
‣   Access to native APIs

    Example: BlackBerry WebWorks, iOS/Android with webviews
What do you have to do to enable your website for mobile?
Mobile Information Architecture
"If you design for mobile first, you can create agreement
first on what matters most."
               — Luke Wroblewski, previous Chief Design Architect at Yahoo!
Mobile Information Architecture


 ‣ Touch phones: big buttons, most of the real-estate
   should be clickable
 ‣ Smart phones: track ball, avoid too many links as
   user has to scroll down, use easy navigation items,
   i.e. anchors
Mobile Information Architecture

Guidelines for Mobile URLs:
Make it easy for user to type in your mobile site URL
  ‣ m.cbc.ca
  ‣ touch.facebook.com
  ‣ mobile.twitter.com


and enable auto redirection ...
Redirect to Mobile
    ‣ Decide on user agent strings

Mozilla/5.0 (webOS/1.0; U; en-US)   Mozilla/5.0 (BlackBerry; U;         SAMSUNG-D900E/D900EXAIC1
AppleWebKit/525.27.1 (KHTML, like   BlackBerry 9800; en) AppleWebKit/   NetFront/3.5 Profile/MIDP-2.0
Gecko) Version/1.0 Safari/          534.1+ (KHTML, like Gecko)          Configuration/CLDC-1.1
525.27.1 Pre/1.0                    Version/6.0.0.135 Mobile Safari/
                                    534.1+




               v                                   v                                   v
Redirect to Mobile

‣ Server-side
  ‣ Webserver: http.conf
           # Catch iPhone-users first
           RewriteCond %{HTTP_USER_AGENT} .*Mobile.*Safari
           RewriteRule ^[./](.*)$ http://www.cbc.ca/m/touch

  ‣ SSI
           <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" -->
               <meta http-equiv="refresh" content="0; url=www.cbc.ca/m/rich">
           <!--#endif -->
Redirect to Mobile

‣ Edge Side Include
      <esi:eval src="mobileuseragents.esi" dca="none" />

       <esi:choose>
           <esi:when test="$(HTTP_USER_AGENT) matches_i $(touch)" matchname="touchmatch">
                    $set_redirect('http://www.cbc.ca/m/touch/')
           </esi:when>
           <esi:when test="$(HTTP_USER_AGENT) matches_i $(rich)" matchname="richmatch">
                      $set_redirect('http://www.cbc.ca/m/rich/')
           </esi:when>
           <esi:otherwise>
               <esi:include src="index.html"/>
           </esi:otherwise>
       </esi:choose>



‣ Client-side: JavaScript
      if (navigator.userAgent.indexOf("iPod") != -1 ||
          navigator.userAgent.indexOf("iPhone") != -1){
          window.location.href = “http://www.cbc.ca/m/touch”;
      }
Redirect to Mobile

‣ But don’t limit user to full site access
Customizing for Devices/
Platforms


‣ Create the best user experience possible based on
  user’s platform/device
‣ Know device/browser specific features and take
  advantage of them
Customizing for Devices/OS

‣ Using JavaScript to detect user agent and show content only based on that:
      if (navigator.userAgent.indexOf("iPod") != -1 ||
      navigator.userAgent.indexOf("iPhone") != -1){
        // do device specific stuff, e.g. show QT videos or show menu items
      }




‣ Using Media Queries, e.g. calling an iPhone/Mobile stylesheet:

     <link media="only screen and (max-device-width: 480px)" href="mobile.css"
       type= "text/css" rel="stylesheet">

     <link media="screen and (min-device-width: 481px)" href="other.css"
       type="text/css" rel="stylesheet"/>
Customizing for Devices/OS

‣ BlackBerry users get extra information presented

   <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" -->
    <div class="wspromo">
       <a href="/m/rich/websignal.html"
        title=”Subscribe to WebSignal Alert”>
        Get CBC's Websignal Alert</a>
    </div>
   <!--#endif -->




‣ iOS: Disable automatic phone number detection

   <meta name = "format-detection" content ="telephone=no"/>
Customizing for Devices/OS

‣ Fallbacks

    ‣ CSS
     <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" -->
         <!--#if expr="$osversion != /4.2([^&]*)/" -->
             <div class="nocss">You don't have CSS enabled. To have a better experience,
             please turn on background images and CSS on your device.</div>
         <!--#endif -->
     <!--#endif -->




    ‣ JavaScript
    <noscript>To access the site with all its functionality, please enable JavaScript.</noscript>
Make it a Web App

‣ iPhone: Full screen without browser bar
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta names="apple-mobile-web-app-status-bar-style"
        content="black-translucent" />




‣ iPhone: Add to Home Screen Box



‣ iPhone: Home Screen Icon
     <link rel="apple-touch-icon" href="img/cbc-touch-icon.png"/>
Optimization



‣ Reduce the page load / page weight as much as
  possible
Optimization

‣ Minimize HTTP requests

‣ Put CSS at top of page

‣ Put JavaScript scripts at bottom of page

‣ Avoid images where possible and/or optimize images

      ‣ Use CSS3 features instead of images, i.e. border radius, gradient



    border-radius: 10px;                /* gecko based browsers */
    -moz-border-radius: 10px;           background: -moz-linear-gradient(top, #55aaee, #003366);
    -webkit-border-radius: 10px;        /* webkit based browsers */
                                        background: -webkit-gradient(linear, left top, left
                                        bottom, from(#55aaee), to(#000000));
Optimization
‣ Use image sprites

‣ Image optimization via Smush.it

‣ Consider mobile image resizer solutions: Resizing images
  for all major device widths via device detection

‣ Don’t scale images in HTML

‣ Use minified scripts, i.e. js, css (YSlow)

‣ Reduce number of DOM Element

    //avoid
    var divArr = document.getElementByClassName(“story-images”);
    //The number of DOM elements is easy to test, just type in Firebug's console:
    document.getElementsByTagName('*').length



‣ Read more under http://developer.yahoo.com/performance/rules.html
CBC Full-site vs. CBC mobile sites
  cbcnews.ca        cbc.ca/m/touch/news                cbc.ca/m/rich/news
                     (including Canada Votes)            (including Canada Votes)



          837.5 K                        72.1 K                             28.9 K




                                  cbc.ca/m/text/news >> HTTP Requests - 8, Total Weight:
                                                         4.2K
Things to Consider

 ‣ If you’re going to target C-grade browsers
   avoid CSS(3) and JavaScript where possible
 ‣ Don’t think only because your site looks good on
   iPhone, it will also look good on old BlackBerry
   browsers (< OS 5.0)
 ‣ Compatibility Mobile Table by Peter-Paul Koch
   (ppk): http://www.quirksmode.org/mobile/
Mobile Compatibility Table




                   Source: http://www.quirksmode.org/mobile/
Mobile Tools & Frameworks


‣ Frameworks:                              iUi,
  JQTouch, JQuery Mobile. Sencha
    ‣ Kitchen Sink:
      http://dev.sencha.com/deploy/touch
      /examples/kitchensink/
Mobile Tools & Frameworks

‣ WURLF: Wireless Universal Resource File

     ‣ Open Source project
     ‣ XML configuration file containing information about features
       and capabilities of many mobile devices (~14000)

     ‣ Website offers many optimization tools/apps
  “The main scope of the file is to collect as much information as we can
  about all the existing mobile devices that access WAP pages so that
  developers will be able to build better applications and better services for
  the users.” (wurfl.sourceforge.net)
WURLF XML
                      <device id="blackberry9800_ver1" user_agent="Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+

‣ Example:           (KHTML, like Gecko) Version/6.0.0.135 Mobile Safari/534.1+" fall_back="blackberry_generic_ver6"
                     actual_device_root="true">
                         <group id="product_info">

  BlackBerry Torch         <capability name="pointing_method" value="touchscreen"/>
                           <capability name="uaprof" value="http://www.blackberry.net/go/mobile/profiles/uaprof/9800_edge/6.0.0.rdf"/>
                           <capability name="model_name" value="BlackBerry 9800"/>
                           <capability name="uaprof2" value="http://www.blackberry.net/go/mobile/profiles/uaprof/9800_umts/6.0.0.rdf"/>
                           <capability name="brand_name" value="RIM"/>
                           <capability name="marketing_name" value="Torch"/>
                           <capability name="release_date" value="2010_august"/>
                         </group>
                         <group id="wml_ui">
                           <capability name="table_support" value="true"/>
                         </group>               <device id="blackberry9800_ver1" user_agent="Mozilla/5.0 (BlackBe
                        <!-- ... -->          (KHTML, like Gecko) Version/6.0.0.135 Mobile Safari/534.1+" fall_b
                         <group id="display">
                                              actual_device_root="true">
                           <capability name="physical_screen_height" value="70"/>
                                                    <group id="product_info">
                           <capability name="columns" value="36"/>
                           <capability name="dual_orientation" value="true"/>
                                                       <capability name="pointing_method" value="touchscreen"/>
                           <capability name="physical_screen_width" value="50"/>
                                                       <capability name="uaprof" value="http://www.blackberry.net/g
                           <capability name="max_image_width" value="360"/>
                           <capability name="rows" value="32"/>
                                                       <capability name="model_name" value="BlackBerry 9800"/>
                           <capability name="resolution_width" value="360"/>
                                                       <capability name="uaprof2" value="http://www.blackberry.net/
                           <capability name="resolution_height" value="480"/>
                           <capability name="max_image_height" value="400"/>
                         </group>                      <capability name="brand_name" value="RIM"/>
                         <group id="image_format">     <capability name="marketing_name" value="Torch"/>
                           <capability name="jpg" value="true"/>
                                                       <capability name="release_date" value="2010_august"/>
                           <capability name="gif" value="true"/>
                                                    </group>
                           <capability name="bmp" value="true"/>
                           <capability name="wbmp" value="true"/>
                                                    <group id="wml_ui">
                           <capability name="png" value="true"/>
                                                       <capability name="table_support" value="true"/>
                           <capability name="colors" value="65536"/>
                           <capability name="tiff" value="true"/>
                                                    </group>
                         </group>
                         <group id="storage">      <!-- ... -->
                           <capability name="max_deck_size" value="32768"/>
                                                    <group id="display">
                         </group>
                         <group id="streaming">        <capability name="physical_screen_height" value="70"/>
                                                       <capability name="columns" value="36"/>
                           <capability name="streaming_vcodec_h263_0" value="10"/>
                           <capability name="streaming_vcodec_h264_bp" value="1"/>
                                                       <capability name="dual_orientation" value="true"/>
                           <capability name="streaming_vcodec_mpeg4_sp" value="0"/>
                         </group>                      <capability name="physical_screen_width" value="50"/>
                      <!-- ... --->
                        <group id="sound_format">      <capability name="max_image_width" value="360"/>
                                                       <capability name="rows" value="32"/>
                           <capability name="wav" value="true"/>
                           <capability name="sp_midi" value="true"/>
                                                       <capability name="resolution_width" value="360"/>
                           <capability name="amr" value="true"/>
                                                       <capability name="resolution_height" value="480"/>
                           <capability name="midi_monophonic" value="true"/>
                         </group>
                         <group id="bearer">           <capability name="max_image_height" value="400"/>
                                                    </group>
                           <capability name="wifi" value="true"/>
                           <capability name="max_data_rate" value="384"/>
                         </group>                   <group id="image_format">
                        <!-- ... --->                  <capability name="jpg" value="true"/>
                     </device>
                                                    <capability name="gif" value="true"/>
What should your development
   environment look like?
Setting up your dev
environment
‣ Eclipse or any other choice of text editor

‣ Webserver / Apache

‣ Firefox/Firebug for Debugging

   ‣ Web Development PlugIn

   ‣ YSlow integrated into Firebug

   ‣ User agent Switcher

‣ Emulators/Simulators (Watch out!)

   ‣ Available for Palm Pre, iPhone (Mac only),
     Android, BlackBerry Simulator (PC only)
Links/Literature
‣ O’Reilly, Brian Fling: Mobile Design and Development

‣ Mobile First: http://www.youtube.com/watch?v=NjE_Or4VIlU

‣ Device Atlas: http://deviceatlas.com/

‣ W3C mobileOK Checker: http://validator.w3.org/mobile/

‣ W3C Mobile Best Practices: http://www.w3.org/TR/mobile-bp/

‣ Design Principles for the Mobile Web: http://articles.sitepoint.com/article/
  designing-for-mobile-web

‣ Safari Web Apps: http://developer.apple.com

‣ Nokia Mobile Design Patterns: http://wiki.forum.nokia.com/index.php/
  Category:Mobile_Design_Patterns
Developing for Mobile Web

Mais conteúdo relacionado

Mais procurados

The Often Useful Somewhat Annoying World of WordPress Multisite
The Often Useful Somewhat Annoying World of WordPress MultisiteThe Often Useful Somewhat Annoying World of WordPress Multisite
The Often Useful Somewhat Annoying World of WordPress MultisiteJames Bundey
 
Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Robert Lemke
 
Spca2014 introduction responsive master page niaulin
Spca2014 introduction responsive master page niaulinSpca2014 introduction responsive master page niaulin
Spca2014 introduction responsive master page niaulinNCCOMMS
 
Backend & Frontend architecture scalability & websockets
Backend & Frontend architecture scalability & websocketsBackend & Frontend architecture scalability & websockets
Backend & Frontend architecture scalability & websocketsAnne Jan Brouwer
 
Word press theme and plugins WordCamp Presentation
Word press theme and plugins WordCamp PresentationWord press theme and plugins WordCamp Presentation
Word press theme and plugins WordCamp PresentationAngela Samuels
 
Zurb foundation
Zurb foundationZurb foundation
Zurb foundationsean_todd
 
One day WordPress workshop
One day WordPress workshopOne day WordPress workshop
One day WordPress workshopRashna Maharjan
 
PAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonNeotys
 
Untangling the web week 2 - SEO
Untangling the web week 2 - SEOUntangling the web week 2 - SEO
Untangling the web week 2 - SEODerek Jacoby
 
Easy computer for bds10 entrance for website
Easy computer for bds10 entrance for websiteEasy computer for bds10 entrance for website
Easy computer for bds10 entrance for websiteSatoru Hoshiba
 
Untangling the web - week 3
Untangling the web - week 3Untangling the web - week 3
Untangling the web - week 3Derek Jacoby
 
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSPhp Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSIrfan Maulana
 
Optimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get thereOptimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get thereStephen Bell
 
Why it's not your host's fault
Why it's not your host's faultWhy it's not your host's fault
Why it's not your host's faultchadmow03
 
2015 - Introduction to building enterprise web applications using Angular.js
2015 - Introduction to building enterprise web applications using Angular.js2015 - Introduction to building enterprise web applications using Angular.js
2015 - Introduction to building enterprise web applications using Angular.jsWebF
 
Responsive Design in Drupal with Zen and Zen Grids
Responsive Design in Drupal with Zen and Zen GridsResponsive Design in Drupal with Zen and Zen Grids
Responsive Design in Drupal with Zen and Zen GridsSuzanne Dergacheva
 

Mais procurados (20)

The Often Useful Somewhat Annoying World of WordPress Multisite
The Often Useful Somewhat Annoying World of WordPress MultisiteThe Often Useful Somewhat Annoying World of WordPress Multisite
The Often Useful Somewhat Annoying World of WordPress Multisite
 
Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015
 
Spca2014 introduction responsive master page niaulin
Spca2014 introduction responsive master page niaulinSpca2014 introduction responsive master page niaulin
Spca2014 introduction responsive master page niaulin
 
Backend & Frontend architecture scalability & websockets
Backend & Frontend architecture scalability & websocketsBackend & Frontend architecture scalability & websockets
Backend & Frontend architecture scalability & websockets
 
Word press theme and plugins WordCamp Presentation
Word press theme and plugins WordCamp PresentationWord press theme and plugins WordCamp Presentation
Word press theme and plugins WordCamp Presentation
 
Zurb foundation
Zurb foundationZurb foundation
Zurb foundation
 
One day WordPress workshop
One day WordPress workshopOne day WordPress workshop
One day WordPress workshop
 
PAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark TomlinsonPAC 2019 virtual Mark Tomlinson
PAC 2019 virtual Mark Tomlinson
 
Untangling the web week 2 - SEO
Untangling the web week 2 - SEOUntangling the web week 2 - SEO
Untangling the web week 2 - SEO
 
Working local
Working localWorking local
Working local
 
Easy computer for bds10 entrance for website
Easy computer for bds10 entrance for websiteEasy computer for bds10 entrance for website
Easy computer for bds10 entrance for website
 
Untangling the web - week 3
Untangling the web - week 3Untangling the web - week 3
Untangling the web - week 3
 
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSPhp Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
 
Optimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get thereOptimizing Your WordPress Site: Why speed matters, and how to get there
Optimizing Your WordPress Site: Why speed matters, and how to get there
 
Accessible ePub3 Features
Accessible ePub3 FeaturesAccessible ePub3 Features
Accessible ePub3 Features
 
Why it's not your host's fault
Why it's not your host's faultWhy it's not your host's fault
Why it's not your host's fault
 
2015 - Introduction to building enterprise web applications using Angular.js
2015 - Introduction to building enterprise web applications using Angular.js2015 - Introduction to building enterprise web applications using Angular.js
2015 - Introduction to building enterprise web applications using Angular.js
 
Responsive Design in Drupal with Zen and Zen Grids
Responsive Design in Drupal with Zen and Zen GridsResponsive Design in Drupal with Zen and Zen Grids
Responsive Design in Drupal with Zen and Zen Grids
 
More Multisite for the Masses
More Multisite for the MassesMore Multisite for the Masses
More Multisite for the Masses
 
Blogging for Business
Blogging for BusinessBlogging for Business
Blogging for Business
 

Destaque

Red de redes. internet
Red de redes. internetRed de redes. internet
Red de redes. internetLucas Rial
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt ManagementMark Niebergall
 
Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Raymond Marquina
 
PROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Ges.m.b.H:
 
Kraft and DiagSoft
Kraft and DiagSoft Kraft and DiagSoft
Kraft and DiagSoft Gordon Kraft
 
Estudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHEstudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHNelson Leiva®
 
Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Boa Vontade
 
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...ErgoCV
 
The curse of the mummy chapter 6
The curse of the mummy   chapter 6The curse of the mummy   chapter 6
The curse of the mummy chapter 6MrErwin
 
The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...Target Research
 
Reduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationReduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationLarry Levine
 

Destaque (20)

Red de redes. internet
Red de redes. internetRed de redes. internet
Red de redes. internet
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
Portfolio
PortfolioPortfolio
Portfolio
 
Tushar_Vaidya1
Tushar_Vaidya1Tushar_Vaidya1
Tushar_Vaidya1
 
Emc expoesymposium
Emc expoesymposiumEmc expoesymposium
Emc expoesymposium
 
Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24
 
PROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche Zählerablesung
 
Ar Tmarketing 3 Bpix
Ar Tmarketing 3 BpixAr Tmarketing 3 Bpix
Ar Tmarketing 3 Bpix
 
Kraft and DiagSoft
Kraft and DiagSoft Kraft and DiagSoft
Kraft and DiagSoft
 
Estudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHEstudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCH
 
Driving User Adoption for SharePoint
Driving User Adoption for SharePointDriving User Adoption for SharePoint
Driving User Adoption for SharePoint
 
Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240
 
Menu enero
Menu eneroMenu enero
Menu enero
 
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
 
The curse of the mummy chapter 6
The curse of the mummy   chapter 6The curse of the mummy   chapter 6
The curse of the mummy chapter 6
 
Tesis - validación
Tesis -  validaciónTesis -  validación
Tesis - validación
 
BUDAYA BALI
BUDAYA BALIBUDAYA BALI
BUDAYA BALI
 
Física clásica
Física clásicaFísica clásica
Física clásica
 
The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...
 
Reduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationReduce Costs Through Printer Consolidation
Reduce Costs Through Printer Consolidation
 

Semelhante a Developing for Mobile Web

The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - Recife
The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - RecifeThe challenges of building mobile HTML5 applications - FEEC Brazil 2012 - Recife
The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - RecifeCaridy Patino
 
Jason.O Keefe.Genuitec.Presentation.Final
Jason.O Keefe.Genuitec.Presentation.FinalJason.O Keefe.Genuitec.Presentation.Final
Jason.O Keefe.Genuitec.Presentation.FinalAjax Experience 2009
 
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/Mobile Web Overview https://www.edocr.com/v/k52p5vj4/
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/Jack Zheng
 
Bruce lawson-over-the-air
Bruce lawson-over-the-airBruce lawson-over-the-air
Bruce lawson-over-the-airbrucelawson
 
2011 08-24 mobile web app
2011 08-24  mobile web app2011 08-24  mobile web app
2011 08-24 mobile web appSholto Maud
 
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMI
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMIBACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMI
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMIbacmove
 
Building Mobile Websites with Joomla
Building Mobile Websites with JoomlaBuilding Mobile Websites with Joomla
Building Mobile Websites with JoomlaTom Deryckere
 
10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web DeveloperTellago
 
10 things to make you a Great Mobile Web Developer
10 things to make you a Great Mobile Web Developer10 things to make you a Great Mobile Web Developer
10 things to make you a Great Mobile Web DeveloperChris Love
 
10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web DeveloperTellago
 
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery Mobile
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery MobileBuilding Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery Mobile
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery MobileJon Cortez
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App DevelopmentChris Morrell
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoCaridy Patino
 
Optimizing content for the "mobile web"
Optimizing content for the "mobile web"Optimizing content for the "mobile web"
Optimizing content for the "mobile web"Chris Mills
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppSt. Petersburg College
 
Fragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionFragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionBelen Barros Pena
 
HTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureHTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureMotorola Mobility - MOTODEV
 
Future of Mobile Web Application and Web App Store
Future of Mobile Web Application and Web App StoreFuture of Mobile Web Application and Web App Store
Future of Mobile Web Application and Web App StoreJonathan Jeon
 
Mobile web application development
Mobile web application developmentMobile web application development
Mobile web application developmentVince Aggrippino
 

Semelhante a Developing for Mobile Web (20)

The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - Recife
The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - RecifeThe challenges of building mobile HTML5 applications - FEEC Brazil 2012 - Recife
The challenges of building mobile HTML5 applications - FEEC Brazil 2012 - Recife
 
Jason.O Keefe.Genuitec.Presentation.Final
Jason.O Keefe.Genuitec.Presentation.FinalJason.O Keefe.Genuitec.Presentation.Final
Jason.O Keefe.Genuitec.Presentation.Final
 
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/Mobile Web Overview https://www.edocr.com/v/k52p5vj4/
Mobile Web Overview https://www.edocr.com/v/k52p5vj4/
 
Bruce lawson-over-the-air
Bruce lawson-over-the-airBruce lawson-over-the-air
Bruce lawson-over-the-air
 
Best Practices for Mobile Web Design
Best Practices for Mobile Web DesignBest Practices for Mobile Web Design
Best Practices for Mobile Web Design
 
2011 08-24 mobile web app
2011 08-24  mobile web app2011 08-24  mobile web app
2011 08-24 mobile web app
 
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMI
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMIBACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMI
BACnet HMI5 - BACnet Touch Panel - BACnet Touch Screen - HMI
 
Building Mobile Websites with Joomla
Building Mobile Websites with JoomlaBuilding Mobile Websites with Joomla
Building Mobile Websites with Joomla
 
10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer
 
10 things to make you a Great Mobile Web Developer
10 things to make you a Great Mobile Web Developer10 things to make you a Great Mobile Web Developer
10 things to make you a Great Mobile Web Developer
 
10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer10 Things To Make You a Great Mobile Web Developer
10 Things To Make You a Great Mobile Web Developer
 
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery Mobile
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery MobileBuilding Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery Mobile
Building Mobile Web Apps using ASP.NET MVC, HTML5, & jQuery Mobile
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing Mojito
 
Optimizing content for the "mobile web"
Optimizing content for the "mobile web"Optimizing content for the "mobile web"
Optimizing content for the "mobile web"
 
Best Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile AppBest Practices in Mobile Development: Building Your First jQuery Mobile App
Best Practices in Mobile Development: Building Your First jQuery Mobile App
 
Fragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fictionFragmentation in mobile design: fact or fiction
Fragmentation in mobile design: fact or fiction
 
HTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the FutureHTML5 vs Native Android: Smart Enterprises for the Future
HTML5 vs Native Android: Smart Enterprises for the Future
 
Future of Mobile Web Application and Web App Store
Future of Mobile Web Application and Web App StoreFuture of Mobile Web Application and Web App Store
Future of Mobile Web Application and Web App Store
 
Mobile web application development
Mobile web application developmentMobile web application development
Mobile web application development
 

Mais de Barbara Bermes

3rd Party Footprint @ Webrebels
3rd Party Footprint @ Webrebels3rd Party Footprint @ Webrebels
3rd Party Footprint @ WebrebelsBarbara Bermes
 
Third Party Footprint: Evaluating the Performance of External Scripts
Third Party Footprint: Evaluating the Performance of External ScriptsThird Party Footprint: Evaluating the Performance of External Scripts
Third Party Footprint: Evaluating the Performance of External ScriptsBarbara Bermes
 
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTSBarbara Bermes
 
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nation
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nationThe Canadian Public Broadcaster on a Diet: Slimming down for a whole nation
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nationBarbara Bermes
 
The CBC on a diet - Slimming down for a whole nation
The CBC on a diet - Slimming down for a whole nationThe CBC on a diet - Slimming down for a whole nation
The CBC on a diet - Slimming down for a whole nationBarbara Bermes
 
Smartphones in Today's World
Smartphones in Today's WorldSmartphones in Today's World
Smartphones in Today's WorldBarbara Bermes
 
Building Energy-Efficient Websites
Building Energy-Efficient WebsitesBuilding Energy-Efficient Websites
Building Energy-Efficient WebsitesBarbara Bermes
 
Business Analysis - Essentials
Business Analysis - EssentialsBusiness Analysis - Essentials
Business Analysis - EssentialsBarbara Bermes
 
Mobile Web Performance - Velocity 2011
Mobile Web Performance - Velocity 2011Mobile Web Performance - Velocity 2011
Mobile Web Performance - Velocity 2011Barbara Bermes
 

Mais de Barbara Bermes (9)

3rd Party Footprint @ Webrebels
3rd Party Footprint @ Webrebels3rd Party Footprint @ Webrebels
3rd Party Footprint @ Webrebels
 
Third Party Footprint: Evaluating the Performance of External Scripts
Third Party Footprint: Evaluating the Performance of External ScriptsThird Party Footprint: Evaluating the Performance of External Scripts
Third Party Footprint: Evaluating the Performance of External Scripts
 
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS
3rd party footprint - A PUBLISHER'S TAKE ON CONTROLLING 3RD PARTY SCRIPTS
 
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nation
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nationThe Canadian Public Broadcaster on a Diet: Slimming down for a whole nation
The Canadian Public Broadcaster on a Diet: Slimming down for a whole nation
 
The CBC on a diet - Slimming down for a whole nation
The CBC on a diet - Slimming down for a whole nationThe CBC on a diet - Slimming down for a whole nation
The CBC on a diet - Slimming down for a whole nation
 
Smartphones in Today's World
Smartphones in Today's WorldSmartphones in Today's World
Smartphones in Today's World
 
Building Energy-Efficient Websites
Building Energy-Efficient WebsitesBuilding Energy-Efficient Websites
Building Energy-Efficient Websites
 
Business Analysis - Essentials
Business Analysis - EssentialsBusiness Analysis - Essentials
Business Analysis - Essentials
 
Mobile Web Performance - Velocity 2011
Mobile Web Performance - Velocity 2011Mobile Web Performance - Velocity 2011
Mobile Web Performance - Velocity 2011
 

Último

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Último (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Developing for Mobile Web

  • 1. Overview ‣ The Power and Future of Mobile ‣ Mobile Browsers and Engines (WebKit/HTML5) ‣ CBC Mobile Services (Apps/Sites) ‣ Web Apps, Native Apps and Hybrid Apps ‣ Mobile Web Information Architecture ‣ Enabling Your Site for Mobile Web ‣ Optimization / Best Practices / (Debugging) Tools ‣ Links/Literature Resources
  • 2. Who has developed a website before?
  • 3. Why develop for mobile web?
  • 4. 6.8 billion people in the world http://www.robert-alonso-photos.com/wp-content/uploads/2009/08/3ConeyIslandBeach.jpg
  • 5. 3.4 billion people with mobile devices Flickr: Batikart
  • 6. Mobile is the 7th Mass Media
  • 7. Print Recordings Radio Television Cinema The Internet Mobile
  • 8. Print Recordings Radio Television Cinema The Internet Mobile Mobile is the only mass media that can do everything the previous six can do Source: http://en.wikipedia.org/wiki/Seven_mass_media
  • 10. First truly personal mass media Permanently carried First “always on” mass media Built-in payment channel Most accurate audience measurement http://www.flickr.com/photos/blogumentary/3947228410/sizes/o/in/faves-caseymckinnon/ Source: http://en.wikipedia.org/wiki/Seven_mass_media
  • 11. Desktop vs. Mobile Browsing http://www.motivationalmemo.com/wp-content/uploads/2010/06/change.jpg
  • 12. Mobile Users vs. Desktop Users Source: Morgan Stanley Research, http://gigaom.com/2010/04/12/mary-meeker-mobile-internet-will-soon-overtake-fixed-internet/
  • 13. Enough Reasons to go mobile? ...but what mobile platform should you target? Let’s look at mobile browsers and engines http://bunkadefresh.com/wp-content/uploads/2010/07/evophones2.jpg
  • 14. What browsers should you develop for? Source: http://gs.statcounter.com/#mobile_browser-na-yearly-2009-2011-bar
  • 15. Mobile Grade Browsers A A browser that’s capable of, at minimum, utilizing media queries, support HTML5, WebKit Engine, CSS, JavaScript B A browser that’s capable of minimum CSS and JavaScript C A browser that is not capable of utilizing media queries. Watch out for complicated JS, CSS — they DON’T support them Source: JQuery Mobile, http://jquerymobile.com/gbs/
  • 16. Device vs. Browser Feature Phones Smart Phones Touch Phones FlipPhone, e.g. Samsung e.g. most BlackBerry’s before Torch (i.e. Bold, Curve) e.g. Google Nexus, BB Torch, iPhone C B A A http://gizmodo.com/5090988/mobile-browser-battlemodo-which-phones-deliver-the-real-web
  • 17. Browser Engines ‣ WebKit (BlackBerry 6.0, Android, iOS) ‣ Presto (Opera Mini) ‣ NetFront (Playstation) ‣ Gecko (Camino, Firefox, SeaMonkey) ‣ and more
  • 18. Go with WebKit ‣ WebKit (BlackBerry 6.0, Android, iOS) ‣ Presto (Opera Mini) ‣ NetFront (Playstation) ‣ Gecko (Camino, Firefox, SeaMonkey) ‣ and more
  • 19. WebKit and HTML5 ‣ WebKit is not a browser, it’s an engine ‣ Most A-Grade mobile browsers are based on WebKit and support HTML5
  • 20. HTML5 ‣ Why you want to make use of HTML5 features in your web app/site
  • 21. HTML5 Rocks! ‣ Easy Markup / new semantic elements <video src="movie.mp4" controls="controls"> your browser does not support the video tag </video> ‣ New, smarter form controls, i.e. placeholder, date, number, url <input type="email" placeholder="Enter your email address"/> <input type=”date”/> <input type="number" min="1" value="4" name="2" size="2"/> <input type=”url”/> ‣ Client-Side database, SQLite ‣ Offline Storage via cache.manifest file <html manifest=”cache.manifest”> CACHE MANIFEST index.html css/basic.css images/logo.png images/footer.png ‣ and...
  • 22. HTML5 - Location Based Services ‣ W3C Specification: http://dev.w3.org/geo/api/spec-source.html
  • 23. CBC Mobile Services More under cbc.ca/mobile/services
  • 24. CBC Mobile Site Strategy ‣ To cover A, B and C grade mobile browsers by creating three main mobile sites that encompass the different features and limitations of those browsers.
  • 25. CBC Mobile Sites TOUCH RICH TEXT cbc.ca/m/touch cbc.ca/m/rich cbc.ca/m/text Device Touch Devices Mostly BB devices Feature Phones Browser A-Grade B/C-Grade C-Grade ‣Extended use of JavaScript ‣Simple CSS and JavaScript ‣ No images/photos and Ajax ‣Simple Media (Story images, ‣ Simple navigation, less links ‣WebKit based, CSS3, CSS Photo Galleries) ‣ No complicated JavaScript, simple Features sprites, conditional CSS ‣Use of resized story images CSS ‣Photo galleries and videos (prefix s_) ‣Use of resized story images (prefix t_) Site/Device
  • 26. Web App, Native App and Hybrid App ‣ Why would you want to have a web app in addition to/ instead of a native app?
  • 27. Web vs. Native vs. Hybrid Apps Web Apps Native Apps ‣ Easy distribution/installation ‣ Possible complicated distribution trough app ‣ Native Look & Feel stores, fees/charges ‣ Works on all platforms ‣ Strict UI Guidelines ‣ Single click using HTML5,Ajax ‣ Easy attention through app store ‣ Offline Storage ‣ Platform-dependent ‣ No advertisement restrictions ‣ New app for each platform (knowledge of ‣ Fast development time, any web developer language, Objective-C, Java etc) can create web app ‣ Full Access to native APIs, features, i.e. ‣ BUT Cannot access all native features, i.e camera, calendar, address book, push compass, camera etc. notification Example: Google Gmail Hybrid Apps ‣ Web app wrapped around native app ‣ Access to native APIs Example: BlackBerry WebWorks, iOS/Android with webviews
  • 28. What do you have to do to enable your website for mobile?
  • 29. Mobile Information Architecture "If you design for mobile first, you can create agreement first on what matters most." — Luke Wroblewski, previous Chief Design Architect at Yahoo!
  • 30. Mobile Information Architecture ‣ Touch phones: big buttons, most of the real-estate should be clickable ‣ Smart phones: track ball, avoid too many links as user has to scroll down, use easy navigation items, i.e. anchors
  • 31. Mobile Information Architecture Guidelines for Mobile URLs: Make it easy for user to type in your mobile site URL ‣ m.cbc.ca ‣ touch.facebook.com ‣ mobile.twitter.com and enable auto redirection ...
  • 32. Redirect to Mobile ‣ Decide on user agent strings Mozilla/5.0 (webOS/1.0; U; en-US) Mozilla/5.0 (BlackBerry; U; SAMSUNG-D900E/D900EXAIC1 AppleWebKit/525.27.1 (KHTML, like BlackBerry 9800; en) AppleWebKit/ NetFront/3.5 Profile/MIDP-2.0 Gecko) Version/1.0 Safari/ 534.1+ (KHTML, like Gecko) Configuration/CLDC-1.1 525.27.1 Pre/1.0 Version/6.0.0.135 Mobile Safari/ 534.1+ v v v
  • 33. Redirect to Mobile ‣ Server-side ‣ Webserver: http.conf # Catch iPhone-users first RewriteCond %{HTTP_USER_AGENT} .*Mobile.*Safari RewriteRule ^[./](.*)$ http://www.cbc.ca/m/touch ‣ SSI <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" --> <meta http-equiv="refresh" content="0; url=www.cbc.ca/m/rich"> <!--#endif -->
  • 34. Redirect to Mobile ‣ Edge Side Include <esi:eval src="mobileuseragents.esi" dca="none" /> <esi:choose> <esi:when test="$(HTTP_USER_AGENT) matches_i $(touch)" matchname="touchmatch"> $set_redirect('http://www.cbc.ca/m/touch/') </esi:when> <esi:when test="$(HTTP_USER_AGENT) matches_i $(rich)" matchname="richmatch"> $set_redirect('http://www.cbc.ca/m/rich/') </esi:when> <esi:otherwise> <esi:include src="index.html"/> </esi:otherwise> </esi:choose> ‣ Client-side: JavaScript if (navigator.userAgent.indexOf("iPod") != -1 || navigator.userAgent.indexOf("iPhone") != -1){ window.location.href = “http://www.cbc.ca/m/touch”; }
  • 35. Redirect to Mobile ‣ But don’t limit user to full site access
  • 36. Customizing for Devices/ Platforms ‣ Create the best user experience possible based on user’s platform/device ‣ Know device/browser specific features and take advantage of them
  • 37. Customizing for Devices/OS ‣ Using JavaScript to detect user agent and show content only based on that: if (navigator.userAgent.indexOf("iPod") != -1 || navigator.userAgent.indexOf("iPhone") != -1){ // do device specific stuff, e.g. show QT videos or show menu items } ‣ Using Media Queries, e.g. calling an iPhone/Mobile stylesheet: <link media="only screen and (max-device-width: 480px)" href="mobile.css" type= "text/css" rel="stylesheet"> <link media="screen and (min-device-width: 481px)" href="other.css" type="text/css" rel="stylesheet"/>
  • 38. Customizing for Devices/OS ‣ BlackBerry users get extra information presented <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" --> <div class="wspromo"> <a href="/m/rich/websignal.html" title=”Subscribe to WebSignal Alert”> Get CBC's Websignal Alert</a> </div> <!--#endif --> ‣ iOS: Disable automatic phone number detection <meta name = "format-detection" content ="telephone=no"/>
  • 39. Customizing for Devices/OS ‣ Fallbacks ‣ CSS <!--#if expr="$HTTP_USER_AGENT = /BlackBerry/" --> <!--#if expr="$osversion != /4.2([^&]*)/" --> <div class="nocss">You don't have CSS enabled. To have a better experience, please turn on background images and CSS on your device.</div> <!--#endif --> <!--#endif --> ‣ JavaScript <noscript>To access the site with all its functionality, please enable JavaScript.</noscript>
  • 40. Make it a Web App ‣ iPhone: Full screen without browser bar <meta name="apple-mobile-web-app-capable" content="yes" /> <meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" /> ‣ iPhone: Add to Home Screen Box ‣ iPhone: Home Screen Icon <link rel="apple-touch-icon" href="img/cbc-touch-icon.png"/>
  • 41. Optimization ‣ Reduce the page load / page weight as much as possible
  • 42. Optimization ‣ Minimize HTTP requests ‣ Put CSS at top of page ‣ Put JavaScript scripts at bottom of page ‣ Avoid images where possible and/or optimize images ‣ Use CSS3 features instead of images, i.e. border radius, gradient border-radius: 10px; /* gecko based browsers */ -moz-border-radius: 10px; background: -moz-linear-gradient(top, #55aaee, #003366); -webkit-border-radius: 10px; /* webkit based browsers */ background: -webkit-gradient(linear, left top, left bottom, from(#55aaee), to(#000000));
  • 43. Optimization ‣ Use image sprites ‣ Image optimization via Smush.it ‣ Consider mobile image resizer solutions: Resizing images for all major device widths via device detection ‣ Don’t scale images in HTML ‣ Use minified scripts, i.e. js, css (YSlow) ‣ Reduce number of DOM Element //avoid var divArr = document.getElementByClassName(“story-images”); //The number of DOM elements is easy to test, just type in Firebug's console: document.getElementsByTagName('*').length ‣ Read more under http://developer.yahoo.com/performance/rules.html
  • 44. CBC Full-site vs. CBC mobile sites cbcnews.ca cbc.ca/m/touch/news cbc.ca/m/rich/news (including Canada Votes) (including Canada Votes) 837.5 K 72.1 K 28.9 K cbc.ca/m/text/news >> HTTP Requests - 8, Total Weight: 4.2K
  • 45. Things to Consider ‣ If you’re going to target C-grade browsers avoid CSS(3) and JavaScript where possible ‣ Don’t think only because your site looks good on iPhone, it will also look good on old BlackBerry browsers (< OS 5.0) ‣ Compatibility Mobile Table by Peter-Paul Koch (ppk): http://www.quirksmode.org/mobile/
  • 46. Mobile Compatibility Table Source: http://www.quirksmode.org/mobile/
  • 47. Mobile Tools & Frameworks ‣ Frameworks: iUi, JQTouch, JQuery Mobile. Sencha ‣ Kitchen Sink: http://dev.sencha.com/deploy/touch /examples/kitchensink/
  • 48. Mobile Tools & Frameworks ‣ WURLF: Wireless Universal Resource File ‣ Open Source project ‣ XML configuration file containing information about features and capabilities of many mobile devices (~14000) ‣ Website offers many optimization tools/apps “The main scope of the file is to collect as much information as we can about all the existing mobile devices that access WAP pages so that developers will be able to build better applications and better services for the users.” (wurfl.sourceforge.net)
  • 49. WURLF XML <device id="blackberry9800_ver1" user_agent="Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ ‣ Example: (KHTML, like Gecko) Version/6.0.0.135 Mobile Safari/534.1+" fall_back="blackberry_generic_ver6" actual_device_root="true"> <group id="product_info"> BlackBerry Torch <capability name="pointing_method" value="touchscreen"/> <capability name="uaprof" value="http://www.blackberry.net/go/mobile/profiles/uaprof/9800_edge/6.0.0.rdf"/> <capability name="model_name" value="BlackBerry 9800"/> <capability name="uaprof2" value="http://www.blackberry.net/go/mobile/profiles/uaprof/9800_umts/6.0.0.rdf"/> <capability name="brand_name" value="RIM"/> <capability name="marketing_name" value="Torch"/> <capability name="release_date" value="2010_august"/> </group> <group id="wml_ui"> <capability name="table_support" value="true"/> </group> <device id="blackberry9800_ver1" user_agent="Mozilla/5.0 (BlackBe <!-- ... --> (KHTML, like Gecko) Version/6.0.0.135 Mobile Safari/534.1+" fall_b <group id="display"> actual_device_root="true"> <capability name="physical_screen_height" value="70"/> <group id="product_info"> <capability name="columns" value="36"/> <capability name="dual_orientation" value="true"/> <capability name="pointing_method" value="touchscreen"/> <capability name="physical_screen_width" value="50"/> <capability name="uaprof" value="http://www.blackberry.net/g <capability name="max_image_width" value="360"/> <capability name="rows" value="32"/> <capability name="model_name" value="BlackBerry 9800"/> <capability name="resolution_width" value="360"/> <capability name="uaprof2" value="http://www.blackberry.net/ <capability name="resolution_height" value="480"/> <capability name="max_image_height" value="400"/> </group> <capability name="brand_name" value="RIM"/> <group id="image_format"> <capability name="marketing_name" value="Torch"/> <capability name="jpg" value="true"/> <capability name="release_date" value="2010_august"/> <capability name="gif" value="true"/> </group> <capability name="bmp" value="true"/> <capability name="wbmp" value="true"/> <group id="wml_ui"> <capability name="png" value="true"/> <capability name="table_support" value="true"/> <capability name="colors" value="65536"/> <capability name="tiff" value="true"/> </group> </group> <group id="storage"> <!-- ... --> <capability name="max_deck_size" value="32768"/> <group id="display"> </group> <group id="streaming"> <capability name="physical_screen_height" value="70"/> <capability name="columns" value="36"/> <capability name="streaming_vcodec_h263_0" value="10"/> <capability name="streaming_vcodec_h264_bp" value="1"/> <capability name="dual_orientation" value="true"/> <capability name="streaming_vcodec_mpeg4_sp" value="0"/> </group> <capability name="physical_screen_width" value="50"/> <!-- ... ---> <group id="sound_format"> <capability name="max_image_width" value="360"/> <capability name="rows" value="32"/> <capability name="wav" value="true"/> <capability name="sp_midi" value="true"/> <capability name="resolution_width" value="360"/> <capability name="amr" value="true"/> <capability name="resolution_height" value="480"/> <capability name="midi_monophonic" value="true"/> </group> <group id="bearer"> <capability name="max_image_height" value="400"/> </group> <capability name="wifi" value="true"/> <capability name="max_data_rate" value="384"/> </group> <group id="image_format"> <!-- ... ---> <capability name="jpg" value="true"/> </device> <capability name="gif" value="true"/>
  • 50. What should your development environment look like?
  • 51. Setting up your dev environment ‣ Eclipse or any other choice of text editor ‣ Webserver / Apache ‣ Firefox/Firebug for Debugging ‣ Web Development PlugIn ‣ YSlow integrated into Firebug ‣ User agent Switcher ‣ Emulators/Simulators (Watch out!) ‣ Available for Palm Pre, iPhone (Mac only), Android, BlackBerry Simulator (PC only)
  • 52. Links/Literature ‣ O’Reilly, Brian Fling: Mobile Design and Development ‣ Mobile First: http://www.youtube.com/watch?v=NjE_Or4VIlU ‣ Device Atlas: http://deviceatlas.com/ ‣ W3C mobileOK Checker: http://validator.w3.org/mobile/ ‣ W3C Mobile Best Practices: http://www.w3.org/TR/mobile-bp/ ‣ Design Principles for the Mobile Web: http://articles.sitepoint.com/article/ designing-for-mobile-web ‣ Safari Web Apps: http://developer.apple.com ‣ Nokia Mobile Design Patterns: http://wiki.forum.nokia.com/index.php/ Category:Mobile_Design_Patterns