SlideShare a Scribd company logo
1 of 82
Download to read offline
Use Web Skills To
Build Mobile Apps
 with Matt Baxter & Nathan Smith
      SATURDAY โ€” JUNE 2, 2012 โ€” DALLAS, TX




              http://bigdesignevents.com
Put down that pen! (or not)
You can get the slides here:

http://j.mp/web-skills
Who are we?
We do mobile/web
UX & JavaScript at



@mbxtr & @nathansmith
(In case you want to talk smack on Twitter)



              http://projekt202.com
An urgent (not desperate) announcement


Weโ€™re hiring JavaScript
savvy developers to join
our team at projekt202.
(You can talk to us after the presentation)

                 http://projekt202.com
The Rise
of Mobile
State of mobile in 2007 โ€” The year the iPhone was introduced




                   http://๏ฌ‚ickr.com/photos/djwudi/382030798
Handset design was quite
diverse โ€œway back when.โ€

Industrial designers were
still (awkwardly) searching
for the best form factorโ€ฆ
http://zackmorriscellphone.com
Technology is cyclical. Good ideas are often โ€œborrowedโ€
and make their way to products from multiple vendors.




           http://engadget.com/photos/hp-envy-15-vs-the-macbook-pro
The state of mobile in 2012 โ€” Touch screens reign supreme
Not everyone can rock the giant cell phone foreverโ€ฆ




 http://hulu.com/watch/76560/late-night-with-jimmy-fallon-saved-by-the-bell-reunion-update-3
<old-man-voice>

 Nowadays, itโ€™s more about
 the software on the device.

</old-man-voice>
Each day, on planet Earthโ€ฆ



  317,124
  newborns begin life


1,450,000
mobile devices activated
       http://lukew.com/๏ฌ€/entry.asp?1506
The one thing all these phones have
in common (besides Angry Birds) is
they all have decent web browsers.

          http://paulirish.com/2010/high-res-browser-icons
โ€œObama orders agencies to optimize Web content for mobileโ€ฆโ€




                 http://๏ฌ‚ickr.com/photos/whitehouse/7161178504
http://computerworld.com/s/article/9227412/Obama_orders_agencies_to_optimize_Web_content_for_mobile
Mobile web trivia timeโ€ฆ


โ€” PhoneGap on Windows Phone uses
  the IE9 engine (it is pretty good)
โ€” WebKit is the dominant rendering
  engine across most mobile devices
  โ€” iOS, Android, Blackberry, webOS
โ€” Blackberry has one of the best
  WebKit-based browsers available
So, what should I build?
[A] Desktop web app
[B] Mobile web app
[C] Mobile native app
[D] All of the above
 Note: Weโ€™re not saying you have to
 build all-in-oneโ€ฆ But it is possible.
Whither Responsive Web Design?


Responsive web design using @media
queries (with one codebase for all devices)
typically works best for web โ€œsitesโ€ (not
apps). As a general rule of thumb, if your
content can be read via RSS and still make
sense, it is a good candidate for RWD.

           http://alistapart.com/articles/responsive-web-design
Bene๏ฌts of native development



โ€” Default OS look & feel (UI conventions)
โ€” Performance (โ€œcloser to the metalโ€)
โ€” Access to device hardware (GPS, etc)
โ€” App store/marketplace distribution
โ€” Bene๏ฌt from latest OS enhancements
Drawbacks of native development




โ€” Tied to the particular OS you built for
โ€” Maintaining a multi OS team/skill-set
โ€” Dealing with app store approval process
โ€” Keeping app in sync with OS updates
LinkedInโ€™s iPad app is 95% HTML5


                                                 We did users studies in-house,
                                                 and I donโ€™t think people noticed
                                                 a big di๏ฌ€erence. Nobody said,
                                                 โ€œOh thatโ€™s native,โ€ or โ€œOh,
                                                 thatโ€™s web.โ€ As long as we can
                                                 make the experience fast
                                                 enough, nobody can tell the
                                                 di๏ฌ€erence. It still feels right.
                                                                      โ€” Kiran Prasad




    http://venturebeat.com/2012/05/02/linkedin-ipad-app-engineering
Bene๏ฌts of hybrid development



โ€” Common codebase for multiple OSโ€™s
โ€” Access to device hardware (GPS, etc)
โ€” App store/marketplace distribution
โ€” Skills you already have (HTML, CSS, JS)
โ€” Potential code reuse in web site/app
Drawbacks of hybrid development


โ€” Build for lowest common denominator
โ€” 3rd party SDKโ€™s might lag behind OS
  โ€” Want to use feature X? Wait for an
    implementation in abstraction layer.
โ€” An abstraction layer can have bugs of
  its own. Have to determine if a bug is in
  your code, the abstraction layer, or OS.
Titanium
from Appcelerator



    http://appcelerator.com/platform
Areas where Titanium shines


โ€” Native UI
  โ€” Great for iOS, crapshoot on Android

โ€” Build for iOS, Android, and Blackberry
  โ€” Some code reuse across platforms

โ€” Entirely JavaScript based
  โ€” Uses CommonJSโ€™s AMD approach
  โ€” Except for WebView (HTML/CSS too)
http://j.mp/bachmann-eyezed
Abstraction layers tend to be
harder to debug than โ€œnativeโ€
languages โ€” Objective-C,
C#, or Java โ€” whilst using an
IDE such as Visual Studio,
Xcode, or Eclipse.


With โ€œthe web,โ€ you have
familiar browser-based
desktop tools in Chrome,
Firebug, or Opera Dragon๏ฌ‚y.
PhoneGap
  from Adobe



    http://phonegap.com
Areas where PhoneGap shines


โ€” It is โ€œthe web you already knowโ€
โ€” Debugging via desktop browser
โ€” Access to device APIโ€™s (GPS, etc)
โ€” Strives to implement W3C specs
  โ€” Camera API, etc.
โ€” Supports Windows Phone 7, too
http://youtu.be/nOEw9iiopwI
How PhoneGap works

โ€” It embeds a WebView in a native app
โ€” Native app gives access to OS APIโ€™s
โ€”ย All the UI is built via HTML/CSS
โ€” JavaScript handles everything else
โ€”ย The app wrapper compiles viaโ€ฆ
  Xcode, Eclipse, Visual Studio, or
  โ€œthe cloudโ€ โ†’ build.phonegap.com
Handlebbbars
demo of Handlebars.js
and the Dribbble API



         http://host.sonspring.com/handlebbbars
http://handlebarsjs.com
http://dribbble.com/api
Dribbble API: JSON
<script type="text/x-handlebars" id="_template-list-item">
  {{#each shots}}
    <li>
      <p>
         <b class="big">
           {{title}}
         </b>
         <img alt="{{title}}" class="frame"
           style="background-image:url({{image_url}})" src="data:image/png;base64,
           iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAEklEQVQIHWP8//8/AzJgJCg
           AAB+ICPuLaDnAAAAAAElFTkSuQmCC" />
      </p>
      <table>
         <tr>
           <th>
              Designer:
           </th>
           <td>
              <b>{{player.name}}</b>
           </td>
         </tr>
         {{#if player.twitter_screen_name}}
           ...
         {{/if}}
         {{#if likes_count}}
           ...
         {{/if}}
         {{#if short_url}}
           ...
         {{/if}}
      </table>
    </li>
  {{/each}}
</script>
                                                          Handlebars template
<script type="text/x-handlebars" id="_template-list-item">
  {{#each shots}}
    <li>
      <p>
         <b class="big">
           {{title}}
         </b>
         <img alt="{{title}}" class="frame"
           style="background-image:url({{image_url}})" src="data:image/png;base64,
           iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAEklEQVQIHWP8//8/AzJgJCg
           AAB+ICPuLaDnAAAAAAElFTkSuQmCC" />
      </p>
      <table>
         <tr>
           <th>
              Designer:
           </th>
           <td>
              <b>{{player.name}}</b>
           </td>
         </tr>
         {{#if player.twitter_screen_name}}
           ...
         {{/if}}
         {{#if likes_count}}
           ...
         {{/if}}
         {{#if short_url}}
           ...
         {{/if}}
      </table>
    </li>
  {{/each}}
</script>
                                                          Handlebars template
...
{{#if player.twitter_screen_name}}
  <tr>
    <th>
       Twitter:
    </th>
    <td>
       <a href="http://twitter.com/{{player.twitter_screen_name}}">
         @{{player.twitter_screen_name}}
       </a>
    </td>
  </tr>
{{/if}}
{{#if likes_count}}
  <tr>
    <th>
       Likes:
    </th>
    <td>
       {{likes_count}} <span class="mute">&hearts;</span>
    </td>
  </tr>
{{/if}}
{{#if short_url}}
  <tr>
    <th>
       URL:
    </th>
    <td>
       <a href="{{short_url}}">{{short_url}}</a>
    </td>
  </tr>
{{/if}}
...                                               Handlebars template
...
{{#if player.twitter_screen_name}}
  <tr>
    <th>
       Twitter:
    </th>
    <td>
       <a href="http://twitter.com/{{player.twitter_screen_name}}">
         @{{player.twitter_screen_name}}
       </a>
    </td>
  </tr>
{{/if}}
{{#if likes_count}}
  <tr>
    <th>
       Likes:
    </th>
    <td>
       {{likes_count}} <span class="mute">&hearts;</span>
    </td>
  </tr>
{{/if}}
{{#if short_url}}
  <tr>
    <th>
       URL:
    </th>
    <td>
       <a href="{{short_url}}">{{short_url}}</a>
    </td>
  </tr>
{{/if}}
...                                               Handlebars template
Sweet, responsive Handlebbbars action




           http://host.sonspring.com/handlebbbars
All modern browsers support *.wo๏ฌ€ or *.ttf

@font-face {
  font-family: 'Open Sans';

         // For all good browsers, including IE9.
    src: url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),

        // For older IE, and Android default browser.
        url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype');
}

@font-face {
  font-family: 'Open Sans';
  font-weight: bold;

         // For all good browsers, including IE9.
    src: url('../fonts/OpenSans-Bold-webfont.woff') format('woff'),

        // For older IE, and Android default browser.
        url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype');
}
http://fontsquirrel.com
Neatly organized *.sass                                      CSS served to browser




 http://thingsorganizedneatly.tumblr.com/post/9494864300/submission-the-compulsively-tidy-ursus-wehrli
CSS                    Sass                             Compass
      http://sonspring.com/journal/sass-for-designers
http://compass-style.org
Compass makes vendor pre๏ฌxes easy...
Compass brings sanity to gradients...
Text editors and IDEโ€™s that support Sass/SCSS syntax

         Aptana                              BBEdit                             Chocolat                              Coda
       http://aptana.org            http://barebones.com/bbedit             http://chocolatapp.com              http://panic.com/coda




     E Text Editor                          Eclipse                               Emacs                            Espresso
    http://e-texteditor.com               http://eclipse.org             http://gnu.org/software/emacs      http://macrabbit.com/espresso




           GEdit                           Komodo                              Netbeans                           PhpStorm
http://projects.gnome.org/gedit   http://activestate.com/komodo-ide           http://netbeans.org           http://jetbrains.com/phpstorm




       PyCharm                            RubyMine                           SubEthaEdit                        Sublime Text




                                                                                                                      ^
 http://jetbrains.com/pycharm         http://jetbrains.com/ruby       http://codingmonkeys.de/subethaedit    http://sublimetext.com/dev




       TextMate                                Vim                           Visual Studio
                                                                                                                         nd
   http://macromates.com                    http://vim.org             http://microsoft.com/visualstudio
                                                                                                             We ย recomme




                                                  http://sass-lang.com/editors.html
IE9 gets jQuery, other browsers get Zepto




<!--[if gt IE 9]><!-->
  <script src="zepto.js"></script>
<!--<![endif]-->
<!--[if lte IE 9]>
  <script src="jquery.js"></script>
<![endif]-->
Overview of Handlebbbarsโ€™ application.js ๏ฌle
// Redefine: $, window, document, undefined.
var APP = (function($, window, document, undefined) {

 // Expose contents of APP.
 return {
   // APP.go
   go: function() {
     // ...
   },
   // APP.init
   init: {
     // ...
   },
   // APP.util
   util: {
     // ...
   }
 }

// Parameters: Zepto/jQuery, window, document.
})(typeof Zepto === 'function' ? Zepto : jQuery, this, this.document);

                http://host.sonspring.com/handlebbbars/assets/js/application.js
Where the magic of Handlebars happens


 markup = $('#_template-list-item')
            .html()
            .replace(/ss+/g, '');

 template = Handlebars.compile(markup);



    Yes, this looks underwhelming.
    Thatโ€™s the point. Itโ€™s code you
    donโ€™t have to write yourself! :)

       http://host.sonspring.com/handlebbbars/assets/js/application.js
Private โ€œconstantโ€ variablesโ€ฆ
Application โ€œskeletonโ€ objectโ€ฆ
Nav shortcuts: J/K keys, swipe left/rightโ€ฆ
Handling โ€œstateโ€ changesโ€ฆ
Maintaining an appโ€™s state can drive you crazy




@MikeTownson dared us to use a โ€œlolcatโ€ โ€” Challenge accepted!
Pop out external links (for PhoneGap)โ€ฆ
Rudimentary caching, for one hourโ€ฆ
Ajax call (JSONP) to Dribbbleโ€™s APIโ€ฆ
PhoneGap tip: Declare โ€œsafeโ€ domains on iOS




       http://anujgakhar.com/2011/11/22/phonegap-gotcha-error-whitelist-rejection
Underscore.js is a power tool for working
with collections of objects and arraysโ€ฆ

โ€” Collections
  โ€” sortBy
  โ€” pluck
  โ€” uniq
  โ€” extend
  โ€” ๏ฌ‚atten
  โ€” each
  โ€” ๏ฌlter
  โ€” ๏ฌnd
โ€” Utility functions
  โ€” throttle
  โ€” chain
  โ€” times               and ย much ย more!
โ€œReal artists shipโ€ โ€” Steve Jobs




Hopefully we have inspired you to create
more rapidly shippable software today :)
Want to reread something?
You can get the slides here:

http://j.mp/web-skills
Questions?
  We (might) have answers.

If you think of something later,
 feel free to ask us on Twitterโ€ฆ

     @mbxtr & @nathansmith

More Related Content

What's hot

Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013
Steve Souders
ย 
WordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
WordCamp ABQ 2013: Making the leap from Designer to Designer/DeveloperWordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
WordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
my easel
ย 

What's hot (20)

Real World Web Standards
Real World Web StandardsReal World Web Standards
Real World Web Standards
ย 
Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]
ย 
Sencha Touch e PhoneGap: SouJava - IBM Maio 2013
Sencha Touch e PhoneGap: SouJava - IBM Maio 2013Sencha Touch e PhoneGap: SouJava - IBM Maio 2013
Sencha Touch e PhoneGap: SouJava - IBM Maio 2013
ย 
Mozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: BasicMozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: Basic
ย 
Responsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and TechniquesResponsive Web Design: Clever Tips and Techniques
Responsive Web Design: Clever Tips and Techniques
ย 
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
ย 
JD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layoutsJD17NL Joomla! Overrides and alternate layouts
JD17NL Joomla! Overrides and alternate layouts
ย 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
ย 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...
ย 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
ย 
State of jQuery '09
State of jQuery '09State of jQuery '09
State of jQuery '09
ย 
Wordcamp abq cf-cpt
Wordcamp abq cf-cptWordcamp abq cf-cpt
Wordcamp abq cf-cpt
ย 
Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013Prebrowsing - Velocity NY 2013
Prebrowsing - Velocity NY 2013
ย 
WordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
WordCamp ABQ 2013: Making the leap from Designer to Designer/DeveloperWordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
WordCamp ABQ 2013: Making the leap from Designer to Designer/Developer
ย 
Learning from the Best jQuery Plugins
Learning from the Best jQuery PluginsLearning from the Best jQuery Plugins
Learning from the Best jQuery Plugins
ย 
HTML5@็”ตๅญๅ•†ๅŠก.com
HTML5@็”ตๅญๅ•†ๅŠก.comHTML5@็”ตๅญๅ•†ๅŠก.com
HTML5@็”ตๅญๅ•†ๅŠก.com
ย 
WordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPWordPress 3.0 at DC PHP
WordPress 3.0 at DC PHP
ย 
Death of a Themer
Death of a ThemerDeath of a Themer
Death of a Themer
ย 
Bootstrap 3 in Joomla!
Bootstrap 3 in Joomla!Bootstrap 3 in Joomla!
Bootstrap 3 in Joomla!
ย 
CSS in React
CSS in ReactCSS in React
CSS in React
ย 

Viewers also liked

xy-ar.ch cert. de travail
xy-ar.ch cert. de travailxy-ar.ch cert. de travail
xy-ar.ch cert. de travail
Mike Jones
ย 
Mujeres Libres Spanish Writers Women4353
Mujeres Libres Spanish Writers Women4353Mujeres Libres Spanish Writers Women4353
Mujeres Libres Spanish Writers Women4353
Gloria Osuna Velasco
ย 
Research on it products
Research on it productsResearch on it products
Research on it products
Kamran Arshad
ย 
4 s313 pvcf
4 s313 pvcf4 s313 pvcf
4 s313 pvcf
Maria Hidalgo
ย 

Viewers also liked (20)

Basic Creating Virtual Reality with HDR Panoramic Photography Technique - Day...
Basic Creating Virtual Reality with HDR Panoramic Photography Technique - Day...Basic Creating Virtual Reality with HDR Panoramic Photography Technique - Day...
Basic Creating Virtual Reality with HDR Panoramic Photography Technique - Day...
ย 
Lectura de apoyo evaluaciรณn del servicio
Lectura de apoyo evaluaciรณn del servicioLectura de apoyo evaluaciรณn del servicio
Lectura de apoyo evaluaciรณn del servicio
ย 
AR-in-VET
AR-in-VETAR-in-VET
AR-in-VET
ย 
Web como estrategia online
Web como estrategia onlineWeb como estrategia online
Web como estrategia online
ย 
DB2 10 Webcast #1 - Overview And Migration Planning
DB2 10 Webcast #1 - Overview And Migration PlanningDB2 10 Webcast #1 - Overview And Migration Planning
DB2 10 Webcast #1 - Overview And Migration Planning
ย 
Diari del 13 de gener de 2013
Diari del 13 de gener de 2013Diari del 13 de gener de 2013
Diari del 13 de gener de 2013
ย 
Event4u company profile 2012
Event4u company profile 2012Event4u company profile 2012
Event4u company profile 2012
ย 
Organic Farming for Bees - The Xerces Society
Organic Farming for Bees - The Xerces SocietyOrganic Farming for Bees - The Xerces Society
Organic Farming for Bees - The Xerces Society
ย 
Apwg trends report_q1_2016
Apwg trends report_q1_2016Apwg trends report_q1_2016
Apwg trends report_q1_2016
ย 
xy-ar.ch cert. de travail
xy-ar.ch cert. de travailxy-ar.ch cert. de travail
xy-ar.ch cert. de travail
ย 
Manual lubricantes romao istprs
Manual lubricantes romao istprsManual lubricantes romao istprs
Manual lubricantes romao istprs
ย 
Mujeres Libres Spanish Writers Women4353
Mujeres Libres Spanish Writers Women4353Mujeres Libres Spanish Writers Women4353
Mujeres Libres Spanish Writers Women4353
ย 
Long Run Drivers of Current Account Imbalances: the role of trade openness
Long Run Drivers of Current Account Imbalances: the role of trade opennessLong Run Drivers of Current Account Imbalances: the role of trade openness
Long Run Drivers of Current Account Imbalances: the role of trade openness
ย 
Research on it products
Research on it productsResearch on it products
Research on it products
ย 
Cรณmo ha evolucionado y quรฉ obstรกculos deben superar las Comunicaciones Unific...
Cรณmo ha evolucionado y quรฉ obstรกculos deben superar las Comunicaciones Unific...Cรณmo ha evolucionado y quรฉ obstรกculos deben superar las Comunicaciones Unific...
Cรณmo ha evolucionado y quรฉ obstรกculos deben superar las Comunicaciones Unific...
ย 
4 s313 pvcf
4 s313 pvcf4 s313 pvcf
4 s313 pvcf
ย 
See3 at Civi User Group at 10NTC
See3 at Civi User Group at 10NTCSee3 at Civi User Group at 10NTC
See3 at Civi User Group at 10NTC
ย 
La estrategia PPC dentro del plan de marketing global.
La estrategia PPC dentro del plan de marketing global.La estrategia PPC dentro del plan de marketing global.
La estrategia PPC dentro del plan de marketing global.
ย 
Anรกlisis de programas infantiles
Anรกlisis de programas infantilesAnรกlisis de programas infantiles
Anรกlisis de programas infantiles
ย 
SEOGuardian - Ecommerce Muebles - segmento Colchones en Espaรฑa - Actualizaciรณn
SEOGuardian - Ecommerce Muebles - segmento Colchones en Espaรฑa - ActualizaciรณnSEOGuardian - Ecommerce Muebles - segmento Colchones en Espaรฑa - Actualizaciรณn
SEOGuardian - Ecommerce Muebles - segmento Colchones en Espaรฑa - Actualizaciรณn
ย 

Similar to Use Web Skills To Build Mobile Apps

Responsive SharePoint
Responsive SharePointResponsive SharePoint
Responsive SharePoint
Kevin DeRudder
ย 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
ย 

Similar to Use Web Skills To Build Mobile Apps (20)

Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
ย 
Responsive SharePoint
Responsive SharePointResponsive SharePoint
Responsive SharePoint
ย 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
ย 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
ย 
Building Web Hack Interfaces
Building Web Hack InterfacesBuilding Web Hack Interfaces
Building Web Hack Interfaces
ย 
phonegap with angular js for freshers
phonegap with angular js for freshers    phonegap with angular js for freshers
phonegap with angular js for freshers
ย 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
ย 
Creating Yahoo Mobile Widgets
Creating Yahoo Mobile WidgetsCreating Yahoo Mobile Widgets
Creating Yahoo Mobile Widgets
ย 
Familiar HTML5 - ไบ‹ไพ‹ใจใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใ‹ใ‚‰ๅญฆใถ ่บซ่ฟ‘ใงๆ™ฎ้€šใซไฝฟใ‚ใฆใ„ใ‚‹HTML5
Familiar HTML5 - ไบ‹ไพ‹ใจใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใ‹ใ‚‰ๅญฆใถ ่บซ่ฟ‘ใงๆ™ฎ้€šใซไฝฟใ‚ใฆใ„ใ‚‹HTML5Familiar HTML5 - ไบ‹ไพ‹ใจใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใ‹ใ‚‰ๅญฆใถ ่บซ่ฟ‘ใงๆ™ฎ้€šใซไฝฟใ‚ใฆใ„ใ‚‹HTML5
Familiar HTML5 - ไบ‹ไพ‹ใจใ‚ตใƒณใƒ—ใƒซใ‚ณใƒผใƒ‰ใ‹ใ‚‰ๅญฆใถ ่บซ่ฟ‘ใงๆ™ฎ้€šใซไฝฟใ‚ใฆใ„ใ‚‹HTML5
ย 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
ย 
From Idea to App (or โ€œHow we roll at Small Town Heroesโ€)
From Idea to App (or โ€œHow we roll at Small Town Heroesโ€)From Idea to App (or โ€œHow we roll at Small Town Heroesโ€)
From Idea to App (or โ€œHow we roll at Small Town Heroesโ€)
ย 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
ย 
Building apps for multiple devices
Building apps for multiple devicesBuilding apps for multiple devices
Building apps for multiple devices
ย 
State of modern web technologies: an introduction
State of modern web technologies: an introductionState of modern web technologies: an introduction
State of modern web technologies: an introduction
ย 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkBuilding a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
ย 
Client Building Functional webapps.
Client   Building Functional webapps.Client   Building Functional webapps.
Client Building Functional webapps.
ย 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
ย 
It is not HTML5. but ... / HTML5ใงใฏใชใ„ใ‚ตใ‚คใƒˆใ‹ใ‚‰HTML5ใ‚’่€ƒใˆใ‚‹
It is not HTML5. but ... / HTML5ใงใฏใชใ„ใ‚ตใ‚คใƒˆใ‹ใ‚‰HTML5ใ‚’่€ƒใˆใ‚‹It is not HTML5. but ... / HTML5ใงใฏใชใ„ใ‚ตใ‚คใƒˆใ‹ใ‚‰HTML5ใ‚’่€ƒใˆใ‚‹
It is not HTML5. but ... / HTML5ใงใฏใชใ„ใ‚ตใ‚คใƒˆใ‹ใ‚‰HTML5ใ‚’่€ƒใˆใ‚‹
ย 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web Design
ย 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application development
ย 

More from Nathan Smith

Meet Clumsy
Meet ClumsyMeet Clumsy
Meet Clumsy
Nathan Smith
ย 

More from Nathan Smith (20)

Getting Started with React
Getting Started with ReactGetting Started with React
Getting Started with React
ย 
Rapid Templating with Serve
Rapid Templating with ServeRapid Templating with Serve
Rapid Templating with Serve
ย 
Proactive Responsive Design
Proactive Responsive DesignProactive Responsive Design
Proactive Responsive Design
ย 
Red Dirt JS
Red Dirt JSRed Dirt JS
Red Dirt JS
ย 
Refresh OKC
Refresh OKCRefresh OKC
Refresh OKC
ย 
DrupalCon jQuery
DrupalCon jQueryDrupalCon jQuery
DrupalCon jQuery
ย 
DSVC Design Talk
DSVC Design TalkDSVC Design Talk
DSVC Design Talk
ย 
Think Vitamin CSS
Think Vitamin CSSThink Vitamin CSS
Think Vitamin CSS
ย 
Adobe MAX 2008: HTML/CSS + Fireworks
Adobe MAX 2008: HTML/CSS + FireworksAdobe MAX 2008: HTML/CSS + Fireworks
Adobe MAX 2008: HTML/CSS + Fireworks
ย 
Meet Clumsy
Meet ClumsyMeet Clumsy
Meet Clumsy
ย 
Accelerated Grid Theming
Accelerated Grid ThemingAccelerated Grid Theming
Accelerated Grid Theming
ย 
Urban Leadership Slides
Urban Leadership SlidesUrban Leadership Slides
Urban Leadership Slides
ย 
Themes from Ascent of a Leader
Themes from Ascent of a LeaderThemes from Ascent of a Leader
Themes from Ascent of a Leader
ย 
7 Storey Mountain
7 Storey Mountain7 Storey Mountain
7 Storey Mountain
ย 
Marketing 450 Guest Lecture
Marketing 450 Guest LectureMarketing 450 Guest Lecture
Marketing 450 Guest Lecture
ย 
Fundamental Design Principles
Fundamental Design PrinciplesFundamental Design Principles
Fundamental Design Principles
ย 
Striking a Balance: Middle Ground in Front-End Development
Striking a Balance: Middle Ground in Front-End DevelopmentStriking a Balance: Middle Ground in Front-End Development
Striking a Balance: Middle Ground in Front-End Development
ย 
Echo Conference 2008
Echo Conference 2008Echo Conference 2008
Echo Conference 2008
ย 
Bible Tech 2008
Bible Tech 2008Bible Tech 2008
Bible Tech 2008
ย 
Gospelcon 2006
Gospelcon 2006Gospelcon 2006
Gospelcon 2006
ย 

Recently uploaded

Government polytechnic college-1.pptxabcd
Government polytechnic college-1.pptxabcdGovernment polytechnic college-1.pptxabcd
Government polytechnic college-1.pptxabcd
shivubhavv
ย 
B. Smith. (Architectural Portfolio.).pdf
B. Smith. (Architectural Portfolio.).pdfB. Smith. (Architectural Portfolio.).pdf
B. Smith. (Architectural Portfolio.).pdf
University of Wisconsin-Milwaukee
ย 
Editorial design Magazine design project.pdf
Editorial design Magazine design project.pdfEditorial design Magazine design project.pdf
Editorial design Magazine design project.pdf
tbatkhuu1
ย 
call girls in Dakshinpuri (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
call girls in Dakshinpuri  (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธcall girls in Dakshinpuri  (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
call girls in Dakshinpuri (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
9953056974 Low Rate Call Girls In Saket, Delhi NCR
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
anilsa9823
ย 
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
amitlee9823
ย 
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts ServiceVVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
aroranaina404
ย 
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
amitlee9823
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service ๐Ÿงต
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service  ๐ŸงตCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service  ๐Ÿงต
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service ๐Ÿงต
anilsa9823
ย 

Recently uploaded (20)

Booking open Available Pune Call Girls Nanded City 6297143586 Call Hot India...
Booking open Available Pune Call Girls Nanded City  6297143586 Call Hot India...Booking open Available Pune Call Girls Nanded City  6297143586 Call Hot India...
Booking open Available Pune Call Girls Nanded City 6297143586 Call Hot India...
ย 
Government polytechnic college-1.pptxabcd
Government polytechnic college-1.pptxabcdGovernment polytechnic college-1.pptxabcd
Government polytechnic college-1.pptxabcd
ย 
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
ย 
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
ย 
B. Smith. (Architectural Portfolio.).pdf
B. Smith. (Architectural Portfolio.).pdfB. Smith. (Architectural Portfolio.).pdf
B. Smith. (Architectural Portfolio.).pdf
ย 
Editorial design Magazine design project.pdf
Editorial design Magazine design project.pdfEditorial design Magazine design project.pdf
Editorial design Magazine design project.pdf
ย 
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdfChapter 19_DDA_TOD Policy_First Draft 2012.pdf
Chapter 19_DDA_TOD Policy_First Draft 2012.pdf
ย 
Tapestry Clothing Brands: Collapsing the Funnel
Tapestry Clothing Brands: Collapsing the FunnelTapestry Clothing Brands: Collapsing the Funnel
Tapestry Clothing Brands: Collapsing the Funnel
ย 
call girls in Dakshinpuri (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
call girls in Dakshinpuri  (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธcall girls in Dakshinpuri  (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
call girls in Dakshinpuri (DELHI) ๐Ÿ” >เผ’9953056974 ๐Ÿ” genuine Escort Service ๐Ÿ”โœ”๏ธโœ”๏ธ
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun serviceCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Aminabad Lucknow best Night Fun service
ย 
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
Escorts Service Nagavara โ˜Ž 7737669865โ˜Ž Book Your One night Stand (Bangalore)
ย 
Kala jadu for love marriage | Real amil baba | Famous amil baba | kala jadu n...
Kala jadu for love marriage | Real amil baba | Famous amil baba | kala jadu n...Kala jadu for love marriage | Real amil baba | Famous amil baba | kala jadu n...
Kala jadu for love marriage | Real amil baba | Famous amil baba | kala jadu n...
ย 
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
VVIP Pune Call Girls Hadapsar (7001035870) Pune Escorts Nearby with Complete ...
ย 
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts ServiceVVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
VVIP CALL GIRLS Lucknow ๐Ÿ’“ Lucknow < Renuka Sharma > 7877925207 Escorts Service
ย 
Call Girls Service Mukherjee Nagar @9999965857 Delhi ๐Ÿซฆ No Advance VVIP ๐ŸŽ SER...
Call Girls Service Mukherjee Nagar @9999965857 Delhi ๐Ÿซฆ No Advance  VVIP ๐ŸŽ SER...Call Girls Service Mukherjee Nagar @9999965857 Delhi ๐Ÿซฆ No Advance  VVIP ๐ŸŽ SER...
Call Girls Service Mukherjee Nagar @9999965857 Delhi ๐Ÿซฆ No Advance VVIP ๐ŸŽ SER...
ย 
Best VIP Call Girls Noida Sector 47 Call Me: 8448380779
Best VIP Call Girls Noida Sector 47 Call Me: 8448380779Best VIP Call Girls Noida Sector 47 Call Me: 8448380779
Best VIP Call Girls Noida Sector 47 Call Me: 8448380779
ย 
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: ๐Ÿ“ 7737669865 ๐Ÿ“ High Profile Model Escorts | Bang...
ย 
Best VIP Call Girls Noida Sector 44 Call Me: 8448380779
Best VIP Call Girls Noida Sector 44 Call Me: 8448380779Best VIP Call Girls Noida Sector 44 Call Me: 8448380779
Best VIP Call Girls Noida Sector 44 Call Me: 8448380779
ย 
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service ๐Ÿงต
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service  ๐ŸงตCALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service  ๐Ÿงต
CALL ON โžฅ8923113531 ๐Ÿ”Call Girls Kalyanpur Lucknow best Female service ๐Ÿงต
ย 
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...Booking open Available Pune Call Girls Kirkatwadi  6297143586 Call Hot Indian...
Booking open Available Pune Call Girls Kirkatwadi 6297143586 Call Hot Indian...
ย 

Use Web Skills To Build Mobile Apps

  • 1. Use Web Skills To Build Mobile Apps with Matt Baxter & Nathan Smith SATURDAY โ€” JUNE 2, 2012 โ€” DALLAS, TX http://bigdesignevents.com
  • 2. Put down that pen! (or not) You can get the slides here: http://j.mp/web-skills
  • 4. We do mobile/web UX & JavaScript at @mbxtr & @nathansmith (In case you want to talk smack on Twitter) http://projekt202.com
  • 5. An urgent (not desperate) announcement Weโ€™re hiring JavaScript savvy developers to join our team at projekt202. (You can talk to us after the presentation) http://projekt202.com
  • 7. State of mobile in 2007 โ€” The year the iPhone was introduced http://๏ฌ‚ickr.com/photos/djwudi/382030798
  • 8. Handset design was quite diverse โ€œway back when.โ€ Industrial designers were still (awkwardly) searching for the best form factorโ€ฆ
  • 10. Technology is cyclical. Good ideas are often โ€œborrowedโ€ and make their way to products from multiple vendors. http://engadget.com/photos/hp-envy-15-vs-the-macbook-pro
  • 11. The state of mobile in 2012 โ€” Touch screens reign supreme
  • 12. Not everyone can rock the giant cell phone foreverโ€ฆ http://hulu.com/watch/76560/late-night-with-jimmy-fallon-saved-by-the-bell-reunion-update-3
  • 13. <old-man-voice> Nowadays, itโ€™s more about the software on the device. </old-man-voice>
  • 14. Each day, on planet Earthโ€ฆ 317,124 newborns begin life 1,450,000 mobile devices activated http://lukew.com/๏ฌ€/entry.asp?1506
  • 15. The one thing all these phones have in common (besides Angry Birds) is they all have decent web browsers. http://paulirish.com/2010/high-res-browser-icons
  • 16. โ€œObama orders agencies to optimize Web content for mobileโ€ฆโ€ http://๏ฌ‚ickr.com/photos/whitehouse/7161178504
  • 18. Mobile web trivia timeโ€ฆ โ€” PhoneGap on Windows Phone uses the IE9 engine (it is pretty good) โ€” WebKit is the dominant rendering engine across most mobile devices โ€” iOS, Android, Blackberry, webOS โ€” Blackberry has one of the best WebKit-based browsers available
  • 19. So, what should I build? [A] Desktop web app [B] Mobile web app [C] Mobile native app
  • 20. [D] All of the above Note: Weโ€™re not saying you have to build all-in-oneโ€ฆ But it is possible.
  • 21. Whither Responsive Web Design? Responsive web design using @media queries (with one codebase for all devices) typically works best for web โ€œsitesโ€ (not apps). As a general rule of thumb, if your content can be read via RSS and still make sense, it is a good candidate for RWD. http://alistapart.com/articles/responsive-web-design
  • 22. Bene๏ฌts of native development โ€” Default OS look & feel (UI conventions) โ€” Performance (โ€œcloser to the metalโ€) โ€” Access to device hardware (GPS, etc) โ€” App store/marketplace distribution โ€” Bene๏ฌt from latest OS enhancements
  • 23. Drawbacks of native development โ€” Tied to the particular OS you built for โ€” Maintaining a multi OS team/skill-set โ€” Dealing with app store approval process โ€” Keeping app in sync with OS updates
  • 24. LinkedInโ€™s iPad app is 95% HTML5 We did users studies in-house, and I donโ€™t think people noticed a big di๏ฌ€erence. Nobody said, โ€œOh thatโ€™s native,โ€ or โ€œOh, thatโ€™s web.โ€ As long as we can make the experience fast enough, nobody can tell the di๏ฌ€erence. It still feels right. โ€” Kiran Prasad http://venturebeat.com/2012/05/02/linkedin-ipad-app-engineering
  • 25. Bene๏ฌts of hybrid development โ€” Common codebase for multiple OSโ€™s โ€” Access to device hardware (GPS, etc) โ€” App store/marketplace distribution โ€” Skills you already have (HTML, CSS, JS) โ€” Potential code reuse in web site/app
  • 26. Drawbacks of hybrid development โ€” Build for lowest common denominator โ€” 3rd party SDKโ€™s might lag behind OS โ€” Want to use feature X? Wait for an implementation in abstraction layer. โ€” An abstraction layer can have bugs of its own. Have to determine if a bug is in your code, the abstraction layer, or OS.
  • 27. Titanium from Appcelerator http://appcelerator.com/platform
  • 28.
  • 29. Areas where Titanium shines โ€” Native UI โ€” Great for iOS, crapshoot on Android โ€” Build for iOS, Android, and Blackberry โ€” Some code reuse across platforms โ€” Entirely JavaScript based โ€” Uses CommonJSโ€™s AMD approach โ€” Except for WebView (HTML/CSS too)
  • 31. Abstraction layers tend to be harder to debug than โ€œnativeโ€ languages โ€” Objective-C, C#, or Java โ€” whilst using an IDE such as Visual Studio, Xcode, or Eclipse. With โ€œthe web,โ€ you have familiar browser-based desktop tools in Chrome, Firebug, or Opera Dragon๏ฌ‚y.
  • 32. PhoneGap from Adobe http://phonegap.com
  • 33.
  • 34. Areas where PhoneGap shines โ€” It is โ€œthe web you already knowโ€ โ€” Debugging via desktop browser โ€” Access to device APIโ€™s (GPS, etc) โ€” Strives to implement W3C specs โ€” Camera API, etc. โ€” Supports Windows Phone 7, too
  • 35.
  • 37. How PhoneGap works โ€” It embeds a WebView in a native app โ€” Native app gives access to OS APIโ€™s โ€”ย All the UI is built via HTML/CSS โ€” JavaScript handles everything else โ€”ย The app wrapper compiles viaโ€ฆ Xcode, Eclipse, Visual Studio, or โ€œthe cloudโ€ โ†’ build.phonegap.com
  • 38.
  • 39. Handlebbbars demo of Handlebars.js and the Dribbble API http://host.sonspring.com/handlebbbars
  • 40.
  • 44. <script type="text/x-handlebars" id="_template-list-item"> {{#each shots}} <li> <p> <b class="big"> {{title}} </b> <img alt="{{title}}" class="frame" style="background-image:url({{image_url}})" src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAEklEQVQIHWP8//8/AzJgJCg AAB+ICPuLaDnAAAAAAElFTkSuQmCC" /> </p> <table> <tr> <th> Designer: </th> <td> <b>{{player.name}}</b> </td> </tr> {{#if player.twitter_screen_name}} ... {{/if}} {{#if likes_count}} ... {{/if}} {{#if short_url}} ... {{/if}} </table> </li> {{/each}} </script> Handlebars template
  • 45. <script type="text/x-handlebars" id="_template-list-item"> {{#each shots}} <li> <p> <b class="big"> {{title}} </b> <img alt="{{title}}" class="frame" style="background-image:url({{image_url}})" src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAEklEQVQIHWP8//8/AzJgJCg AAB+ICPuLaDnAAAAAAElFTkSuQmCC" /> </p> <table> <tr> <th> Designer: </th> <td> <b>{{player.name}}</b> </td> </tr> {{#if player.twitter_screen_name}} ... {{/if}} {{#if likes_count}} ... {{/if}} {{#if short_url}} ... {{/if}} </table> </li> {{/each}} </script> Handlebars template
  • 46. ... {{#if player.twitter_screen_name}} <tr> <th> Twitter: </th> <td> <a href="http://twitter.com/{{player.twitter_screen_name}}"> @{{player.twitter_screen_name}} </a> </td> </tr> {{/if}} {{#if likes_count}} <tr> <th> Likes: </th> <td> {{likes_count}} <span class="mute">&hearts;</span> </td> </tr> {{/if}} {{#if short_url}} <tr> <th> URL: </th> <td> <a href="{{short_url}}">{{short_url}}</a> </td> </tr> {{/if}} ... Handlebars template
  • 47. ... {{#if player.twitter_screen_name}} <tr> <th> Twitter: </th> <td> <a href="http://twitter.com/{{player.twitter_screen_name}}"> @{{player.twitter_screen_name}} </a> </td> </tr> {{/if}} {{#if likes_count}} <tr> <th> Likes: </th> <td> {{likes_count}} <span class="mute">&hearts;</span> </td> </tr> {{/if}} {{#if short_url}} <tr> <th> URL: </th> <td> <a href="{{short_url}}">{{short_url}}</a> </td> </tr> {{/if}} ... Handlebars template
  • 48. Sweet, responsive Handlebbbars action http://host.sonspring.com/handlebbbars
  • 49. All modern browsers support *.wo๏ฌ€ or *.ttf @font-face { font-family: 'Open Sans'; // For all good browsers, including IE9. src: url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), // For older IE, and Android default browser. url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'); } @font-face { font-family: 'Open Sans'; font-weight: bold; // For all good browsers, including IE9. src: url('../fonts/OpenSans-Bold-webfont.woff') format('woff'), // For older IE, and Android default browser. url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'); }
  • 51. Neatly organized *.sass CSS served to browser http://thingsorganizedneatly.tumblr.com/post/9494864300/submission-the-compulsively-tidy-ursus-wehrli
  • 52. CSS Sass Compass http://sonspring.com/journal/sass-for-designers
  • 54. Compass makes vendor pre๏ฌxes easy...
  • 55. Compass brings sanity to gradients...
  • 56. Text editors and IDEโ€™s that support Sass/SCSS syntax Aptana BBEdit Chocolat Coda http://aptana.org http://barebones.com/bbedit http://chocolatapp.com http://panic.com/coda E Text Editor Eclipse Emacs Espresso http://e-texteditor.com http://eclipse.org http://gnu.org/software/emacs http://macrabbit.com/espresso GEdit Komodo Netbeans PhpStorm http://projects.gnome.org/gedit http://activestate.com/komodo-ide http://netbeans.org http://jetbrains.com/phpstorm PyCharm RubyMine SubEthaEdit Sublime Text ^ http://jetbrains.com/pycharm http://jetbrains.com/ruby http://codingmonkeys.de/subethaedit http://sublimetext.com/dev TextMate Vim Visual Studio nd http://macromates.com http://vim.org http://microsoft.com/visualstudio We ย recomme http://sass-lang.com/editors.html
  • 57. IE9 gets jQuery, other browsers get Zepto <!--[if gt IE 9]><!--> <script src="zepto.js"></script> <!--<![endif]--> <!--[if lte IE 9]> <script src="jquery.js"></script> <![endif]-->
  • 58.
  • 59. Overview of Handlebbbarsโ€™ application.js ๏ฌle // Redefine: $, window, document, undefined. var APP = (function($, window, document, undefined) { // Expose contents of APP. return { // APP.go go: function() { // ... }, // APP.init init: { // ... }, // APP.util util: { // ... } } // Parameters: Zepto/jQuery, window, document. })(typeof Zepto === 'function' ? Zepto : jQuery, this, this.document); http://host.sonspring.com/handlebbbars/assets/js/application.js
  • 60. Where the magic of Handlebars happens markup = $('#_template-list-item') .html() .replace(/ss+/g, ''); template = Handlebars.compile(markup); Yes, this looks underwhelming. Thatโ€™s the point. Itโ€™s code you donโ€™t have to write yourself! :) http://host.sonspring.com/handlebbbars/assets/js/application.js
  • 62.
  • 64.
  • 65. Nav shortcuts: J/K keys, swipe left/rightโ€ฆ
  • 66.
  • 68. Maintaining an appโ€™s state can drive you crazy @MikeTownson dared us to use a โ€œlolcatโ€ โ€” Challenge accepted!
  • 69.
  • 70. Pop out external links (for PhoneGap)โ€ฆ
  • 71.
  • 72. Rudimentary caching, for one hourโ€ฆ
  • 73.
  • 74. Ajax call (JSONP) to Dribbbleโ€™s APIโ€ฆ
  • 75.
  • 76.
  • 77. PhoneGap tip: Declare โ€œsafeโ€ domains on iOS http://anujgakhar.com/2011/11/22/phonegap-gotcha-error-whitelist-rejection
  • 78.
  • 79. Underscore.js is a power tool for working with collections of objects and arraysโ€ฆ โ€” Collections โ€” sortBy โ€” pluck โ€” uniq โ€” extend โ€” ๏ฌ‚atten โ€” each โ€” ๏ฌlter โ€” ๏ฌnd โ€” Utility functions โ€” throttle โ€” chain โ€” times and ย much ย more!
  • 80. โ€œReal artists shipโ€ โ€” Steve Jobs Hopefully we have inspired you to create more rapidly shippable software today :)
  • 81. Want to reread something? You can get the slides here: http://j.mp/web-skills
  • 82. Questions? We (might) have answers. If you think of something later, feel free to ask us on Twitterโ€ฆ @mbxtr & @nathansmith