Spare me the don’t wake up call
Sterling Camden
The telephone jolted me out of a deep sleep at 5:30 AM. Calling so early on the home number, it had to be a family emergency — so I ran into the kitchen to get it. But instead of a relative with bad news, I was greeted by a recorded message from our local school district. School today is canceled, due to snow on the ground and the prospect of more to come.
As a software development consultant, I automatically look for design flaws in any system. Something about waking me up early in order to tell me that I can sleep in late doesn’t seem quite right to me.
The district already makes use of a passive notification system call SchoolReport.org. But I can understand that they worry that parents may not check that service, especially since the snow today appears to be relatively light. So they decided to be pro-active with the Universal Interruption Generator we all know affectionately as the phone.
Why so early, though? Our children are on the earliest schedules in the district, yet we wouldn’t normally get them up for almost another hour. I suppose that the automated call system can only generate so many calls per minute, and so they decided to start early in order to get around to everyone before their scheduled school bus arrival time.
My mind naturally wanders from problem to potential solution. Here’s how I’d design it: Why not have a universal scheduling interface for publishers and subscribers of scheduling information? My alarm clock could be controlled by my own private scheduling client, in which I would define dependencies that determine exactly when I need to wake up. I could then subscribe to notifications from the school district to automatically remove those dependencies when school is canceled. Something like this:
schedule.weekday.onload proc{ |today|
today.onstarttimechange proc{ |newtime| alarmclock.clear.set newtime }
today.add Deadline.new("Kids on bus", 700).after(Task.new("Gather their things", 20).after(Task.new("Feed them breakfast", 10).after(Task.new("Get them up and dressed", 10))))
today.add Deadline.new("Get to work", 900).after(Task.new("Eat breakfast", 40).after(Task.new("Walk dogs", 50).after(Task.new("Get dressed", 20))))
school.oncancelled proc{ |reason|
today.remove "Kids on bus"
fyi.log "school was canceled! " + reason
}
}
The “remove” method would automatically remove all tasks on which the removed deadline/task depends, unless they were also explicitly added to the schedule. So removing “Kids on bus” would also remove “Gather their things”, which would also remove “Feed them breakfast” (let them fend for themselves while I snore), which would remove “Get them up and dressed” (they can stick to their jammies if they like). This would all trigger a recomputation of the day’s start time, which would invoke the proc to clear the alarmclock and reset it to at least 40 minutes later. Without waking me up to a loud and unexpected noise just to let me know.
Posted in Geek Meditations, Get Outta Here |
10 Comments » RSS 2.0 | Sphere it!





Great! Now getting it to market is the challenge.
But I’d rank that one right up there, along with the 300-mpg carburetor, the lifetime tire, and clip-on ties. Oh, wait – I think someone beat me to the clip-ons… drat!
Thanks, Robert. I also need to spec out the publishing interface. Maybe an extension to RSS?
Actually I’ve heard of the 100-mpg carb, but I’ve also heard that the inventor, shortly after filing the patent, disappeared. My father claims to have known him at least through acquaintances.
Was it a Mr. Pogue?
I don’t remember any specific name, I’ll have to ask my dad about it but he’s very sure of the mileage and that it was real.
Nothing like waking up to fear and learning thats some answering machine.
You got that right, Fort Worth Gal. Thanks for reading and commenting!
Yeah she is right. I have woke up to some crazy phone calls.
I’ve gotten to where I turn off the ringer sometimes. Leave a message. Emergency? Sorry about that.
[...] suddenly had a hunch that it might have been the public school district’s automated calling service. It snowed here a few days ago, and it’s still on the ground (now mostly compacted into [...]