LanguageMatters:JavaScript

fromIoTProductConcept

toProduction
AndyCarle,PhD

@PrototypingAndy

@Kinoma
@dothingscon
December3,2015
@kinoma
@kinoma
Scope:ConnectedDevices
Expand the

Developer Pool
Improve Outcomes for

Existing Developers
TwoGoals
Web Front-End
Developers
Product
Designers
@kinoma
Processing Developers
Native
Language
Developers
Node.js & Python Developers
Tools:
Low-Level Languages & 

Bare Dev Boards
Process: 

Waterfall Method
TwoHurdles
@kinoma
Verification
Maintenance
Requirements Product requirements document
Design Software architecture
Implementation Software
TwoSolutions
Tools:

JavaScript and Beautiful 

Prototyping Hardware
Process:

Iteration at Every Step
@kinoma
ITERATE
ITERATE
ITERATE
MakingIt:TheOld(Current)Way
Ship it!
Get funding
Prototype on
Arduino
(Processing)
Prototype on
BeagleBone/Raspberry Pi
(Interpreted languages)
Prove concept Abandon
all progress
Learn that platform
isn’t production-ready
Learn native
language
Re-build it all
on target platform
A YEAR
LATER
@kinoma
ITERATE
ITERATE
ITERATE
MakingIt:TheOld(Current)Way
Ship it!
Get funding
Prototype on
Arduino
(Processing)
Prototype on
BeagleBone/Raspberry Pi
(Interpreted languages)
Prove concept Abandon
all progress
Learn that platform
isn’t production-ready
Learn native
language
Re-build it all
on target platform
A YEAR
LATER
The Chasm of Despair
@kinoma
WeShouldBeDoingBetter
DESIGN PROTOTYPE TEST
ITERATE
1.SoftwareSimulation
2.HardwareSimulation
3.PrototypingHardware
4.CustomHardware
DESIGN PROTOTYPE TEST
ITERATE
DESIGN PROTOTYPE TEST
ITERATE
DESIGN PROTOTYPE TEST
ITERATE
@kinoma
• Preserve progress between prototypes
- Application code
- I/O libraries
- Look & feel
• Saving time allows you to focus on
- Industrial design
- Companion app
- User testing
- Community building
Don’tRe-Engineer;ExpandPriorities
- Crowdfunding campaign management
- Investor relations
- Building a brand
@kinoma
IoT’sDiversityMakesTraditional

SoftwareDevelopmentImpractical
• network connectivity
• cloud services
• sensors
• power requirements
• business rules
• security
Different
@kinoma
• be updated
• implement new features
• support the latest mobile
companion app
• connect to new cloud
services
• fix security problems
They must
@kinoma
IoTProductsareNotStatic
Web (Desktop)
Mobile (Apps and Web)
Server
Embedded
JavaScript’sFrontierLefttoConquer
@kinoma
We are preaching the religion of JavaScript for
embedded and Internet of Things development
• Performance
• Memory
• User scripting
• Familiar syntax
• JavaScript coders build cool stuff fast
JavaScriptMakesIoTDevelopmentUsable
@kinoma
JavaScriptastheLanguageofIoT
• programmers work faster
• produce more reliable code
• it’s trivial to connect to the
cloud and other devices
• reading and writing JSON
messages is built in
With JavaScript
@kinoma
ES6 contains more than 400 individual changes to:
• make the language more concise
• improve performance
• integrate support for modules
The addition of modules to the language is
fundamental to architecting reliable, long running
devices, making JavaScript 6th Edition the right
foundation for connecting IoT products.
JavaScript6thEditionforIoT
@kinoma
PopularFrameworksAren’tIoTReady
• Browser-based solutions: Too heavy for IoT devices
• Node.js: Server solution being shoehorned into the
embedded space
• Qt: Designed for desktop, too much of a catch-all of
features
• Lua: Less popular than assembly and COBOL, so difficult
to find talent and no significant ecosystem
@kinoma
Available as open source since March
2015. Customers benefit from the flexibility
and stability that open source offers.
The first application framework optimized for
IoT that speaks the language of the web. Code
hardware projects using familiar JavaScript.
Kinoma’s implementation of JavaScript
6th Edition is the smallest, the most
complete today, and fast.
KinomaJS
@kinoma
@kinoma
KinomaJS
Render digital
media
• Photos
• Music
• Video
Manage the
hardware
• Power
• Sensors
• Schedulers
Operate the

user interface
• Buttons
• Lights
• Screens
Coordinate

communication
• Network
• Devices
• Cloud
@kinoma
IDEandVisualProgramming
Studio
Kinoma’sIoTProductDesignHardware
Customizable products for prototypers:
• integrate professional-grade
hardware
• use the open source KinomaJS
application framework with
JavaScript 6th Edition for app
development
• use the same pro-developer tools,
making prototyping efficient
across product teams
@kinoma
@kinoma
UsabilityasaFirst-OrderDesignGoal
Kinoma Create
@kinoma
BothDelicateandIntimidating
• No Wi-Fi
• No case
• No battery
• No screen
• No onboard apps
WhyKinomaHardwarehasaCase
@kinoma
Assemblingyour
RaspberryPi enclosureis
relativelystraightforward
ifyou’veeverbuiltany

t-slotbasedlasercut
stuffbefore,buthere’s
afullguide…
-BuilttoSpec
“
”
@kinoma
@kinoma
OnboardAppsv.theCommandLine
@kinoma
@kinoma
IntroducingKinomaElement
@kinoma
IntroducingKinomaHD
• Bring most any sensor
• Connect to most any cloud
• Use most any protocol
• Open for developers to expand
• PCB designs
• 3D design files for case
• KinomaJS software
• All on GitHub with permissive
open source licenses
Opensensor.Opencloud.Opentoexpand.
@kinoma
Thankyou!
AndyCarle,PhD

@PrototypingAndy

@Kinoma
kinoma.com

Language Matters: JavaScript 
from IoT Product Concept 
to Production