Chrome Extensions and the Ultimate Platform


The Chrome browser has never been my favourite for some mysterious (perhaps purely estetical) reason, but I have learned to appreciate it in recent time for the continuous (furious) effort the developer’s team has put into advancing its technology. Recent Chrome betas have been introducing a flurry of new APIs (application interfaces), to give Chrome Apps, simple Javascript programs,  (running as browser extensions) the ability to reach out beyond the confines of the browser screen and perhaps… crossing into the embedded space.

There are new APIs for the Serial Port, Bluetooth, USB, Video, … you name it. Yes, all these new capabilities could be pretty dangerous, but the developers have introduced a way for each application to declare which resources it would like to gain access to (listing them in a “manifest” file)[link] allowing the user to make the conscious / explicitly decision whether to take the risk (and gain functionality)  or deny access on a case by case basis.

There is a powerful (large) set of demo projects that can be downloaded from the Chrome web pages [link]. I definitely had to try and test at least the most basic one. I used the Serial port project to have my Mac dialog (via a USB to Serial bridge naturally) with a bare PIC16F1716 (just because it was laying on my desk) mounted on an otherwise mostly empty breadboard.

I followed the simple instructions to launch the Serial demo application locally on my Macbook browser [link] and …  it that worked  right out of the box( although there was no box involved!) , producing quite a bit of excitement.


I am quite the beginner in Javascript, but the code appeared to be relatively readable and clean.

var connection = new SerialConnection();

connection.onConnect.addListener(function() {
   log('connected to: ' + DEVICE_PATH);
   connection.send("Hello PIC16F1716");

As you can imagine my immediate next question was: “Can I run this on my iPad”?
You see where I am going here… a Chrome (browser extension) application could represent the ultimate example of platform independence. It would be the perfect solution for embedded tools and applications,  liberating them from the constraints/details of the desktop, the operating system, and Babel of incompatible cables and connectors.

Off I went to install the Chrome browser on my iPad Air and … nothing! Unfortunately, for all the effort being put into the desktop version of the browser, there is no corresponding effort on the mobile side to bring the same rich set of APIs. In fact there are no Chrome Extensions at all on any of the mobile platforms (Android included)!

This is something that has been known and lamented by many users and for a long time now, I am just among the last to join this party. So it might be that one of these days (hopefully not in a too distant future) we will get a pleasant surprise and the doors of connectivity will open for all our mobile web apps. Javascript will rule victorious over all other languages that day ( I am still not sure if I like the idea), and just a small BLE module will suffice to connect all our beloved micros, their tools and demo boards to our favourite screens du-jour.

This entry was posted in Languages, PIC16, Tools and tagged , , . Bookmark the permalink.