The JavaScript of Choice

Thoughts on Kinoma Create and Google Docs Add-ons

“There’s more than one way to do it.”
— Larry Wall, creator of Perl
“More choices make us less happy.”
— Barry Schwartz, The Paradox of Choice

As a species, I think we’re very schizophrenic when it comes to the freedom to choose. We place a high value on maximizing our potential choices, but at the same time, we often resent the anxiety and inefficiency caused by having to decide which of many choices is optimal.

While I’m grateful that our society affords us the luxury of pursuing options ever more specialized to our individual predilections, I find it increasingly pleasurable when I can avoid entirely having to make decisions, especially when such decisions are about means rather than ends.

Perhaps this explains the tremendous enthusiasm I feel for the growing popularity of the JavaScript movement. As JavaScript becomes a credible language in more and more domains, I can standardize my efforts on a single language and assorted libraries and shift my energy from making decisions about tools to making decisions about applications.

Along these lines, I’m particularly excited about two JavaScript-related announcements in the news this week.

Kinoma Create

I first came across Kinoma in October 2010 when they showed me what I have often described as one of the most compelling demos I’ve ever seen.

At the time, I was working for Palm on webOS, the ill-fated mobile operating system that relied on JavaScript and HTML to power its apps. One of our many struggles was webOS’ sluggish performance, and fixing this was a particular priority for Palm’s engineering teams.

Despite hard work by many, webOS’ performance problems were never adequately resolved. And to be honest, just as troubling as the performance problems was that the feature set of HTML wasn’t competitive with iOS.

In light of these factors, some senior leaders in the company had concluded that the combination of JavaScript and HTML wasn’t up to the challenge of creating mobile apps; there was even an internal effort near Palm’s last days to port at least some of webOS’ native apps to Qt.

Back to the demo. What Kinoma showed me was a JavaScript platform they had created that delivered amazing performance on even mediocre mobile devices (e.g., a Windows Mobile 6.5 phone and an old Android handset). I saw videos running in a thumbnail at full speed while the rest of the UI stayed completely responsive and rendered other full-screen animations with nary a glitch. I saw visual effects that even iOS didn’t have at the time, and it was all cross-platform, and all written in JavaScript, and didn’t use a lick of hardware accelerated graphics.

An early version of Kinoma Play; similar to the demo I saw

While Kinoma’s interface design just wasn’t at the same level as Apple or Palm’s, its Play platform was clear proof that JavaScript could perform like crazy. It also left me wondering, “If Kinoma could do all this on middle-of-the-road hardware, what could it do on Palm’s relatively state-of-the-art gear?” Unfortunately, that’s a question that will never be answered.

Since that demo more than three years ago, Kinoma was acquired by Marvell. Back then, their platform was positioned as a replacement for the native environments of mobile devices. Now, in their new role as a division of one of the world’s largest chip manufacturers, they’ve positioned their technology as a platform for the emerging connected devices ecosystem.

To kick off this new journey, the Kinoma crew have created a crowdfunding campaign for an entirely JavaScript-based connected device they’re calling the Kinoma Create.

Kinoma’s Create: A hardware device for JavaScript developers

There are other efforts to use JavaScript to power devices, but none that I’ve seen that offer this level of features and “hackability,” and I’m very excited to see Kinoma playing in this space given their track record. The team has deep experience with high-performance dynamic language run-times running back to the CD-ROM era in the mid-nineties and the leader, Peter Hoddie, was the architect of Apple’s QuickTime.

The use of crowdfunding seems a little unusual given Marvell’s enormous size, but the Kinoma team is using the crowdfunding mechanism explicitly as a way to gauge demand as early as possible in the development process—a sort of pre-order mechanism.

There’s lots more I wish I had time to write about Kinoma; it mates JavaScript to a platform that’s very different from the web (although they do implement HTML5's Canvas API) and has some neat approaches to data binding, component sharing, etc. You should take a look; it’s pretty cool stuff.

Google Docs Add-ons

I’ve been a long-time fan of Google Docs’ built-in JavaScript API. Over the years, I’ve created quite a few mini-applications inside of my spreadsheets to automate various repetitive tasks. I love it! (Though I’m no fan of the Google Doc REST APIs, which I’m hopeful will be better supported in the future.)

Today, Google announced a marketplace for people like me to sell these JavaScript-powered extensions to Google Docs.

Google’s announcement video for Google Docs Add-ons

Check out the current gallery; the current usage is small but perhaps over time this will be built out into a robust and interesting ecosystem. It feels a lot like taking the Unix philosophy of small tools working together and bringing it to personal productivity apps via Google Docs—all glued together with JavaScript.

My 11 year-old daughter is learning JavaScript using General Assembly’s impressive Dash tool. As soon as she’s done learning how to make a CSS-rendered robot dance on the web, I can’t wait to show her how to use JavaScript to make real robots dance or automate some of her homework.

This is one situation where the application—helping my daughter get stuff doneis so much more satisfying to play in than the tools—having to teach her new languages as the domain switches.

JavaScript isn’t the language I would have nominated as the tech world’s lingua franca, but the value of having a common language is so great that it’s pretty easy for me to ignore its shortcomings and just have fun.

Kinoma Create and the new Google Docs Add-ons ecosystem are two more solid steps strengthening JavaScript’s potential to be that common language: a single way to get things done for those who want one. That makes me pretty happy indeed.