SlideShare a Scribd company logo
Future of Applications 
Ian Maffett – Intel Software Engineer 
October 28, 2014 
FOWA Boston
 HTML5 Team & the Intel® XDK 
 Tools we use and why 
 Tips/Tricks 
 Final thoughts 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
2 
Overview
The HTML5 Tools team is part of the Software Services Group 
division (SSG). 
SSG employs thousands of developers who work on projects such 
as Android, the Linux Kernel and compilers 
HTML5 team focuses on runtimes, code optimizations, and tools. 
Intel® XDK is a tool to build cross platform mobile applications 
(Cordova) without any native SDKS. 
MASSIVE single page application. 
(most of our team had never wrote a web app before) 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
3 
HTML5 team
The HTML5 team has developers in the following locations 
Lancaster, PA 
Hillsborough, OR 
Santa Clara, CA 
Cordoba, Argentina 
Novosibirsk, Russia 
Hudson, MA 
Merrimack, NH 
China 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
4 
Developers spread worldwide
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
5 
Intel® XDK – build cross platform hybrid 
applications
Quick demo of the Intel® XDK 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
6 
Intel® XDK Flyby
Tools used to build the Intel® XDK 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
7
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
8 
(how many logos can we fit)?
Chromium up front, node in the back. Node Webkit allows us to 
distribute specific versions without requiring the user to install 
anything. Used in apps like Popcorntime and Phonegap Desktop 
Single threaded process. This causes problems with the 
emulator. Users code could hang the XDK with a synchronous 
script load. Had to change to client/server mentality. 
Check it out - https://github.com/rogerwang/node-webkit 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
9 
A desktop app that’s really a web app.
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
10 
Q.js / Promises (breaking callback hell)
Client is built using Backbone and jQuery. We use RequireJS to 
load our components in our application. 
Initial architects created base developer guidelines. *ALWAYS* 
have one in place when starting a new project. Half the team had 
never written a web app before. 
Component based – each component is its own entity, but may 
need to listen to other components for events (like project 
changed). 
Components have their own dependencies too. 
App Designer – uses Angular/LESS.js 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
11 
Front side: Backbone, jQuery and RequireJS
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
12 
Components loaded asynchronously
 Normal “backend” server 
 Client code makes calls via HTTP to “server” components 
 Great for us to write JS for everything. 
 Tests created using Mocha and run by the CI server (and 
developer) 
 UserFS – wrapper to various file systems (native, s3, etc) 
 We were writing the XDK to work on the desktop and “cloud” 
 Growing pains trying to re-implement an FS. 
 Still use some NodeWebkit “magic” for gathering server side 
objects that developers can use CDT to inspect. 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
13 
Server Components (node modules)
Register components from package.json (it is a Node app) 
Wrap server side component calls through a proxy function 
- “local” – direct access through Node Webkit 
- “browser” – make calls via HTTP Request 
Devs run in “local” mode for server side debugging in CDT. 
Switch to “browser” to test installed versions. 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
14 
NW Magic
Components 
Client 
Emulator 
emulator.js 
emulator.css 
Server 
Emulator 
emulator-webserver.js (web server) 
emulator-notification.js (replicate push notifications) 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
15 
Component folder structure (example)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
16 
We almost wrecked the original groundwork.
Adopted Google’s JS style guideline (for the most part). 
Mocha tests for server side. 
Selenium for Client side – created user tests and end to end (E2E) 
tests for Windows, Mac and Linux. 
JIRA for bug tracking 
Crucible for code reviews (which ties into JIRA) 
Team City for CI/builds 
Daily emails about commits/builds 
UI Style guidelines 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
17 
JSHint, Mocha, Selenium and CI to the 
rescue.
If you’ve configured your git hooks properly we have scripts to run 
before the push. These check node modules, commit messages, 
will run jshint, etc. 
CI server will run throughout the day and run tests/jshint. 
Create a code review if needed. 
CI server kicks off daily build kits which then goes through Q/A 
Grunt used to run tests locally and also create our install kits 
(minification, concatenation, etc) 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
18 
When a developer commits…
Tips/tricks/thoughts 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
19
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
20 
Memory becomes an issue 
The browser is not reloaded, so you must manage events 
properly. 
Using established libraries can help with cleaning up orphaned 
children. 
CDT has great tools for tracking down performance issues.
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
21 
Focus on UX (versus regular web) 
Don’t be slower then a full page reload. 
Make the app snappy and fluid. 
Watch flash of content on repaints. 
Remember browser performance of desktop, mobile and other 
devices.
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
22 
Pick the best tools for the project 
Don’t start a massive new project just because you want to use 
tool XYZ. 
Introduce new tools/frameworks on new functionality that can be 
separated. 
* With the XDK being component based, we are testing React.js in 
Brackets and Polymer in the core UI framework.
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
23 
Web apps are so much more these days 
Desktop apps 
Mobile apps 
Websites 
Intranets 
Portals 
IoT companion apps 
In Vehicle Infotainment apps (IVI)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
24 
Not Invented Here syndrome 
This can kill your project. Use existing tools to help scale your 
development cycle. 
Also for UI/UX* - Use existing frameworks and tools. 
*Do invent and share your own projects. There is a thriving 
community right now around JavaScript; join and participate. 
That’s why we are here today.
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
25 
Popcorn time (Desktop/Mobile)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
26 
IoT Companion app 
http://xdk-software. 
intel.com/iot_edition_demo_video/
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
27 
Desktop/Mobile websites
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
28 
Tizen IVI
Questions/comments? 
ian.maffett@intel.com 
@imaffett 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
29
Legal Disclaimer & Optimization Notice 
INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL 
OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL 
ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, 
RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A 
PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER 
INTELLECTUAL PROPERTY RIGHT. 
Software and workloads used in performance tests may have been optimized for performance only on Intel 
microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer 
systems, components, software, operations and functions. Any change to any of those factors may cause the results to 
vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated 
purchases, including the performance of that product when combined with other products. 
Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel 
logo are trademarks of Intel Corporation in the U.S. and other countries. 
Optimization Notice 
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are 
not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other 
optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on 
microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for 
use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel 
microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the 
specific instruction sets covered by this notice. 
Notice revision #20110804 
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 
30
Using JavaScript to Build HTML5 Tools (Ian Maffett)

More Related Content

PDF
Intel® XDK Разработка мобильных HTML5 приложений. Максим Хухро, Intel
PDF
резников дмитрий
PDF
worklight_development_environment
PDF
PDF
Lan 200999999
PDF
Apps multiplataforma com HTML5
PDF
Droid con 2012 bangalore v2.0
PDF
What next
Intel® XDK Разработка мобильных HTML5 приложений. Максим Хухро, Intel
резников дмитрий
worklight_development_environment
Lan 200999999
Apps multiplataforma com HTML5
Droid con 2012 bangalore v2.0
What next

What's hot (20)

PDF
Droidcon ndk cpu_architecture_optimization
PDF
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intel
PDF
Design and Concepts of Android Graphics
PDF
Intelli j idea-report
PDF
Code and Conquer with Globe Labs, October 27, 2012
PDF
Cross Platform Game Development with GDAP, December 2012
PDF
Mobilefirst - Build Enterprise Class Apps for Mobile First
PDF
Forrester reviews the KonyOne platform
PDF
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
PDF
ADOBE CREATIVE SUITE 5 Web Premiumご紹介
PDF
VR-Zone Tech News for the Geeks Dec 2011 Issue 2
PPTX
GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative...
PDF
IPT angular2 typescript SPA 2016
PPTX
Ip in it
PDF
As074lsg
PPT
MTJ Taking Mobile Java Developers to the Next Level
PDF
Corporate Shenanigans
PDF
Android App Development Intro at ESC SV 2012
TXT
グローバルサイン証明書This software
PDF
Eclipse vs Netbean vs Railo
Droidcon ndk cpu_architecture_optimization
Droidcon2013 ndk cpu_architecture_optimization_weggerle_intel
Design and Concepts of Android Graphics
Intelli j idea-report
Code and Conquer with Globe Labs, October 27, 2012
Cross Platform Game Development with GDAP, December 2012
Mobilefirst - Build Enterprise Class Apps for Mobile First
Forrester reviews the KonyOne platform
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
ADOBE CREATIVE SUITE 5 Web Premiumご紹介
VR-Zone Tech News for the Geeks Dec 2011 Issue 2
GPGPU in Commercial Software: Lessons From Three Cycles of the Adobe Creative...
IPT angular2 typescript SPA 2016
Ip in it
As074lsg
MTJ Taking Mobile Java Developers to the Next Level
Corporate Shenanigans
Android App Development Intro at ESC SV 2012
グローバルサイン証明書This software
Eclipse vs Netbean vs Railo
Ad

Viewers also liked (15)

PPTX
2013.02.26 Intel Overview
PDF
Rapid Mbile Pototyping with the Intel® XDK
PPTX
Building html5 apps using Cordova
PPTX
Developing a NodeBot using Intel XDK IoT Edition
PPTX
The Power, and Pain, of Cordova Plugins
PDF
Intel XDK New - Intel Software Day 2013
PDF
Mobile Day - Intel XDK & Testing
PPTX
Intel XDK in Brief
PPTX
Mobile Web Apps and the Intel® XDK
PPTX
INTEL XDK
PDF
Minicurso Intel XDK
PDF
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDK
PPTX
Build HTML5 VR Apps using Intel® XDK
PPTX
Crosswalk and the Intel XDK
PPTX
Intel XDK - Philly JS
2013.02.26 Intel Overview
Rapid Mbile Pototyping with the Intel® XDK
Building html5 apps using Cordova
Developing a NodeBot using Intel XDK IoT Edition
The Power, and Pain, of Cordova Plugins
Intel XDK New - Intel Software Day 2013
Mobile Day - Intel XDK & Testing
Intel XDK in Brief
Mobile Web Apps and the Intel® XDK
INTEL XDK
Minicurso Intel XDK
Desenvolvimento de Aplicativo Multiplataforma com Intel® XDK
Build HTML5 VR Apps using Intel® XDK
Crosswalk and the Intel XDK
Intel XDK - Philly JS
Ad

Similar to Using JavaScript to Build HTML5 Tools (Ian Maffett) (20)

PDF
Developing Multi-OS Native Mobile Applications with Intel INDE
PDF
Começando com Android (#AndroidOnIntel)
PDF
Introduction ciot workshop premeetup
PDF
#MBLTdev: Преимущества использования Intel INDE для кросс-ОС разработки на пр...
PPTX
Multi-OS Engine Technology Overview
PDF
Utilisation des capteurs dans les applications windows 8
PDF
Intel NFVi Enabling Kit Demo/Lab
PDF
In The Trenches Optimizing UE4 for Intel
PDF
Кирилл Мавродиев, Intel – Обзор современных возможностей по распараллеливанию...
PDF
Using Eclipse EMF/GEF to develop an offline designer for identity manager
PDF
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
PDF
NFF-GO (YANFF) - Yet Another Network Function Framework
PPTX
Con8493 simplified ui 2013 tailoring dubois_evers_teter_o'broin_uob_partner
PDF
DSC IIITL Flutter Workshop
PDF
Android on Intel platforms : current state, near-future, future & developers ...
PDF
Efficient Rendering with DirectX* 12 on Intel® Graphics
PDF
More explosions, more chaos, and definitely more blowing stuff up
PDF
OpenStack and z/VM – What is it and how do I get it?
PDF
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
PDF
Intel Technologies for High Performance Computing
Developing Multi-OS Native Mobile Applications with Intel INDE
Começando com Android (#AndroidOnIntel)
Introduction ciot workshop premeetup
#MBLTdev: Преимущества использования Intel INDE для кросс-ОС разработки на пр...
Multi-OS Engine Technology Overview
Utilisation des capteurs dans les applications windows 8
Intel NFVi Enabling Kit Demo/Lab
In The Trenches Optimizing UE4 for Intel
Кирилл Мавродиев, Intel – Обзор современных возможностей по распараллеливанию...
Using Eclipse EMF/GEF to develop an offline designer for identity manager
CODE BLUE 2014 : Persisted: The active use and exploitation of Microsoft's Ap...
NFF-GO (YANFF) - Yet Another Network Function Framework
Con8493 simplified ui 2013 tailoring dubois_evers_teter_o'broin_uob_partner
DSC IIITL Flutter Workshop
Android on Intel platforms : current state, near-future, future & developers ...
Efficient Rendering with DirectX* 12 on Intel® Graphics
More explosions, more chaos, and definitely more blowing stuff up
OpenStack and z/VM – What is it and how do I get it?
Top Java IDE keyboard shortcuts for Eclipse, IntelliJIDEA, NetBeans (report p...
Intel Technologies for High Performance Computing

More from Future Insights (20)

PDF
The Human Body in the IoT. Tim Cannon + Ryan O'Shea
PDF
Pretty pictures - Brandon Satrom
PDF
Putting real time into practice - Saul Diez-Guerra
PDF
Surviving the enterprise storm - @RianVDM
PDF
Exploring Open Date with BigQuery: Jenny Tong
PDF
A Universal Theory of Everything, Christopher Murphy
PDF
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
PDF
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
PDF
Front End Development Transformation at Scale, Damon Deaner
PDF
Structuring Data from Unstructured Things. Sean Lorenz
PDF
Cinematic UX, Brad Weaver
PDF
The Future is Modular, Jonathan Snook
PDF
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
PDF
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
PDF
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
PDF
Designing for Dyslexia, Andrew Zusman
PDF
Beyond Measure, Erika Hall
PDF
Real Artists Ship, Haraldur Thorleifsson
PDF
Ok Computer. Peter Gasston
PDF
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
The Human Body in the IoT. Tim Cannon + Ryan O'Shea
Pretty pictures - Brandon Satrom
Putting real time into practice - Saul Diez-Guerra
Surviving the enterprise storm - @RianVDM
Exploring Open Date with BigQuery: Jenny Tong
A Universal Theory of Everything, Christopher Murphy
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Front End Development Transformation at Scale, Damon Deaner
Structuring Data from Unstructured Things. Sean Lorenz
Cinematic UX, Brad Weaver
The Future is Modular, Jonathan Snook
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Designing for Dyslexia, Andrew Zusman
Beyond Measure, Erika Hall
Real Artists Ship, Haraldur Thorleifsson
Ok Computer. Peter Gasston
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPT
Teaching material agriculture food technology
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Cloud computing and distributed systems.
PDF
cuic standard and advanced reporting.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Approach and Philosophy of On baking technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Advanced methodologies resolving dimensionality complications for autism neur...
Per capita expenditure prediction using model stacking based on satellite ima...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation_ Review paper, used for researhc scholars
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Teaching material agriculture food technology
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Unlocking AI with Model Context Protocol (MCP)
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Cloud computing and distributed systems.
cuic standard and advanced reporting.pdf
Machine learning based COVID-19 study performance prediction
NewMind AI Weekly Chronicles - August'25 Week I
Approach and Philosophy of On baking technology
Empathic Computing: Creating Shared Understanding
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Understanding_Digital_Forensics_Presentation.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Using JavaScript to Build HTML5 Tools (Ian Maffett)

  • 1. Future of Applications Ian Maffett – Intel Software Engineer October 28, 2014 FOWA Boston
  • 2.  HTML5 Team & the Intel® XDK  Tools we use and why  Tips/Tricks  Final thoughts Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 2 Overview
  • 3. The HTML5 Tools team is part of the Software Services Group division (SSG). SSG employs thousands of developers who work on projects such as Android, the Linux Kernel and compilers HTML5 team focuses on runtimes, code optimizations, and tools. Intel® XDK is a tool to build cross platform mobile applications (Cordova) without any native SDKS. MASSIVE single page application. (most of our team had never wrote a web app before) Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 3 HTML5 team
  • 4. The HTML5 team has developers in the following locations Lancaster, PA Hillsborough, OR Santa Clara, CA Cordoba, Argentina Novosibirsk, Russia Hudson, MA Merrimack, NH China Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 4 Developers spread worldwide
  • 5. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 5 Intel® XDK – build cross platform hybrid applications
  • 6. Quick demo of the Intel® XDK Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 6 Intel® XDK Flyby
  • 7. Tools used to build the Intel® XDK Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 7
  • 8. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 8 (how many logos can we fit)?
  • 9. Chromium up front, node in the back. Node Webkit allows us to distribute specific versions without requiring the user to install anything. Used in apps like Popcorntime and Phonegap Desktop Single threaded process. This causes problems with the emulator. Users code could hang the XDK with a synchronous script load. Had to change to client/server mentality. Check it out - https://github.com/rogerwang/node-webkit Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 9 A desktop app that’s really a web app.
  • 10. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 10 Q.js / Promises (breaking callback hell)
  • 11. Client is built using Backbone and jQuery. We use RequireJS to load our components in our application. Initial architects created base developer guidelines. *ALWAYS* have one in place when starting a new project. Half the team had never written a web app before. Component based – each component is its own entity, but may need to listen to other components for events (like project changed). Components have their own dependencies too. App Designer – uses Angular/LESS.js Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 11 Front side: Backbone, jQuery and RequireJS
  • 12. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 12 Components loaded asynchronously
  • 13.  Normal “backend” server  Client code makes calls via HTTP to “server” components  Great for us to write JS for everything.  Tests created using Mocha and run by the CI server (and developer)  UserFS – wrapper to various file systems (native, s3, etc)  We were writing the XDK to work on the desktop and “cloud”  Growing pains trying to re-implement an FS.  Still use some NodeWebkit “magic” for gathering server side objects that developers can use CDT to inspect. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 13 Server Components (node modules)
  • 14. Register components from package.json (it is a Node app) Wrap server side component calls through a proxy function - “local” – direct access through Node Webkit - “browser” – make calls via HTTP Request Devs run in “local” mode for server side debugging in CDT. Switch to “browser” to test installed versions. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 14 NW Magic
  • 15. Components Client Emulator emulator.js emulator.css Server Emulator emulator-webserver.js (web server) emulator-notification.js (replicate push notifications) Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 15 Component folder structure (example)
  • 16. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 16 We almost wrecked the original groundwork.
  • 17. Adopted Google’s JS style guideline (for the most part). Mocha tests for server side. Selenium for Client side – created user tests and end to end (E2E) tests for Windows, Mac and Linux. JIRA for bug tracking Crucible for code reviews (which ties into JIRA) Team City for CI/builds Daily emails about commits/builds UI Style guidelines Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 17 JSHint, Mocha, Selenium and CI to the rescue.
  • 18. If you’ve configured your git hooks properly we have scripts to run before the push. These check node modules, commit messages, will run jshint, etc. CI server will run throughout the day and run tests/jshint. Create a code review if needed. CI server kicks off daily build kits which then goes through Q/A Grunt used to run tests locally and also create our install kits (minification, concatenation, etc) Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 18 When a developer commits…
  • 19. Tips/tricks/thoughts Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 19
  • 20. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 20 Memory becomes an issue The browser is not reloaded, so you must manage events properly. Using established libraries can help with cleaning up orphaned children. CDT has great tools for tracking down performance issues.
  • 21. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 21 Focus on UX (versus regular web) Don’t be slower then a full page reload. Make the app snappy and fluid. Watch flash of content on repaints. Remember browser performance of desktop, mobile and other devices.
  • 22. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 22 Pick the best tools for the project Don’t start a massive new project just because you want to use tool XYZ. Introduce new tools/frameworks on new functionality that can be separated. * With the XDK being component based, we are testing React.js in Brackets and Polymer in the core UI framework.
  • 23. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 23 Web apps are so much more these days Desktop apps Mobile apps Websites Intranets Portals IoT companion apps In Vehicle Infotainment apps (IVI)
  • 24. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 24 Not Invented Here syndrome This can kill your project. Use existing tools to help scale your development cycle. Also for UI/UX* - Use existing frameworks and tools. *Do invent and share your own projects. There is a thriving community right now around JavaScript; join and participate. That’s why we are here today.
  • 25. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 25 Popcorn time (Desktop/Mobile)
  • 26. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 26 IoT Companion app http://xdk-software. intel.com/iot_edition_demo_video/
  • 27. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 27 Desktop/Mobile websites
  • 28. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 28 Tizen IVI
  • 29. Questions/comments? ian.maffett@intel.com @imaffett Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 29
  • 30. Legal Disclaimer & Optimization Notice INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. Optimization Notice Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804 Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as Optimization Notice the property of others. 30

Editor's Notes

  • #12: Components/client Components/server Public/ * (index.html and other global assets