Hardware, Software & the Internet of Things
June 23–25, 2015 • San Francisco, CA

Programming the Internet of Things with Node.js and HTML5

Michael McCool (Intel), Rex St. John (Intel), Ramesh Peri (Intel)
9:00am–12:30pm Tuesday, 06/23/2015
Tutorial, Technology
Location: Fleet Room (Bldg D)
Average rating: **...
(2.81, 26 ratings)
Slides:   1-PDF 

Prerequisite Knowledge

Software development experience is necessary. Some background in web development would be useful (especially Javascript) but is not mandatory, as the tutorial will cover the necessary basics. Likewise experience in embedded systems would be useful but it not mandatory.

Materials or downloads needed in advance

It would be helpful but not essential for the attendees to download and install the sample code and the Intel XDK IoT Edition to their computers (Linux, Windows, and Mac are all supported) prior to the tutorial.


JavaScript is a powerful option for programming the Internet of Things (IoT). It can be used for programming both endpoint devices and web services, using Node.js. Javascript can also be used to develop portable user interface apps that can run on literally any device, using HTML5. Finally, Javascript is standardized (as ECMAScript) and supported by high-performance implementations (eg Google’s Chrome V8, the Javascript engine used in Node.js).

In this tutorial attendees will be walked through the development of a simple but complete “hello world” distributed IoT service, a “smart light” programmed entirely in JavaScript. The demonstration system will be based on the Intel® Edison compute module and the Seeed* Grove prototyping system, so it will be possible for users to replicate the system and develop it further on their own. The complete system will use Node.js code running on both a server and on the embedded device controlling the light, and the development and integration of a UI based on HTML5 which can be either served to or installed (as a hybrid app) on a phone.

In this tutorial we will:

  • Present the Node.js and HTML5/Javascript programming models for IoT
  • Show how high-level communications between different devices can be accomplished using web APIs, web sockets, and/or remote procedure calls
  • Demonstrate an integrated IDE, the Intel® XDK IoT Edition, that can support both Node.js and HTML5
  • Develop a complete distributed IoT system using only Javascript.

All software, including code samples and the Intel® XDK IDE, will be available free of charge.

Photo of Michael McCool

Michael McCool


Intel Principal Engineer Michael McCool has degrees in computer engineering (University of Waterloo, BASc) and computer science (University of Toronto, M.Sc. and PhD.) with specializations in mathematics (BASc) and biomedical engineering (MSc) as well as computer graphics and parallel computing (MSc, PhD). He has research and application experience in the areas of data mining, computer graphics (specifically sampling, rasterization, path rendering, texture hardware, antialiasing, shading, illumination, function approximation, compression, and visualization), medical imaging, signal and image processing, financial analysis, and parallel languages and programming platforms. In order to commercialize research work into many-core computing platforms done while he was an associate professor at the University of Waterloo, in 2004 he co-founded RapidMind, which in 2009 was acquired by Intel. Currently he is a software architect with Intel working on programming models for both parallel computing on the one hand, and embedded systems (including internet-enabled embedded systems) on the other. In addition to his university teaching, he has presented numerous tutorials at Eurographics, SIGGRAPH, and SC on graphics and/or parallel computing, and has co-authored three books. The most recent book, Structured Parallel Programming, was co-authored with James Reinders and Arch Robison. It presents a pattern-based approach to parallel programming using a large number of examples in Intel Cilk Plus and Intel Threading Building Blocks. Most recently, he is collaborating with the Intel Edison team on the development of a suitable programming model that combines low-level high-performance device control with sophisticated internet capabilities.

Photo of Rex St. John

Rex St. John


Rex St. John is a software engineer, community organizer, and hardware hacker who evangelizes Intel® Mashery™ APIs and New Devices Group hardware (such as Intel® Edison) at hackathons, workshops, and conferences around the U.S. He relies on his experience in iOS*, Node.js*, Ruby on Rails*, Bluetooth* LE, and Android* software development to help developers succeed with Intel Internet of Things (IoT) technologies and services. Rex lives in the Capitol Hill neighborhood of Seattle, and organizes three meetups: Seattle API Meetup, DeviceJam! (a collaboration with Microsoft Garage), and Seattle Mobile Apps. He is a regular volunteer for causes that help more people learn to code.

Photo of Ramesh Peri

Ramesh Peri


Ramesh is architect of IoT Devkit and Android tools at Intel, working on compilers, debuggers, and profilers for Intel mobile/IoT platforms. He is an expert in mobile/IoT platforms and spent over two decades working on a number of processors that include DSPs, micro-controllers, and a variety of application processors based on ARM and x86 architectures. He presented papers at research conferences and developed training materials for effective use of Intel software development tools to optimize for power and performance across Intel platforms, from embedded systems to large high-performance systems. Ramesh has been at the forefront of getting Intel platforms into the embedded space, and worked with a number of OEMs and ODMs for optimizing the platforms for power and performance. He holds a Ph.D in computer science from the University of Virginia, an MS from IIT Kanpur (India), and a BS from REC Warangal (India).

Comments on this page are now closed.


Picture of Michael McCool
Michael McCool
06/26/2015 6:51am PDT

Notes are now posted as PDF files on this page; look for the link above. Hardware kits are easy to get from Seeed; get an Edison kit with the Arduino adapter and a Grove Starter kit (the one “for Arduino” is fine). You may also want a 12V power supply (or a 9V battery) and a will need a couple of micro-USB cables (which most people will already have lying around). I am working on getting the code posted publically and will post a link here when it is ready. In the meantime, if you were NOT at the course and want the code, please email me.

Bennett Clews
06/24/2015 4:18am PDT

Really disappointed to have missed this tutorial yesterday. Were the hardware kits purchasable on the day? If so, is it possible to pick up a hardware kit somewhere onsite anytime during the conference? Many thanks.

Venu Dharmapuri
06/23/2015 6:32am PDT

where can i find the slides for this talk

Picture of Jonathan Bruner
Jonathan Bruner
06/10/2015 10:11am PDT

@Bob It certainly will! Keynotes will be streamed live; workshops and sessions will be available as video downloads afterward, and through Safari, our all-you-can-eat subscription service (like last year’s: https://www.safaribooksonline.com/library/view/solid-conference-san/9781491904657/)

Bob Bonomo
06/10/2015 10:02am PDT

Will this awesome conference be webcast live or recorded for playback?