Here's the setup. First, the Mac mini is connected to the projector in the Projection Room above the theater via DVI. Every day, it runs a slideshow before the orientation film. That slideshow contains sponsorship information, museum news, etc.
It's updated once a week or so by someone in the art department (we'll call her "Janie"). Janie's desk is a couple hundred yards and two buildings away from the Projection Room. The Keynote file lives in a Dropbox folder that both Janie's PC and the mini can access. Of course, we don't want Janie editing the slideshow while it's running before a room full of guests. That's where iCal comes in.
We stop showing the film at 4:00 PM and Janie arrives for the day at 9:00 AM, so we set up two repeating iCal events.
The first event launches the slideshow in the morning. Every weekday at 8:45 AM (doors open at 9:00), there's a repeating iCal event with an alarm set to open the slideshow where it lives in Dropbox. Note that the show has been set to run at launch and loop indefinitely in Keynote.
What about updating? Easy. We stop running the slideshow at 4:00 PM and Janie leaves for the day at 5:00 PM. A second repeating iCal event has an alarm that runs the following super-simple Applescript:
Tell application "Keynote"The script does just what you expect -- it kills Keynote. This runs at 4:05 PM each weekday, and frees Janie to spend 10 or 15 minutes updating the file from her PC just before she goes home. The next morning, the first iCal event re-launches the slideshow and the cycle repeats.
That's how two free pieces of software (iCal and Dropbox) combine with an inexpensive, consumer level one to create a simple and effective solution to a problem. Best of all, it doesn't require a computer science degree or even a week with a giant manual. The iCal events and script are invisible to Janie. All she knows is, "I open the folder on my PC, change the slideshow, hit Save and I'm done." Sure, we could have dumped it on a central server, set up some sort of FTP voodoo that would have given Janie a headache, etc. But why? If the simple solution works, use it.
If you try something similar, let me know how it goes. Thanks to everyone who asked about this.