Last September we bought a new dishwasher to replace the old one that had failed. It was a reluctant purchase. We’d actually gone a couple of years doing dishes by hand, partly because we’ve been so disappointed by the modern generation of appliances. When the salesman at Sears mentioned their free 5-year preventive maintenance program, though, we decided to opt in. The plan entitles you to an annual appointment with a dishwasher tech who will come by to inspect your machine and do what’s needed to keep it in good working order.
Stoves, dishwashers, and vacuum cleaners shouldn’t require this kind of life support. I’m not going to win that argument, but I can at least make effective use of the life support service. Doing so requires a bit of a hack, though. Why? Remembering something annually, on a certain date, for five years running, isn’t the sort of thing that humans do well. It’s a task that begs for automation.
Of course Sears could remind me, in September of 2011, 2012, 2013, 2014, and 2015, about my dishwasher checkup. It would be easy for them to do. They’re a mega-corporation with a mighty IT department that can easily perform this feat of magic. But Sears doesn’t want to remind me. They’re betting that I’ll forget, as I’m sure most people do.
So they sounded quite surprised when I called yesterday, on the anniversary of my dishwasher purchase, to schedule my appointment. How did I do it? By casting this magic spell:
BEGIN:VEVENT DTSTART;VALUE=DATE:20110902 DTEND;VALUE=DATE:20110903 RRULE:FREQ=YEARLY;COUNT=5 SUMMARY:sears dishwasher END:VEVENT
That’s an event recorded by my calendar program. It happened first on September 2, 2011, and will happen again yearly for five years. I cast my spell using Outlook but you can do the same thing using any calendar program: Google Calendar, Apple iCal, Hotmail Calendar, Lotus Notes, many others.
When I talk about iCalendar feeds in the context of the elmcity project, I tend to focus on the idea that these are data feeds, which they are. But iCalendar has a special property. Some of that data is actually code. In this example, here is the one line of code:
RRULE:FREQ=YEARLY;COUNT=5
In iCalendar lingo, RRULE means recurrence rule. From Outlook’s or Google Calendar’s point of view the rule is a tiny program and they are the operating systems that run it. Here are some other RRULES that calendar applications enable you to express:
every Tuesday at 10AM
every first Sunday until October 2011
every September 2 for five years
You don’t have to do it this way. You can, instead, record each event separately. Even though calendar software makes it quite easy to define repeating events, I’ve got a hunch that in the dishwasher scenario a lot of people would use data (five discrete events) rather than code (one event that expands to five). Why? For the same reason that many people will manually adjust the font size used for every paragraph in a document, rather than creating a rule that governs all the paragraphs.
My list of core principles for web thinkers doesn’t yet include the idea of code that generates data. I’ve found it plenty challenging just to get people to think about the nature of their data, about how they do or don’t control it, and about how it does or doesn’t flow through networks.
But if we want everyone to be able to automate tasks that otherwise get done poorly or not at all, we probably do need to find a way to teach patterns like code-generated data and Don’t Repeat Yourself more broadly than just to students of computer and information sciences.
If you want to read a lovely short essay on calendar software and our relationship to the future, I highly recommend Paul Ford’s Tickler File Forever.
“Remembering something annually, on a certain date, for five years running, isn’t the sort of thing that humans do well.”
Don’t disagree with any of your points, but I would say that annual events are the sort of thing that _modern_ humans do not do well. Historically humans have been extraordinarily attuned to annual cycles of agriculture, climate, hunting, etc., Our survival has depended on remembering this stuff – and our talents with astronomy, mathematics, and the like may have something to do with that…. The leaves are gold on the edges: time to call the dishwasher guy!
Great point! Are we less calendrical? And if so is it because we are less astronomical? Dunno but both seem plausible.
Some rambling thoughts:
I’d love to see a computing platform that was designed from the ground up with the goal of making programmability (and thus automation) a prominent and ubiquitous part of it.
I’m not talking about just making programmability possible — I know that many existing platforms support that to differing degrees — but having it as one of main goals of the system, supported at a fundamental level, and aiming at making it as easy to do as possible and as ubiquitously applicable as something like cut-and-paste is.
I think the idea of a ubiquitous general concept is important, as it gives people a greater opportunity to learn the concept.
This might involve deeply embedding means to support automation into the basic UI concepts used throughout the programs run on that platform.
(Not saying that this would be easy or that I just expect someone should do this on my behalf, though!).
@James: Of course Unix and friends fit that description. For most folks, though, the seemingly palatable alternative — macro record and playback — has never sufficed. Hard problem.
But what did the service person find/do??? Please do not leave us in the dark.
Did the dishwasher need new parts, firmware, filter upgrades??? Enquiring minds
want to KNOW!
Thanks
Sine Nomine
Dunno yet. Appt. is for 9/16, will report back then.
I guess you have been busy. Still would like to know what happened with
the Dishwasher service call.
Thanks
Sine Nomine
Sine Nomine: He came, he inspected, he pronounced it good, I will see him again next September.