This website is now archived. To find out what BERG did next, go to

Blog posts tagged as 'webapps'

Widgets, widgets, everywhere

There’s been rather an explosion of desktop, mobile, browser and Web widgets. Recently, too, I was groping round the idea of web apps situated outside the computer–but not getting very far. Then I was chatting over email about the Chumby, a cute, carryable, dedicated widget platform… and situated web apps ideas finally locked into focus:

Widgets embedded in everything.

My camera, video camera, phone, mp3 player, TV, DVD player and car stereo all have embedded electronics, a control surface and a display. My washing machine and oven have micro-controllers and an interface–I don’t know whether my house thermostat is electronic, but it could be.

In short: I am surrounded by objects which do things, all with embedded computing and screens. What if I could run whatever applications I wanted to on them? What if, let’s say, each of them was a widget platform, allowing code upload and exposing a hardware API to all sensors and controls?

Hardware as an open platform

If I was a pro-am photographer on a month-long safari shoot, I could grab a custom camera interface from the Web, set up to provide easy-access presets to the light and movement conditions I’d face. I’d repurpose a couple of the external buttons to twiddle parameters in the presets, and have a perfect wildlife interface for four weeks. At home, I’d revert to the general purpose interface or get another one.

If I could sell widgets for compact cameras, I’d sell one that was specially made for nights out. It’d assess the conditions and get the best possible picture given the dark, the necessity of taking a quick shot, and the inability of the drunk person holding the camera to stop swaying.

I’d have an interface on my washing machine that had only the single setting I use. I’d load and set the machine early in the morning or late at night, and it’d then display a red, flashing “ready to go” button that I could slap on my way out of the house, after my morning shower. Perhaps it would use the hardware API to the pressure on the water intake, to refuse to start if the shower was in use.

My TV would use its video buffer and the remote control API to give me a dedicated “record this advert” button.

Hey, maybe I’d even hack my vacuum cleaner and have it fight.

Why can’t I write widgets to run on everything in my pockets and everything in my home? I don’t really mean home automation–I mean using the existing control surface to interface with the hardware in a way that I chose.

I want to download widgets off the Web, scan barcodes with my oven to share recipes with my friends on last.microwave, and hard-code my radio to never miss Radio 4 comedy. This is what I mean about 3C products tapping into creativity, community and connectedness, by the way.

What Nikon should do

Professional Nikon cameras aren’t doing so well against Canon right now. If I were Nikon, I’d document the hardware API to the camera files, the jacks, the display and the controls, stick Bluetooth in it, and throw the camera open as a software platform. Then as a professional purchaser, I’d have a significant decision to make: Do I put down a year’s purchasing power on a Canon, and risk having a Nikon-owning competitor later creating an interface that makes them twice as effective… or get a Nikon so I never get left behind?

Embedded widgets are already here

We already have widgets in some things, of course. My Nokia N70 runs Python, which now has the ability to intercept and send SMS, run full-screen apps, and is provided with APIs to the camera, calendar, contacts, the internet and more. That the small Python app can bridge the hardware API with all the other APIs on the internet, using the existing display and keys, is what makes this so powerful.

Here’s another data-point: The Canon imageRunner series of networked copier/scanner/printers have what they call Java MEAP: A platform to write and run your own apps on the copier. (Thanks Simon Wardley for alerting me.) As this MEAP interview says:

It’s not so difficult to include a variety of useful functions in an application so that anyone can use it. Yet, as user requirements vary widely, the application becomes bloated, impairing its operability. … Users can replace the applications as their needs change and enjoy simple operation.

Exactly. Products made for everyone are complex! Let all of us help out to design them just for our friends. Canon’s doing it for workaday, now give me everyday.

Deploy to desktop

Web apps are currently undergoing a renaissance–or perhaps they’re fulfilling the promise made when the genre was created in 1999. The technology, skills and community that go to make these web apps is beginning to turn in many different directions. We’ll soon see a number of different web app species. One I find most exciting is Deploy to Desktop. What if the same skills needed to build complex web apps could be turned to making desktop applications, starting from a simple web app in a HTML renderer window, and iterating to use native widgets, drag and drop, and full OS integration? (More about this in my App After App talk.)

We’re on the way there. Three data-points for that journey:

Apollo is Adobe’s cross-platform runtime, based on Apple’s WekKit, that lets you run HTML/CSS/AJAX apps on the desktop. It works offline, includes an API for communication between Apollo apps, and will let you write database hooks to a local or remote persistent store. The Apollo wrapper will be distributed free, like Acrobat Reader or the Flash Player (personally I think this is the wrong model–apps should be standalone, but we’ll see). Some Apollo screenshots.

Next is WebKit on Rails which is exactly what I wanted to see when I gave that talk. It makes it easy (well, easier) to take your Ruby on Rails web app, wrap it in WebKit, the Mac HTML renderer, and run it as a desktop app. See the list of existing projects for applications you can already download.

Last up is Pyro, which wraps 37signal’s Campfire browser-based live chat application and turns it into a Mac app. Features include a badged application icon (the number of unread messages are shown), drag and drop upload, scripting support and more. Someday all web apps will be available this way.

Recent Posts

Popular Tags