I’m sure I’m only the millionth person to ask this, but the other day I was looking at digital cameras and wondering if I could get one that’s controllable from my PC, which I was told in no uncertain terms doesn’t exist. I apparently can’t buy a camera that I can plug into a USB port, and have some Python module that I can run that says “Take a picture, and save it on my hard drive every five minutes”. Maybe more importantly, I can’t buy a camera that I can plug in to a wall socket in the morning and say “between noon and five, record what goes on outside my window”.

I can do that with a webcam, but I can’t do it with a full-sized camera that isn’t tethered and pretending to be a webcam, and definitely not on a standalone camera. That’s just one thing, though – why can’t I tell my cellphone that between midnight and five in the morning, only these whitelisted numbers are allowed to make my phone ring, but they should ring loud? Or tell my car that it’s me, not Arlene, so fire up my half of the mp3 collection, not hers?

Where, I guess, are my scriptable devices?

One of the things that’s more frustrating about the ongoing “computer revolution” than any other thing, and I’d bet for a lot of people more frightening, is that there are computers are all over the place making decisions on our behalf, but we frequently have zero input as to what those decisions are past the initial purchase. There are microprocessors of one kind or another in damn near everything these days, and especially in smaller devices the interfaces are these horrible, tiny little things with buttons the size of a child’s fingertip and a display that looks like a five-dollar digital watch. Phones, radios, thermostats, cameras, belt buckles, this stuff is everywhere, and I can’t tell any of it what to do if I’m not standing right there twiddling the knobs.

Basically, I want to be able to delegate paying-attention-to-stuff and doing-things-routinely stuff to widgets with processors in them, in the hopes that I wouldn’t have to babysit them, and might be able to get them to do neater things. Do these wonderful toys exist? I can’t find them, if they do.


  1. Amos
    Posted January 18, 2006 at 1:53 pm | Permalink

    The MP3 players made by SlimDevices ( are controlled by an ever-growing open source perl script. It’s great for that sort of thing.

    There was a car MP3 player based on a small computer in limited production a few years ago that was, I believe, also controlled by open source software. People were doing neet things like hooking a pressure switch up to its serial port and then hiding the switch under the passenger seat cushion. Then the computer would know if there was a passenger, and if there was, it would cleverly omit certain tracks. I believe the first application was to filter out all the AQUA tracks when there was anyone riding with him.

    Soo.. what can I say… support the open platforms. I suspect we’ll get there eventually.

  2. Michael Bruce
    Posted January 18, 2006 at 3:05 pm | Permalink

    I know that Canon digital cameras come with a Windows program that lets you control them. I have no idea whether or not someone has cooked up a linux utility to do this. I imagine its practical use would be limited, since most cameras don’t run on USB power, and so you’d be limited by battery life.

  3. Mike Hoye
    Posted January 19, 2006 at 12:24 am | Permalink

    Yeah, there’s a few things available via the Photopc project, but they’re still all tethered-camera stuff.

  4. Posted January 19, 2006 at 6:46 pm | Permalink

    The main thing is, if you’re going to write a cross-platform SDK for your device, it’s going to cost you time and money. And if you’re going to spend time and money doing that, you’d better have a damn good idea how you’re going to recoup it. I expect that a Python-scriptable camera would net Nikon or Canon about 0.001% extra sales, so not really something they’re going to spend a lot of time on, you know?

  5. Mike Bruce
    Posted January 21, 2006 at 3:14 am | Permalink

    Hardly anyone ever asks for an actual SDK, as such. Mainly they just want basic protocol information, for how devices communicate over the wire or bus or whatever.