Make Things Scriptable

Imagine what homes will begin to look like in the next five years: filling up with smart stuff. Connected devices like the Nest Thermostat, Philips Hue lights, and August Smart Locks are already flying off of shelves. And there’s every reason to believe that the number of connected devices installed in the home will continue to rise. Analysts at Business Insider forecast that by 2019 there will be annual global sales of upwards of 1.8 billion units in the connected devices space.

From a user experience perspective, this growth is good and bad. The good news is that people are getting things they like — new technologies that make their home more useable, add convenience to their lives, and are just plain fun. The bad news is that today’s connected devices feature a disturbing lack of transparency, are impossible to fully customize to our needs, and are dependent upon online service that may or may not continue to exist in the long run.

Transparency is perhaps the greatest threat to the future of the connected devices industry. Devices are collecting a terrifying amount of data on us (or at least have the potential to do so), and we have no real visibility into what they do with it. The public is rightly concerned about stories like this one where Samsung acknowledged that consumers should avoid discussing private information in front of their televisions. Similar concerns exist with Amazon’s Echo platform, wellness/fitness trackers, and more. Users want to know how their data is being collected and need the ability to change how it is being used and distributed.

Customizability is a given in most of today’s technology. An example: imagine that you dislike the alarm clock that came installed on your smart phone. To fix this problem, you simply fire up your phone’s app store, find a better solution, download the app, and immediately use it. If you were so inclined, you could even build a better app yourself. Unfortunately, connected devices have not yet adopted this model. If you don’t like how your smart thermostat works you cannot simply replace its brains with a new app.

Independence from cloud services is a growing issue in connected devices. The fundamental concern is this: what happens to your connected device if the company that made it goes out of business, decides to kill off a service after sales slow, or simply makes a technical error that interrupts service? Often, your connected device will just stop working. Examples abound: the Aether Cone stopped working after Aether and Rdio went out of business; Sony killed the DASH service effectively abandoning thousands of devices; and the Wink platform of smart locks and security devices went dark when an update to security certificates went awry. More recently, Nest announced its intentions to remotely disable its Revolv Hub, leaving customers with a useless piece of plastic. Consumers need to know that it will be possible to keep their devices up and running even when the original manufacturer fails.

Why are these limitations of connected devices accepted by the same people who would not stand for such limitations from their smartphones?

We on the Kinoma team envision a unified solution to these problems and more: making things scriptable. We work with product designers, appliance manufacturers, Makers, hobbyists — everyone who builds connected devices — to embed JavaScript in products as deeply and as early as possible. In essence, we are in the business of helping the world replace conventional product firmware, usually implemented in some mix of Assembly and C, with JavaScript apps.

The benefits of this transition are twofold. First, it makes the product design process easier. For individual Makers, JavaScript is a much more approachable and accessible tool. For corporate product designers, JavaScript developers are much easier to recruit and train than traditional embedded developers. (Some evidence on this point: JavaScript is the most popular language on GitHub and the most-used language of a plurality of developers on StackOverflow).

Second, by building devices on top of JavaScript, it is much easier to leave them open to future customization and changes. If, as a consumer, your smart toaster doesn’t work like you want it to, just replace the JavaScript app that powers it with something new made by a professional app developer, by the community, or by yourself.

Embed JavaScript in products as deeply and as early as possible.

Kinoma provides the tools to enable this transition. KinomaJS, our free, open source JavaScript application framework, is designed and optimized for embedded product development. It is the runtime that sits above a device’s operating system and allows the device to run JavaScript apps. It can easily be extended with native code (usually C) functions when needed or used “as is” to manage a product’s user interface; network connection and interactions with cloud services; and control the device’s sensors, motors, lights, and more.

Kinoma also provides the software needed to develop JavaScript apps on top of KinomaJS, both for professional programmers and relative novices. Kinoma Code is our JavaScript IDE intended to help developers quickly and easily build great product apps. KinomaJS Blocks is our visual programming environment made to help those who don’t (yet) know JavaScript to build KinomaJS apps and customize their own connected devices.

Finally, Kinoma offers two device prototyping kits: Kinoma Create and Kinoma Element. These are players in the same conceptual space as Raspberry Pi and Arduino, but feature our religious commitment to JavaScript as a product development platform. They are the easiest and fastest way to get up and running using KinomaJS to design a product and interact with sensors, motors, LEDs, and more.

Kinoma Create is our full-featured prototyping kit. It is a Linux system running on an ARM SOC to provide a full computing experience for developers, with KinomaJS running on top. It includes a capacitive touchscreen, Wi-Fi, Bluetooth 4.0 (BLE), speaker, microphone, USB port, SD card slot, and a robust enclosure. Additionally, it has 66 expansion pins so that you can plug in your own sensors and components. It is designed to get you up and running quickly, and then stick with you from prototype through to production.

Kinoma Element is a smaller and simpler prototyping option. It is a microcontroller running FreeRTOS and our JavaScript stack. It includes Wi-Fi and 16 expansion pins for sensors and components. It is designed for building more compact embedded products without a screen.

It is our hope that this collection of resources will enable a future of product designers and consumers working together to make better connected devices. The status quo is not sustainable — connected devices cannot remain isolated, opaque, locked down silos indefinitely. The path forward is to achieve the goals of transparency, customizability, and service independence by making things scriptable.