Bertha Called

The Old Farmer’s Almanac long-range weather forecast for the Atlantic Canada region for today called for “tropical storm threat”:

Screen shot from Almanac.com showing long-range forecast.

Environment Canada’s tropical cyclone information statement for today:

Bertha is now being declared a post-tropical storm. The forecast for offshore waters remains unchanged. Minimal effects for land areas except for some ocean swells.

Like they say:

However, although neither we nor any other forecasters have as yet gained sufficient insight into the mysteries of the universe to predict the weather with total accuracy, our results are almost always very close to our traditional claim of 80 percent.

Hacking The Guild Calendar

The Guild, which is home to the Reinventorium, is also home to a black-box theatre, a theatre that happens to be located less than an arm’s length through the wall in front of my desk where I type.

This theatre plays host to a rollicking schedule of productions over the summer months, and while I’m generally happy to have my work happen in a space that oozes creativity, sometimes that oozing interferes with the quiet contemplation needed to do complex digital work.

All of which is to say: sometimes it’s hard to get work done when a troupe of fresh-faced triple threats is belting out Anne of Green Gables-themed show tunes in the room next door.

So the question then becomes: when is this happening?

The snappy new Guild website has a helpful calendar right on the front page, but the schedule information there isn’t much use to me if I’m not making a daily visit to the website: I want the information on the same day-to-day calendar that I used to manage everything else in my life, a calendar that appears on my laptop, my iPad and my phone and automatically syncs among the three.

So the question becomes: how to liberate the calendar information of of its website prison and into a shareable object?

This turned out not to be too difficult; here’s how I did it.

Look under the Hood

Firebug is a very useful tool for looking under the hood of a website: it’s like a super-charged version of “View Source.” Using Firebug’s “Network” tab, I watched as the The Guild website loaded:

The Guild website loads as I watch in Firebug's Network tab.

I noticed that one of the things to happen as an HTTP POST to a script called admin-ajax.php with the following parameters:

action=get_events
readonly=true
categories=0
excluded=0
start=1406430000
end=1410058800

The important bits here appeared to be the start and end, which were unixtime values for July 25, 2014 and September 7, 2014 respectively, which is that range of dates on this month’s calendar.

The response from this POST was a JSON-encoded array with the events taking place between these start and end dates, like this:

[
  {
    "id": "10",
    "title": "Anne & Gilbert, The Musical",
    "start": "2014-07-29 13:30:00",
    "end": "2014-07-29 15:30:00",
    "allDay": "",
    "className": "cat4 aec-repeating",
    "editable": "",
    "repeat_i": "1",
    "repeat_f": "1",
    "repeat_e": "2014-10-11"
  },
  {
    "id": "10",
    "title": "Anne & Gilbert, The Musical",
    "start": "2014-08-05 13:30:00",
    "end": "2014-08-05 15:30:00",
    "allDay": "",
    "className": "cat4 aec-repeating",
    "editable": "",
    "repeat_i": "1",
    "repeat_f": "1",
    "repeat_e": "2014-10-11"
  },

The important bits of information here were the title, the start and end date, and the “cat” in the “className” element. The “cat” was important because the calendar lists both theatre shows and art gallery shows, and I only want the theatre shows on my calendar, so I want to exclude any event with “cat1”.

Converting JSON to iCalendar

The iCalendar format is a simple, well-documented plain text format for representings events; it’s the lingua franca of calendaring apps, and you can import iCalendar files into Apple’s Calendar, into Google Calendar, and into most anything else that reads and writes event data.

To convert the JSON-encoded calendar data on The Guild website into an iCalendar-format file, I wrote a little PHP script called harvest-guild-calendar.php that uses cURL to issue the HTTP POST to The Guild website, requesting events for the next 90 days, and then parses the response and outputs each event – minus gallery shows – into a iCalendar file.

The resulting file (here’s a full snapshot taken today) looks, in part, like this:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//Reinvented Inc.\, //TheGuild 1.1//EN
X-WR-CALNAME;VALUE=TEXT:The Guild Theatre
X-WR-TIMEZONE;VALUE=TEXT:Canada/Atlantic
VERSION:2.0
BEGIN:VEVENT
SUMMARY:Anne & Gilbert, The Musical
DTSTART;TZID=Canada/Atlantic:20140805T133000
DTEND;TZID=Canada/Atlantic:20140805T153000
END:VEVENT
BEGIN:VEVENT
SUMMARY:Anne & Gilbert, The Musical
DTSTART;TZID=Canada/Atlantic:20140812T133000
DTEND;TZID=Canada/Atlantic:20140812T153000
END:VEVENT
BEGIN:VEVENT
SUMMARY:Anne & Gilbert, The Musical
DTSTART;TZID=Canada/Atlantic:20140819T133000
DTEND;TZID=Canada/Atlantic:20140819T153000
END:VEVENT

Spreading the Calendar

With the iCalendar file in hand, it was short work to create a shareable Google Calendar for The Guild, and to make this available in several formats:

  • iCalendar (suitable for importing or subscribing to in Apple’s Calendar for OS X or iOS, etc.)
  • XML (suitable for viewing in feed readers)
  • HTML (standalone viewing in a browser, or embedding in another website)

Using the Calendar

In my case, I took the iCalendar-format file and imported it into my ownCloud calendar, which then automatically echoed it the Calendar on my desktop:

And the calendar on my Android phone:

And to everywhere else I see my calendar.

As a result of all this, I have continuous awareness of when Anne & Gilbert are about to break out into song.

Like – as you can see from my phone above – in about 35 minutes from now.

Time for lunch.

Confederation Celebration, Postponed

Starting on January 1, 1914 and for every issue of the paper going forward, The Charlottetown Guardian ran some variation of “Confederation Celebration, Charlottetown” as part of its flag on page 1:

Until, that is, Tuesday, August 4, 1914 when it was changed to “Confederation Celebration, Postponed”:

As a page 1 story explained:

At a special meeting of the General Committee for the celebration of the Jubilee of Confederation held in the Council Chamber last night it was resolve to postpone indefinitely celebration of the event.

Hon. Mr. Justice Haszard presided over a full attendance.

The chairman opening the proceedings by referring to the crisis in Europe and asked an expression of opinion as to the advisability of proceeding with the celebration.

Hon. J. A. Mathieson, Premier, thought there was no alterative to postponement. In the present condition of affairs there was nothing else for it.

The chairman, Messrs. Pope, Tidmarsh and Ings concurred.

Mr. Pop this moved, seconded by Mr. Heartz:

“The in view of the fact that the Empire is at present engaged in a world-wide struggle and all lesser issues are sunk in our hopes and fears for the welfare of our country, it would, in the opinion of the Committee, be unfitting to hold the celebration at this time and it is therefore decided that it be postponed indefinitely, and that the Committee adjourn subject to the call of the chair.”

The following day, Wednesday, August 5, 2014, The Guardian reported that Britain had declared war:

R. T. Holman and the Continuous Feeling of Thankfulness

I was intrigued to find this passage in the R. T. Holman entry in the Dictionary of Canadian Biography earlier this week:

R. T. Holman was a merchant who stood apart from the social life of his small community, who apparently neither sought nor gained political favours, and who possessed unorthodox religious beliefs. Though Holman had been born into a Baptist family, his father had left the church in 1835 following a doctrinal disagreement with a clergyman. It is not evident how Robert’s views on religion developed, but the census of 1861 listed him as a “universalist” and by the 1870s he had abandoned organized religion in favour of free thought. Not content to object passively to the predominant religious sentiment of the community, he brought speakers to Summerside to preach humanism. One example of his antipathy was his response to the province’s proclamation of Thanksgiving in 1899. He protested in a half-page advertisement in the Pioneer that the day should be “free from cant, free from hypocracy and free from policy” and that consequently his stores would remain open.

Prince Edward Island is a challenging place to be weird, and so it’s useful to look to history for examples of successful weird people like Holman.

The ad that’s referenced is an interesting one. Here’s the version that ran on October 18, 1899 – the day before Thanksgiving – in the Summerside Journal:

Summerside Journal, Oct. 18, 1899

It reads:

A Proclamation!

Being unable to comprehend how I can SERIOUSLY or SINCERELY box up the beautiful sentiment of thankfulness into any special week days operation by ORDER of Parliament or any civic ruler, and recognizing as I often do the consistent, profound, and reverential manner in which many of those who think differently from me regarding such old customs, keep this special day, nevertheless I must proclaim to my patrons that I shall have

MY STORES OPEN

ON

Thanksgiving Day, Thursday, the 19th inst.

As usual to receive PAYMENTS? SELL CHEAPLY? and not to disappoint those who may have hauled their load of produce many miles.

In this country of SHORT SEASONS and RAPID CHANGES with winter soon upon us we should not lose any fine day but carefully and quickly save the bountiful crop that we have been favored with, thus enabling us to more easily discharge our mutual obligations to each other. WE ARE ALL DEBTORS AND ALL HAVE OBLIGATIONS TO MEET. And the man who could be so cold as not to have a CONTINUOUS FEELING OF THANKFULNESS while engaged in the activities of life with prospects of good success and this MANLY OBJECT IN VIEW is somewhat more than even PAYING BILLS. And if THURSDAY, THE 19th INST., should be a fine day and I should be financially better off from the operations of the day, I KNOW that I shall have many opportunities before THE WINTER PASSES to cast a ray of happiness into many dwellings RIGHT HERE IN SUMMERSIDE, the occupants of which will be asking heretofore

FOR BREAD? FOR CLOTHING? FOR FUEL?

And if I could be moved to recognize in a proper way their real wants then a manifestation of natural, true and unadulterated thankfulness would be apparent and which would be Free from Cant? Free from Hypocrisy?? Free from Policy???

Grief, love or thankfulness are not things to be made to order, bottled up and “used as directed.” They simply spring spontaneously from the human heart. We all know it, LET US BE FRANK ENOUGH TO ADMIT IT.

Call next Thursday, the 19th inst., and always for exchange of favors.

R. T. HOLMAN