Programming Your Own Jibo

This is Andy Atkins, VP of Engineering here at Jibo.

First off, I want to send out a big "Thank You" to all of you for the overwhelming show of support you have given Jibo since we've launched our crowdfunding campaign. Your contributions, questions, and the "buzz" you've helped create, confirms that we're on to something here, and we want to be as transparent as we can about what we're doing and where we are.

As I've been wading through the email that has come in since we've launched the campaign, it is clear that many of you are dying to learn more about Jibo, its applications and capabilities, privacy and security, as well as how one might develop additional "skills" for Jibo. In response, we'll continue to update our FAQs to address as many of your shared questions as we can.

Over the coming weeks and months, I'll also invite other members of my development team to jump on this blog and dive more deeply into specific aspects of our technology. We might cover topics like how we're using Jibo's hardware for sensory input, our use of behavior trees to monitor that input and drive Jibo's expression system, our plans for the Jibo ecosystem, news regarding Jibo's speech recognition system, and so on. And we plan to share taped demos and updates of work in progress, to give you a better sense of where we're at. Let us know what technical topics you'd like us to cover, and we'll try to accommodate.

There are many ways to stay connected with us. Beyond following us on Twitter and Facebook, I encourage you to keep an eye on this blog (and, of course, welcome feedback via the Comments section). And once we get closer to releasing a preliminary version of our SDK (still many months off), we'll open the Developer Forums to facilitate more two-way communication.

Finally, you might have already noticed that we just added new stretch goals to our campaign. Of particular interest to me are the four Hackathons we hope to host in October 2015 here in the Bay Area as well as in Boston, where a small group of you will have the opportunity to work with members of my team to produce new "skills" for Jibo. We'll award prizes for the best hacks, and along the way, get you some press exposure. These should be fun, intense coding sessions, and we'll have more details as we get closer to the events.

For today's blog, I'd like to cover our goals and plans for the JiboAlive Toolkit and SDK.

I've always enjoyed making things. As a kid, I loved my Legos, constructing hugely elaborate buildings with doors, windows, roof tiles, and the like. In college, I was fascinated with hardware and built my own alarm clock that featured a relay that could switch the power to my stereo on and off.  (Have you ever created your own printed circuits by dipping copper-clad boards in acid baths? Very cool!)

But as I indulged my curiosity, I quickly discovered that building things was not enough. I wanted to empower others to create cool things that leveraged my work. Early in my career, I led the team at Apple to create the networking APIs (application programming interfaces) on Newton that enabled an outside developer to build one of the world's first mobile web browsers. A few years later, my team at Danger created a highly-advanced SDK (Software Development Kit) that, at the time, supported Java application development, cloud computing, and an application store for T-Mobile's Sidekick mobile phone, predating the introduction of the iPhone.

So the common theme of my career is not just building new products, but building software, hardware (and now, cloud) platforms upon which others can add value. This is why I'm so excited about what we're doing at Jibo. Were we "just" developing a product around Cynthia's vision of a social robot -- that would be quite revolutionary in its own right. But we're doing more -- creating a platform and ecosystem that'll empower developers (and aspiring developers) to build applications on top of what we're creating.

Early on, we defined two (seemingly contradictory) goals for Jibo's developer tools:

  1. Make programming new behaviors on Jibo as easy and accessible as possible, and
  2. Support professional tools for professional developers.

To make Jibo programming as accessible as possible, we looked at what's out on the market today. Programming for iOS or Android is certainly easier than writing embedded C/C++ code --- but there is still a learning curve associated with writing Java and Objective-C, and we wanted to make programming for Jibo even easier.

Over the past several years, we've noticed that scripting languages like JavaScript were maturing nicely, had a much lower learning curve, and environments like Node.js really made JavaScript viable outside of a browser. Coupled with that, scripting language interpreters (like Google's V8 and Webkit's JavaScriptCore) were getting faster and faster on embedded devices. So much so, that my last team at Netflix had adopted JavaScriptCore as the engine that now drives almost all of the Netflix applications on smart TV's and gaming consoles.

So we'll be doing something similar with Jibo -- using JavaScript as our application programming language, built on top of the superb environment supported by Node.js, with V8 as the underlying scripting engine.

But this still isn't easy enough for someone just getting into programming. Last year, when my daughter was learning how to program in school, her teacher used Scratch to introduce basic programming concepts. I was particularly impressed with Scratch's graphical interface and the fact that it was all web-based. No intimidating text files, command lines, IDEs, nor Make files; just drag and drop with a built-in simulator.

While we won't be using Scratch for Jibo, we are borrowing the concept of a web-based graphical interface for adding behaviors to Jibo. This tool will help developers create behavior trees that define the sensory input to watch (e.g. a spoken phrase, a specific touch to Jibo's face or body, or visual data) and drive the resulting response by Jibo (e.g. an animated movement, sound, visual, or a spoken phrase). Anyone with a modern web browser should be able to use our web tools to add new behaviors to Jibo. And we're planning to create a web-based simulator as well, for testing out newly-constructed behavior trees before sending them to your Jibo robot for testing there.

Coupled with these web-based tools, we plan to release a library of expressions (animations, face graphics, and spoken phrases), so that you can quickly plug together components to add custom behaviors to Jibo. These web-based tools and expression libraries will comprise our JiboAlive Toolkit.

But we know that this is not enough for some of you, and so we also plan to release our full set of JavaScript APIs (as well as a plug-in for the Eclipse IDE for those who want this), so that serious developers can create full applications using our interfaces. This will become our JiboAlive SDK.

I hope this begins to give you an idea for what we're trying to do here regarding supporting you, our developers and hobbyists. We don't want Jibo to be a "toy" that you use for a couple of hours, then throw into your closet; we want Jibo to become a healthy platform and vibrant ecosystem that supports both casual developers who just want to "play around" with customizing Jibo, as well as professional developers who might want to add real value to the Jibo ecosystem (and, or course, sell their applications through our appstore).

As we get further along developing the JiboAlive Toolkit and SDK, we'll come back to this blog with status, demos, and more details. So hang on tight -- it's going to be a wild and exciting ride!

ANDY ATKINS is an experienced technology executive, formerly with Netflix, Danger/Microsoft, and Apple, having delivered new hardware-software platform experiences and ecosystems in consumer technology.