SlideShare a Scribd company logo
1 of 46
Download to read offline
JAVASCRIPT
                          FTW
                          This is not your slightly
                          older sibling’s scripting
                          language.




                           Pascal Rettig
                           On twitter @cykod

Thursday, June 23, 2011
JAVASCRIPT
                          WAS...
                          •   Né Mocha by Netscape’s Brendan Eich
                          •   Released as LiveScript in NN 2.0 Sept. 95’
                          •   Renamed JavaScript, for no good reason,
                              in a move that will forever cause confusion
                              to managers and clients, who will continue
                              to insist on referring to the language as
                              Java and not understand the difference.




Thursday, June 23, 2011
UNIVERSAL
                          PRAISE FOR
                          JAVASCRIPT..


Thursday, June 23, 2011
“I was convinced that
                          we needed to build-in
                          a programming
                          language, but the
                          developers, Tim first,
                          were very much
                          opposed. It had to
                          remain completely
                          declarative. Maybe, but
                          the net result is that
                          the programming-
                          vacuum filled itself
                          with the most horrible
                          kludge in the history
                          of computing:
                          Javascript.”
                               -Robert Cailliau
Thursday, June 23, 2011
OK, MAYBE NOT..



Thursday, June 23, 2011
WHY DID W E HATE
                   JAVASCRIPT SO MUCH?
Thursday, June 23, 2011
JAVASCRIPT...
                          THE BA D PARTS
                          •   Incompatible Implementations (Not
                              mentioning anyone related to this
                              building)
                          •   OO, but not a classical inheritance
                          •   Initial Implementation were slow
                          •   It looked like a silly toy next to Flash
                          •   No AJAX to start with (while Flash did)


Thursday, June 23, 2011
THE B IGGEST R EASON:

                          •   People didn’t know how to Program
                              in it.
                          •   People didn’t know how to Program
                              large, well-designed systems in it
                              (And many didn’t think it was
                              possible)




Thursday, June 23, 2011
WHAT
                          CHANGED?
                          The “Gmail” and “Google
                          Maps Era”
                          starting in 2004-2005
                          People saw what you could
                          do with large scale systems
                          built primarily in
                          JavaScript



Thursday, June 23, 2011
WHAT
                          CHANGED?
                          Followed quickly by the
                          “Framework Era”
                          2005-Today
                          Popular, well supported
                          frameworks that made writing
                          cross-browser, dynamic code a
                          breeze.
                          Prototype, YUI, GWT,
                          MooTools, and jQuery


Thursday, June 23, 2011
WHAT
                           CHANGED?
                           Finally the “Chrome” era
                           Late 2008-Today
                           Chrome was released and
                           set a high bar for Javascript
                           performance w/ V8 that lit
                           a fire in other Browser
                           makers.

                              http://news.cnet.com/
                          8301-1001_3-10030888-92.html
Thursday, June 23, 2011
SOME A WESOME T  HINGS YOU
                CAN D O IN JAVASCRIPT...
                 •        Dynamically Check and
                          Uncheck checkboxes
                 •        Load HTML DYNAMICALLY
                          and Asynchronously via
                          A-J-A-X
                 •        Load images with a “Lightbox”
                          Effect


Thursday, June 23, 2011
JUST KIDDING...



Thursday, June 23, 2011
THE REA L AWESOM  E THINGS
            YOU CAN  DO IN JAVASCRIPT...

              •     cross-browser, cross-platform Game Development.
                    (& interactive data visualization)
              •     Mobile + Desktop App Development
              •     Audio processing and rendering
              •     Hardware accelerated 3D in the Browser
              •     Offline Applications
              •     Server Side Development



Thursday, June 23, 2011
THE ADVANTAGES
                          OF JAVASCRIPT
                          •   Extremely low “Ceremony” language
                          •   Most accessible language in world -
                              toolchain installed on almost 100% of
                              computers in the world.
                          •   Hello World!
                              <script>
                               alert(“Hello World!”);
                              </script>




Thursday, June 23, 2011
ATWOODS LAW
                          “I propose a corollary ... I'll call
                          Atwood's Law: any application that
                          can be written in JavaScript, will
                          eventually be written in JavaScript.”
                          -Jeff Atwood (2007)




Thursday, June 23, 2011
WE ARE  ENTERING
                 THE “JAVASCR IPT AGE”
                          1991-1999: The HTML Age
                          2000-2009: The LAMP Age
                             2010-??: The Javascript Age

                    The Javascript age is about event streams. Modern web pages
                    are not pages, they are event-driven applications through which
                    information moves.
                    “The Javascript age brings us closer to a web that is not a global
                    digital library, but a global digital nervous system, whose
                    implications we are only beginning to apprehend.”
                    -http://metamarketsgroup.com/blog/node-js-and-the-javascript-
                    age/

Thursday, June 23, 2011
ACTUALLY A COR OLLARY TO
              “THE RULE OF LEAST POWER”

               http://www.w3.org/2001/tag/doc/leastPower.html
               Computer Science spent the last forty years making languages which were
               as powerful as possible. Nowadays we have to appreciate the reasons for
               picking not the most powerful solution but the least powerful. The less
               powerful the language, the more you can do with the data stored in that
               language. If you write it in a simple declarative from, anyone can write a
               program to analyze it. If, for example, a web page with weather data has
               RDF describing that data, a user can retrieve it as a table, perhaps average
               it, plot it, deduce things from it in combination with other information. At
               the other end of the scale is the weather information portrayed by the
               cunning Java applet. While this might allow a very cool user interface, it
               cannot be analyzed at all. The search engine finding the page will have no
               idea of what the data is or what it is about. The only way to find out what a
               Java applet means is to set it running in front of a person.


Thursday, June 23, 2011
JAVASCRIPT IN
                          A NUTSHELL
                          •   5 Basic Types: Bool, Number
                              (float), String, Array, Object
                          •   + Function as first class objects.
                          •   Very loosely typed
                          •   Easily meta-programmed
                          •   Support for Closures (Great for
                              Async Development)




Thursday, June 23, 2011
DEBUGGING
                          JAVASCRIPT
                          •   Aka Firebug + Built-in clones
                          •   Now have an environment that
                              rivals the best IDE’s
                          •   Inspection, Console, Step
                              debugging, Network, Profiling
                          •   http://cykod.github.com/
                              AlienInvaders/




Thursday, June 23, 2011
JAVASCRIPT IS A
                          LAX LANGUAGE - HOW
                          ABOUT SOME RIGOR?
                          Your javascript code will only be as
                          rigorous as you are.




Thursday, June 23, 2011
CONSIDER
                          LINT’ING
                          http://javascriptlint.com/
                          http://jslint.com/
                          Browser (or Command line
                          tool by Matthias Miller)
                          built on the work done by
                          Douglas Crockford (“JS, the
                          good parts”)


Thursday, June 23, 2011
LEARNING
                          JAVASCRIPT
                          Start with your “Crockford”
                          aka “Javascript: the Good
                          Parts”
                          JavaScript patterns builds
                          on the basics.
                          http://
                          javascript.infogami.com/
                          Javascript_in_Ten_Minutes


Thursday, June 23, 2011
AUTOMATED
                          TESTING
                          FRAMEWORKS
                          •   QUnit - used in JQuery
                          •   Jasmine - Created by Pivotal
                              Labs, Inspired by RSpec




Thursday, June 23, 2011
QUNIT
                   By John Resig, Founder of JQuery
                   http://docs.jquery.com/Qunit

              test("a basic test example", function() {
                ok( true, "this test is fine" );
                var value = "hello";
                equals( "hello", value, "We expect value to be hello" );
              });

              module("Module A");

              test("first test within module", function() {
                ok( true, "all pass" );
              });

Thursday, June 23, 2011
JASMINE
                From Pivotal Labs, Successor to JsUnit,
                inspired (partly) by RSpec
                 http://pivotal.github.com/jasmine/

               describe('Calculator', function () {
                 var counter = 0

                    it('can add a number', function () {
                      counter = counter + 2;   // counter was 0 before
                      expect(bar).toEqual(2);
                    });

                 it('can multiply a number', function () {
                   counter = counter * 5;   // counter was 2 before
                   expect(bar).toEqual(10);
                 });
               });

Thursday, June 23, 2011
JAVASCRIPT
                          (AKA HTML5)
                          GAME
                          DEVELOPMENT
                          (Akihabara running on
                          iPhone, Android, Firefox, ...)
                          http://www.kesiev.com/
                          akihabara/demo/game-
                          solitude.html


Thursday, June 23, 2011
IMPACT.JS
                          NOW RUNS
                          BROWSER +
                          IOS NATIVE
                          Native Hardware-
                          Accelerated Compatibility
                          Layer.
                          Biolab Disaster is in the
                          App Store.
                          All Javascript.
Thursday, June 23, 2011
JAVASCRIPT
                          GAME DEV
                          •   Cross browser, Cross
                              platform, game development
                              from a single codebase.
                          •   No Curator (No App store)
                          •   Web Sockets, Realtime
                              development




Thursday, June 23, 2011
Q1 2010            Q4 2010   Q2 2011




             STATE O F HTML5 GAME DEV
Thursday, June 23, 2011
AUDIO
                          PROCESSING
                          •   So far only FF4
                          •   API’s for reading and writing audio
                          •   Chrome developing a much more
                              feature-rich (& complicated)
                              version.




Thursday, June 23, 2011
READING AUDIO
                (BOCOUP.COM)

           <audio id="input" src="../drumbeat.ogg" controls></audio>

           <div id="display"></div>

           <script>

               var display = document.getElementById('display'),
                   input   = document.getElementById('input');

               input.addEventListener('MozAudioAvailable', function(e){
                 display.innerHTML += e.frameBuffer[0] + ", ";
               }, false);

           </script>



Thursday, June 23, 2011
3 D IN THE BROWSEaRm/aquarium.html
                              u riu ooglecode.com/hg/aq
              http://webglsamples.g                          oc ks/spacerocks.html
                                       g lecode.com/hg/spacer
              ht tp://webglsamples.goo

Thursday, June 23, 2011
WEBGL
                          (OPENGL ES2.0)
                          IS IN PRODUCTION
                          •   Chrome Stable
                          •   Firefox 4
                          •   Webkit Nightly’s
                          •   an Opera Preview Release
                          •   No IE (Sorry) - Silverlight only




Thursday, June 23, 2011
MOBILE “ HTML5” FE ATURES                                  EC)
                                                THA N JUST THE HTML5 SP
             (HTML5 HAS COME TO MEAN A LOT MORE



                •     CSS3 - visual goodies, transitions
                •     Audio, Video (Limited)
                •     WebSockets
                •     Local Storage
                •     Offline Storage
                •     Canvas, SVG
                •     New Events (touch, orientation, accel)
                •     Geolocation (via GPS)
                •     All supported on Mobile Webkit stack

Thursday, June 23, 2011
MOBILE
                          FRAMEWORKS
                          jQuery Mobile + Sencha
                          Touch are two methods of
                          creating a “native” feeling
                          experience.
                          Sencha:
                          http://bit.ly/jtWCxR
                          jQueryMobile:
                          http://bit.ly/mKBVgt

Thursday, June 23, 2011
OFFLINE APPL ICATIONS
                      •   Google Gears had been around for
                          a while (where we got a lot of cool
                          stuff for HTML5)
                      •   Replaced by HTML5 support for
                          cache manifest
                      •   http://diveintohtml5.org/
                          offline.html



Thursday, June 23, 2011
DESKTOP +
                          MOBILE APP IN JS?
                          REALLY?
                          •   Yes, and it works,
                              reasonably well
                          •   http://www.appcelerator.com/
                          •   http://www.phonegap.com/




Thursday, June 23, 2011
TITANIUM / APPCELERATOR

                •     Build your UI in Javascript
                •     Assign properties like width, height, backgrounds,
                      etc.
                •     Access native functionality like camera, audio, etc.
                •     Releasing a Web/HTML5 version as well.
                •     A little Buggy, poorly doc’d.
                •     Slightly painful building UI components.


Thursday, June 23, 2011
TITANIUM EXAMPLE




Thursday, June 23, 2011
PHO NE GAP
                          •   Build normal HTML Apps
                          •   Works well with Sencha Touch
                              and jQuery mobile.
                          •   Access to native features via
                              javascript objects.




Thursday, June 23, 2011
JAVASCRIPT ON
                          THE SERVER
                          •   Got a huge boost when Google
                              released V8 as an easily
                              embeddable server
                          •   Node.js is the big project right
                              now.
                          •   Single threaded, async framework
                          •   Actually pretty Friggin fast.




Thursday, June 23, 2011
SIMPLE NODE.JS
                SERVER
          var http = require('http');
          http.createServer(function (req, res) {
              res.writeHead(200, {'Content-Type': 'text/plain'});
                res.end('Hello Worldn');
              }).listen(8124, "127.0.0.1");


          console.log('Server running at http://127.0.0.1:8124/');




Thursday, June 23, 2011
BONUS USE
                          CASE
                          •   Browser plugins - just HTML,
                              CSS, and Javascript
                          •   http://code.google.com/
                              chrome/extensions/
                              getstarted.html




Thursday, June 23, 2011
DEMO TIME
                          https://mozillademos.org/
                          demos/nocomply/
                          demo.html




Thursday, June 23, 2011
THANKS!
                          QUESTIONS?

                          Pascal Rettig
                          cykod.com
                          Twitter @cykod




Thursday, June 23, 2011

More Related Content

What's hot

Student feedback system
Student feedback systemStudent feedback system
Student feedback systemAkshay Surve
 
Problem based learning
Problem based learningProblem based learning
Problem based learningAnsila Yunus
 
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptx
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptxMAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptx
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptxMichelleMallorca2
 
Dunkin' Donuts Live Stream Case Study
Dunkin' Donuts Live Stream Case StudyDunkin' Donuts Live Stream Case Study
Dunkin' Donuts Live Stream Case StudyKevin Leu
 
Internet Peering and the Role of an IXP
Internet Peering and the Role of an IXPInternet Peering and the Role of an IXP
Internet Peering and the Role of an IXPJacob Dagunduro
 
Database Design & Implementation Report
Database Design & Implementation ReportDatabase Design & Implementation Report
Database Design & Implementation ReportIan Morris
 
Árpádházi Szent Margit
Árpádházi Szent MargitÁrpádházi Szent Margit
Árpádházi Szent MargitUrr Ipoly
 
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to Dino
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to DinoIntervention Order - Response and Adjournment for 10Nov2011 - Letter to Dino
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to DinoTRENTESTA
 
Metric insights Overview
Metric insights OverviewMetric insights Overview
Metric insights Overviewmetricinsights
 
Attendance management system
Attendance management system Attendance management system
Attendance management system SHIVANGI GOEL
 
Ppt of online Attendance system
Ppt of online Attendance system Ppt of online Attendance system
Ppt of online Attendance system Shyam Sundar Pandey
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTTushar Dhoot
 
Software Requirements Specification on Student Information System (SRS on SIS)
Software Requirements Specification on Student Information System (SRS on SIS)Software Requirements Specification on Student Information System (SRS on SIS)
Software Requirements Specification on Student Information System (SRS on SIS)Minhas Kamal
 
Introduction to differential power analysis - Rambus
Introduction to differential power analysis - RambusIntroduction to differential power analysis - Rambus
Introduction to differential power analysis - RambusRambus
 
virtual classroom for college major project for computer science.
virtual classroom for college major project for computer science.virtual classroom for college major project for computer science.
virtual classroom for college major project for computer science.Madhukar Kumar
 

What's hot (19)

Student feedback system
Student feedback systemStudent feedback system
Student feedback system
 
Problem based learning
Problem based learningProblem based learning
Problem based learning
 
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptx
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptxMAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptx
MAKING SENSE OF THE TEACHING AND LEARNING PROCESS.pptx
 
Dunkin' Donuts Live Stream Case Study
Dunkin' Donuts Live Stream Case StudyDunkin' Donuts Live Stream Case Study
Dunkin' Donuts Live Stream Case Study
 
Internet Peering and the Role of an IXP
Internet Peering and the Role of an IXPInternet Peering and the Role of an IXP
Internet Peering and the Role of an IXP
 
Student Attendance System ppt
Student Attendance System pptStudent Attendance System ppt
Student Attendance System ppt
 
Database Design & Implementation Report
Database Design & Implementation ReportDatabase Design & Implementation Report
Database Design & Implementation Report
 
Touch point maps
Touch point mapsTouch point maps
Touch point maps
 
Árpádházi Szent Margit
Árpádházi Szent MargitÁrpádházi Szent Margit
Árpádházi Szent Margit
 
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to Dino
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to DinoIntervention Order - Response and Adjournment for 10Nov2011 - Letter to Dino
Intervention Order - Response and Adjournment for 10Nov2011 - Letter to Dino
 
Jane cv(1)
Jane cv(1)Jane cv(1)
Jane cv(1)
 
Metric insights Overview
Metric insights OverviewMetric insights Overview
Metric insights Overview
 
Attendance management system
Attendance management system Attendance management system
Attendance management system
 
Ppt of online Attendance system
Ppt of online Attendance system Ppt of online Attendance system
Ppt of online Attendance system
 
PROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOTPROJECT FOR CSE BY TUSHAR DHOOT
PROJECT FOR CSE BY TUSHAR DHOOT
 
Dabar 2016 v2
Dabar 2016 v2Dabar 2016 v2
Dabar 2016 v2
 
Software Requirements Specification on Student Information System (SRS on SIS)
Software Requirements Specification on Student Information System (SRS on SIS)Software Requirements Specification on Student Information System (SRS on SIS)
Software Requirements Specification on Student Information System (SRS on SIS)
 
Introduction to differential power analysis - Rambus
Introduction to differential power analysis - RambusIntroduction to differential power analysis - Rambus
Introduction to differential power analysis - Rambus
 
virtual classroom for college major project for computer science.
virtual classroom for college major project for computer science.virtual classroom for college major project for computer science.
virtual classroom for college major project for computer science.
 

Viewers also liked

Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsDarko Kukovec
 
Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Gregory Starr
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?Ravi Raj
 
Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Aaron Gustafson
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)Gary Arora
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureNicholas Zakas
 

Viewers also liked (11)

Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs apps
 
Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015Javascript Animation with Canvas - Gregory Starr 2015
Javascript Animation with Canvas - Gregory Starr 2015
 
PHP 7 new engine
PHP 7 new enginePHP 7 new engine
PHP 7 new engine
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
Javascript
JavascriptJavascript
Javascript
 
Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
 
Javascript
JavascriptJavascript
Javascript
 
Js ppt
Js pptJs ppt
Js ppt
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
 

Similar to Javascript FTW

NodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebNodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebJakub Nesetril
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyEmanuele Di Saverio
 
Jquery(2)
Jquery(2)Jquery(2)
Jquery(2)tomcoh
 
Develop Gwt application in TDD
Develop Gwt application in TDDDevelop Gwt application in TDD
Develop Gwt application in TDDUberto Barbini
 
JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forwardeug3n_cojocaru
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG PresentationDerrick Bowen
 
GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011Stefane Fermigier
 
JavaScript: Your New Overlord
JavaScript: Your New OverlordJavaScript: Your New Overlord
JavaScript: Your New Overlordjaxconf
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Tales of Suckage and Awesomeness (Full Frontal 2012)
Tales of Suckage and Awesomeness (Full Frontal 2012)Tales of Suckage and Awesomeness (Full Frontal 2012)
Tales of Suckage and Awesomeness (Full Frontal 2012)Chris Wilson
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeLee Calcote
 
State Of Ajax Zend Con 08
State Of Ajax   Zend Con 08State Of Ajax   Zend Con 08
State Of Ajax Zend Con 08bgalbs
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014jbandi
 
HTML5 and the Future of Apps
HTML5 and the Future of AppsHTML5 and the Future of Apps
HTML5 and the Future of AppsTom Croucher
 
Livestand : Learnings. YUI Conf 2011
Livestand : Learnings. YUI Conf 2011Livestand : Learnings. YUI Conf 2011
Livestand : Learnings. YUI Conf 2011sdezzi
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time Pascal Rettig
 
Java桌面应用开发
Java桌面应用开发Java桌面应用开发
Java桌面应用开发Gump Law
 

Similar to Javascript FTW (20)

NodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time WebNodeJS, CoffeeScript & Real-time Web
NodeJS, CoffeeScript & Real-time Web
 
Android 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journeyAndroid 1.5 to 3.0: a compatibility journey
Android 1.5 to 3.0: a compatibility journey
 
Jquery(2)
Jquery(2)Jquery(2)
Jquery(2)
 
Jquery
JqueryJquery
Jquery
 
Develop Gwt application in TDD
Develop Gwt application in TDDDevelop Gwt application in TDD
Develop Gwt application in TDD
 
JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forward
 
GWT HJUG Presentation
GWT HJUG PresentationGWT HJUG Presentation
GWT HJUG Presentation
 
GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011GT Logiciel Libre - Convention Systematic 2011
GT Logiciel Libre - Convention Systematic 2011
 
JavaScript: Your New Overlord
JavaScript: Your New OverlordJavaScript: Your New Overlord
JavaScript: Your New Overlord
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Splash
SplashSplash
Splash
 
Tales of Suckage and Awesomeness (Full Frontal 2012)
Tales of Suckage and Awesomeness (Full Frontal 2012)Tales of Suckage and Awesomeness (Full Frontal 2012)
Tales of Suckage and Awesomeness (Full Frontal 2012)
 
UniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtimeUniK - a unikernel compiler and runtime
UniK - a unikernel compiler and runtime
 
State Of Ajax Zend Con 08
State Of Ajax   Zend Con 08State Of Ajax   Zend Con 08
State Of Ajax Zend Con 08
 
There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014There is something about JavaScript - Choose Forum 2014
There is something about JavaScript - Choose Forum 2014
 
HTML5 and the Future of Apps
HTML5 and the Future of AppsHTML5 and the Future of Apps
HTML5 and the Future of Apps
 
Livestand : Learnings. YUI Conf 2011
Livestand : Learnings. YUI Conf 2011Livestand : Learnings. YUI Conf 2011
Livestand : Learnings. YUI Conf 2011
 
3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time 3D in the Browser via WebGL: It's Go Time
3D in the Browser via WebGL: It's Go Time
 
Java桌面应用开发
Java桌面应用开发Java桌面应用开发
Java桌面应用开发
 
Jax keynote
Jax keynoteJax keynote
Jax keynote
 

More from Pascal Rettig

Web Typography for Front End Developers
Web Typography for Front End DevelopersWeb Typography for Front End Developers
Web Typography for Front End DevelopersPascal Rettig
 
The State of Front End Web Development 2011
The State of Front End Web Development 2011The State of Front End Web Development 2011
The State of Front End Web Development 2011Pascal Rettig
 
Javascript Everywhere
Javascript EverywhereJavascript Everywhere
Javascript EverywherePascal Rettig
 
Vector Graphics on the Web: SVG, Canvas, CSS3
Vector Graphics on the Web: SVG, Canvas, CSS3Vector Graphics on the Web: SVG, Canvas, CSS3
Vector Graphics on the Web: SVG, Canvas, CSS3Pascal Rettig
 
Cracking the Customer Acquisition Nut
Cracking the Customer Acquisition NutCracking the Customer Acquisition Nut
Cracking the Customer Acquisition NutPascal Rettig
 
HTML5 Space Invaders
HTML5 Space InvadersHTML5 Space Invaders
HTML5 Space InvadersPascal Rettig
 

More from Pascal Rettig (8)

Web Typography for Front End Developers
Web Typography for Front End DevelopersWeb Typography for Front End Developers
Web Typography for Front End Developers
 
The State of Front End Web Development 2011
The State of Front End Web Development 2011The State of Front End Web Development 2011
The State of Front End Web Development 2011
 
Semantic chop
Semantic chopSemantic chop
Semantic chop
 
Mobile HTML5
Mobile HTML5Mobile HTML5
Mobile HTML5
 
Javascript Everywhere
Javascript EverywhereJavascript Everywhere
Javascript Everywhere
 
Vector Graphics on the Web: SVG, Canvas, CSS3
Vector Graphics on the Web: SVG, Canvas, CSS3Vector Graphics on the Web: SVG, Canvas, CSS3
Vector Graphics on the Web: SVG, Canvas, CSS3
 
Cracking the Customer Acquisition Nut
Cracking the Customer Acquisition NutCracking the Customer Acquisition Nut
Cracking the Customer Acquisition Nut
 
HTML5 Space Invaders
HTML5 Space InvadersHTML5 Space Invaders
HTML5 Space Invaders
 

Recently uploaded

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

Javascript FTW

  • 1. JAVASCRIPT FTW This is not your slightly older sibling’s scripting language. Pascal Rettig On twitter @cykod Thursday, June 23, 2011
  • 2. JAVASCRIPT WAS... • Né Mocha by Netscape’s Brendan Eich • Released as LiveScript in NN 2.0 Sept. 95’ • Renamed JavaScript, for no good reason, in a move that will forever cause confusion to managers and clients, who will continue to insist on referring to the language as Java and not understand the difference. Thursday, June 23, 2011
  • 3. UNIVERSAL PRAISE FOR JAVASCRIPT.. Thursday, June 23, 2011
  • 4. “I was convinced that we needed to build-in a programming language, but the developers, Tim first, were very much opposed. It had to remain completely declarative. Maybe, but the net result is that the programming- vacuum filled itself with the most horrible kludge in the history of computing: Javascript.” -Robert Cailliau Thursday, June 23, 2011
  • 6. WHY DID W E HATE JAVASCRIPT SO MUCH? Thursday, June 23, 2011
  • 7. JAVASCRIPT... THE BA D PARTS • Incompatible Implementations (Not mentioning anyone related to this building) • OO, but not a classical inheritance • Initial Implementation were slow • It looked like a silly toy next to Flash • No AJAX to start with (while Flash did) Thursday, June 23, 2011
  • 8. THE B IGGEST R EASON: • People didn’t know how to Program in it. • People didn’t know how to Program large, well-designed systems in it (And many didn’t think it was possible) Thursday, June 23, 2011
  • 9. WHAT CHANGED? The “Gmail” and “Google Maps Era” starting in 2004-2005 People saw what you could do with large scale systems built primarily in JavaScript Thursday, June 23, 2011
  • 10. WHAT CHANGED? Followed quickly by the “Framework Era” 2005-Today Popular, well supported frameworks that made writing cross-browser, dynamic code a breeze. Prototype, YUI, GWT, MooTools, and jQuery Thursday, June 23, 2011
  • 11. WHAT CHANGED? Finally the “Chrome” era Late 2008-Today Chrome was released and set a high bar for Javascript performance w/ V8 that lit a fire in other Browser makers. http://news.cnet.com/ 8301-1001_3-10030888-92.html Thursday, June 23, 2011
  • 12. SOME A WESOME T HINGS YOU CAN D O IN JAVASCRIPT... • Dynamically Check and Uncheck checkboxes • Load HTML DYNAMICALLY and Asynchronously via A-J-A-X • Load images with a “Lightbox” Effect Thursday, June 23, 2011
  • 14. THE REA L AWESOM E THINGS YOU CAN DO IN JAVASCRIPT... • cross-browser, cross-platform Game Development. (& interactive data visualization) • Mobile + Desktop App Development • Audio processing and rendering • Hardware accelerated 3D in the Browser • Offline Applications • Server Side Development Thursday, June 23, 2011
  • 15. THE ADVANTAGES OF JAVASCRIPT • Extremely low “Ceremony” language • Most accessible language in world - toolchain installed on almost 100% of computers in the world. • Hello World! <script> alert(“Hello World!”); </script> Thursday, June 23, 2011
  • 16. ATWOODS LAW “I propose a corollary ... I'll call Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.” -Jeff Atwood (2007) Thursday, June 23, 2011
  • 17. WE ARE ENTERING THE “JAVASCR IPT AGE” 1991-1999: The HTML Age 2000-2009: The LAMP Age 2010-??: The Javascript Age The Javascript age is about event streams. Modern web pages are not pages, they are event-driven applications through which information moves. “The Javascript age brings us closer to a web that is not a global digital library, but a global digital nervous system, whose implications we are only beginning to apprehend.” -http://metamarketsgroup.com/blog/node-js-and-the-javascript- age/ Thursday, June 23, 2011
  • 18. ACTUALLY A COR OLLARY TO “THE RULE OF LEAST POWER” http://www.w3.org/2001/tag/doc/leastPower.html Computer Science spent the last forty years making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative from, anyone can write a program to analyze it. If, for example, a web page with weather data has RDF describing that data, a user can retrieve it as a table, perhaps average it, plot it, deduce things from it in combination with other information. At the other end of the scale is the weather information portrayed by the cunning Java applet. While this might allow a very cool user interface, it cannot be analyzed at all. The search engine finding the page will have no idea of what the data is or what it is about. The only way to find out what a Java applet means is to set it running in front of a person. Thursday, June 23, 2011
  • 19. JAVASCRIPT IN A NUTSHELL • 5 Basic Types: Bool, Number (float), String, Array, Object • + Function as first class objects. • Very loosely typed • Easily meta-programmed • Support for Closures (Great for Async Development) Thursday, June 23, 2011
  • 20. DEBUGGING JAVASCRIPT • Aka Firebug + Built-in clones • Now have an environment that rivals the best IDE’s • Inspection, Console, Step debugging, Network, Profiling • http://cykod.github.com/ AlienInvaders/ Thursday, June 23, 2011
  • 21. JAVASCRIPT IS A LAX LANGUAGE - HOW ABOUT SOME RIGOR? Your javascript code will only be as rigorous as you are. Thursday, June 23, 2011
  • 22. CONSIDER LINT’ING http://javascriptlint.com/ http://jslint.com/ Browser (or Command line tool by Matthias Miller) built on the work done by Douglas Crockford (“JS, the good parts”) Thursday, June 23, 2011
  • 23. LEARNING JAVASCRIPT Start with your “Crockford” aka “Javascript: the Good Parts” JavaScript patterns builds on the basics. http:// javascript.infogami.com/ Javascript_in_Ten_Minutes Thursday, June 23, 2011
  • 24. AUTOMATED TESTING FRAMEWORKS • QUnit - used in JQuery • Jasmine - Created by Pivotal Labs, Inspired by RSpec Thursday, June 23, 2011
  • 25. QUNIT By John Resig, Founder of JQuery http://docs.jquery.com/Qunit test("a basic test example", function() { ok( true, "this test is fine" ); var value = "hello"; equals( "hello", value, "We expect value to be hello" ); }); module("Module A"); test("first test within module", function() { ok( true, "all pass" ); }); Thursday, June 23, 2011
  • 26. JASMINE From Pivotal Labs, Successor to JsUnit, inspired (partly) by RSpec http://pivotal.github.com/jasmine/ describe('Calculator', function () { var counter = 0 it('can add a number', function () { counter = counter + 2; // counter was 0 before expect(bar).toEqual(2); }); it('can multiply a number', function () { counter = counter * 5; // counter was 2 before expect(bar).toEqual(10); }); }); Thursday, June 23, 2011
  • 27. JAVASCRIPT (AKA HTML5) GAME DEVELOPMENT (Akihabara running on iPhone, Android, Firefox, ...) http://www.kesiev.com/ akihabara/demo/game- solitude.html Thursday, June 23, 2011
  • 28. IMPACT.JS NOW RUNS BROWSER + IOS NATIVE Native Hardware- Accelerated Compatibility Layer. Biolab Disaster is in the App Store. All Javascript. Thursday, June 23, 2011
  • 29. JAVASCRIPT GAME DEV • Cross browser, Cross platform, game development from a single codebase. • No Curator (No App store) • Web Sockets, Realtime development Thursday, June 23, 2011
  • 30. Q1 2010 Q4 2010 Q2 2011 STATE O F HTML5 GAME DEV Thursday, June 23, 2011
  • 31. AUDIO PROCESSING • So far only FF4 • API’s for reading and writing audio • Chrome developing a much more feature-rich (& complicated) version. Thursday, June 23, 2011
  • 32. READING AUDIO (BOCOUP.COM) <audio id="input" src="../drumbeat.ogg" controls></audio> <div id="display"></div> <script> var display = document.getElementById('display'), input = document.getElementById('input'); input.addEventListener('MozAudioAvailable', function(e){ display.innerHTML += e.frameBuffer[0] + ", "; }, false); </script> Thursday, June 23, 2011
  • 33. 3 D IN THE BROWSEaRm/aquarium.html u riu ooglecode.com/hg/aq http://webglsamples.g oc ks/spacerocks.html g lecode.com/hg/spacer ht tp://webglsamples.goo Thursday, June 23, 2011
  • 34. WEBGL (OPENGL ES2.0) IS IN PRODUCTION • Chrome Stable • Firefox 4 • Webkit Nightly’s • an Opera Preview Release • No IE (Sorry) - Silverlight only Thursday, June 23, 2011
  • 35. MOBILE “ HTML5” FE ATURES EC) THA N JUST THE HTML5 SP (HTML5 HAS COME TO MEAN A LOT MORE • CSS3 - visual goodies, transitions • Audio, Video (Limited) • WebSockets • Local Storage • Offline Storage • Canvas, SVG • New Events (touch, orientation, accel) • Geolocation (via GPS) • All supported on Mobile Webkit stack Thursday, June 23, 2011
  • 36. MOBILE FRAMEWORKS jQuery Mobile + Sencha Touch are two methods of creating a “native” feeling experience. Sencha: http://bit.ly/jtWCxR jQueryMobile: http://bit.ly/mKBVgt Thursday, June 23, 2011
  • 37. OFFLINE APPL ICATIONS • Google Gears had been around for a while (where we got a lot of cool stuff for HTML5) • Replaced by HTML5 support for cache manifest • http://diveintohtml5.org/ offline.html Thursday, June 23, 2011
  • 38. DESKTOP + MOBILE APP IN JS? REALLY? • Yes, and it works, reasonably well • http://www.appcelerator.com/ • http://www.phonegap.com/ Thursday, June 23, 2011
  • 39. TITANIUM / APPCELERATOR • Build your UI in Javascript • Assign properties like width, height, backgrounds, etc. • Access native functionality like camera, audio, etc. • Releasing a Web/HTML5 version as well. • A little Buggy, poorly doc’d. • Slightly painful building UI components. Thursday, June 23, 2011
  • 41. PHO NE GAP • Build normal HTML Apps • Works well with Sencha Touch and jQuery mobile. • Access to native features via javascript objects. Thursday, June 23, 2011
  • 42. JAVASCRIPT ON THE SERVER • Got a huge boost when Google released V8 as an easily embeddable server • Node.js is the big project right now. • Single threaded, async framework • Actually pretty Friggin fast. Thursday, June 23, 2011
  • 43. SIMPLE NODE.JS SERVER var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(8124, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8124/'); Thursday, June 23, 2011
  • 44. BONUS USE CASE • Browser plugins - just HTML, CSS, and Javascript • http://code.google.com/ chrome/extensions/ getstarted.html Thursday, June 23, 2011
  • 45. DEMO TIME https://mozillademos.org/ demos/nocomply/ demo.html Thursday, June 23, 2011
  • 46. THANKS! QUESTIONS? Pascal Rettig cykod.com Twitter @cykod Thursday, June 23, 2011