Fix calendar slowdowns
The other day, my wife noticed a sharp decline in the responsiveness of BusyCal on her iMac. In particular, when she clicked an arrow button to move forward or backward a month, there was a long delay between the click and when the screen shifted to the new month.
I tested out the copy of BusyCal on my Mac Pro. To my surprise, I had the same slowdown symptom. Given that this was a recent symptom and that we share calendars, I figured the cause was more likely due to some issue with our shared data than to the application itself. The most likely culprit was the large number of events we maintained. An abundance of events is a known cause of slowdowns affecting both iCal and BusyCal.
Why do we have so many events in our calendar database? It’s not because we are social butterflies. Rather, it’s because we do not delete any past events. To be more specific, my wife refuses to delete past events. She wants our calendar to serve as an easily-accessible record-keeping archive. This allows her to check on what she did or did not do on a given day, going back years.
Apparently, as our backlog of past events accumulated, BusyCal began to lag more and more—until we reached the point of our current slowdown. The quick fix would be to delete these past events. However, as my wife considered this an unacceptable option, the question was what could we do about this?
My wife did offer one concession. I was permitted to delete past instances of most recurring events, such as “yoga class” or “staff meeting.” As this accounted for a significant portion of our data, this was a promising concession. Getting rid of these events would likely restore BusyCal to its prior zippy state.
The problem I confronted was: How do I effectively delete past instances of a recurring event while maintaining the future event listings? When I select to delete a recurring event, I am given three choices: delete just the single selected event, delete that event and all future events, or delete all instances of the event. None of the choices were what I wanted.
After a bit of experimentation, I came up with a work-around that did the trick:
1. Click any instance of a recurring event and select Copy Event from the File menu. From the dialog that appears, select Copy All.
2. Staying with the same event, next select Delete Event. From the similar dialog that appears, select Delete All.
3. Navigate to the next future date when the recurring event would occur. Select that day and choose Paste Event from the File menu. This will restore the event starting at that point and including all future instances. The unwanted past events will be gone. Success!
In a matter of minutes, I did this for about ten recurring events. When I was done, BusyCal had resumed its normal speed.
Note: While this worked great in BusyCal, it appears you cannot do the exact same thing in iCal. Apple’s calendar application does not include a Copy All option. You can develop a similar work-around, but it will require more steps.
- Repeating to do items
- Nonmodal info panel
- Flexible calendar views
- Familiar interface
- Syncing between users
- Snooze button
- No write support for CalDAV or Exchange calendars
- Limited AppleScript support