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
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
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.
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.
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
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
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
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
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