My motivation for creating this blog was to convince you of the importance of being able to talk to your machines by programming them. With that goal in mind, I thought it might be worthwhile to take a look at what sort of devices are already considered “programmable” and what people think that means.
Here’s what I did. I went to amazon.com and searched for the term “programmable” in their Appliances section. If my calculations are correct, Amazon sells 231,647 products in its Appliances section, 452 of which (a mere 0.2%) use the word “programmable” in the product name.
I organized the products into 18 categories ranging from “air conditioner” to “wall control” and counted up how many appeared in each category. One thing I found surprising is that coffeemakers make up more than half of all programmable appliances on amazon.com. On further reflection, this discovery is consistent with my theory that our nemeses in the coming robot apocalypse really just want to make us breakfast.
To get a sense of what these products do, I hunted down user manuals for at least one in each category. Based on this documentation, I was able to further group products by what “programmable” means for each. Aside from one that I couldn’t figure out why it was called programmable (a Meiko dishwasher with its “award-winning MIKE 2 controller” ) and one that I couldn’t get any sense of what the product was intended to do (“GE Part Number RAK148P1 T-Stat 2 Stage H-Pump (Programmable)”), their programming functionality fit into five classes:
Here’s what they do.
For the vast majority of the programmable devices—by which I mean the coffeemakers—programming simply means setting a time at which the device is switched on.
From a logical standpoint, a programmable coffeemaker is a clock radio. Except it makes coffee.
Several other devices came up in the Amazon list with this same basic functionality. There was an air conditioner that can be set to start at a given time and a fan that can be set to turn off after a particular delay. But, the most common kind of product (after coffeemakers, of course) that supports this feature was “slow cooker”. Similar to coffeemakers, which people like to be able to use in their sleep, slow cookers can be set to do their job while people are busy at work.
The slow cookers I looked at sported another class of programmability that I call “‘stats”.
In “probe mode”, the slow cooker can be made to turn off when a target temperature is reached. Logically, this functionality is quite similar to that of a timer. It’s about activating or deactivating a device, but it is based on temperature instead of time. However, the reason that I consider ‘stats a different category from timers is that they are most often used in a feedback loop. In particular, thermostats and humidistats (both of which show up in the Amazon list) and other kinds of ‘stats measure some physical quantity (temperature or humidity, say) and hold it steady. (The “stat” in “thermostat” shares its etymological history with the “stat” in “stationary”.)
What makes a ‘stat cool is that its sensor is sensitive to a condition that its effector corrects. For example, a thermostat in a space heater triggers warming when the room gets too cold. A humidistat in a dehumidifier triggers drying if the room becomes too wet. Similarly, a barostat maintains pressure and a chemostat maintains chemical concentrations, although I didn’t run across either of these on Amazon. I remember many many years ago my father-in-law’s car had an automated windshield wiper that you might call a transparency-o-stat. It activated the wiper whenever the windshield was obscured by rain. It was pretty cool.
Whereas timers are most useful when a device needs to be turned on or off when you aren’t around, a ‘stat is most useful when there’s a quantity that can be controlled without interrupting you. Perhaps one reason the transparency-o-stat didn’t become standard feature in new cars is that you are looking out the window anyway when you are driving—noticing that the window is wet doesn’t require any extra attention.
Household thermostats are often bundled with another programming feature—weekly schedules. In a sense, schedules combine timers and ‘stats with a “sensor” for the day of the week. A schedule in a thermostat is useful because it’s common for people to try to save energy on heating or cooling during the day when they are at work or school. But, during the weekend, things need to be handled differently as people are more likely to be home. Schedule programming lets you specify target temperatures as a function of time of day and day of week.
The interfaces for programming schedules tend to be more complex because of the multiple dimensions (day of week, time, target) that have to be considered simultaneously. The most extreme interface I ran across on Amazon was for a programmable towel warmer that lets you have a toasty warm towel waiting for you at 10pm on a Thursday, if that’s what you want.
The complexity of this interface along with the seeming futility of its purpose (how many people know a week in advance that they need a warm towel at a specific time yet are unwilling to simply turn on a towel warmer as they get into the shower?) make me quite skeptical that this programmable device gets much use. Of course, if we lived in a world where all our devices were programmable (hint, hint), it wouldn’t seem quite as odd. Well, assuming you think towel warmers are normal.
The coolest example of schedule programming that I’ve read about is in the Nest thermostat, which combines schedules, timers, and ‘stats with proximity sensors (to find out whether you really are around on the weekend) and learning algorithms that adapt to your activity patterns and preferences. I plan to write more about Nest in a future blog post.
Amazon sells a dozen programmable breadmakers, and they embody a different kind of “programming”. The process of making a loaf of bread consists of multiple steps like kneading, baking, waiting for the dough to rise, and, sometimes, adding in raisins. Yum. The timing of these steps depends on the kind and quantity of dough used as well as the preferred darkness of the bread at the end. Programmable bread makers have scripts or sequences baked into their controllers (as it were) so you don’t have to spell out the steps yourself each time you use the device.
The breadmaker is “programmable” in that you can select among a baker’s dozen or so of these pre-specified scripts. The device is flexible enough to allow for a huge space of sequences, but the resulting complexity is mostly hidden from you since the useful sequences are encoded in advance.
Blenders, like breadmakers, can carry out sequences of actions with different timings. For example, BarBoss Advance from Vitamix includes a set of scripts for producing different kinds of drinks.
Each of these scripts is bound to its own digit on a dial on the face of the blender. This means, apparently, that putting in the right ingredients, selecting Setting 4, then starting the blender will produce ice cream. What’s not to love about programming?
The cool thing about this blender, though, is that you can connect it to a computer and create your own scripts. You tell the blender how fast to go and for how long, how quickly to ramp up from one speed to the next, and when to add water or ice.
The script you create is downloaded onto a chip that you can insert into the base of the blender, replacing the original pre-programmed scripts with your own “presets”. Using a preset means that the complex sequence you’ve painstakingly created can be called back into being simply by selecting the right setting on the dial.
Presets are a great tool in the programming arsenal. Other examples of devices with presets that I’ve seen include video gaming headsets/keyboards/controllers (allowing you to optimize your interface for “different gaming situations”, whatever that means), microwave ovens (allowing you to lay out different cooking stages that vary in time and power) and, of course, car radios (allowing you to jump to your favorite stations without having to hunt through the whole FM spectrum).
One of the delights of working with a true programming language is that it is possible to combine/compose programming features together in creative and powerful ways. Although none of the devices I encountered on Amazon makes use of this idea, several do combine features in inflexible but interesting ways. For example, the blender I mentioned uses scripts and presets together. The same combination is used in message fans and fryers. Thermostats and towel warmers use schedules and ‘stats. The same combination is used in wall control / ventilation systems. Rice cookers combine timers and presets.
All in all, I think it’s important to note which kinds of programmability have proven popular enough to be included in commercial products. Whether and what kind of programming a product supports boils down to three factors:
- The behavior should be something that you can’t do yourself, either because it’s hard to remember (scripts, presets, schedules), boring or distracting (‘stats), or simply because you aren’t around to do it (timers).
- The behavior should be something that the machine can do on your behalf. Noting the time or temperature is straightforward. Remembering detailed sequences of mixing or baking steps is, you could say, a piece of cake. Recognizing a face, understanding spoken dialogue, or moving with precision in natural environments is still quite harder. (Although progress has been steady.)
- Finally, there must be a way of transferring your goals and intentions from your mind to the machine. At present, the possibilities are still quite limited, but if devices supported general forms of programming and more people were familiar with this form of communication, the cost-benefit analysis would shift.
That pretty much covers it for the “programmable” appliances on Amazon. As they exist today, it’s a little odd that they all are described using the same word. But, if they supported a common programming language, it could make them easier to use and expose the deep connections between the different ways we can ask machines to work on our behalf.