The CBC is holding a public summit on the “changing nature of news” on March 24 at the Confederation Centre of the Arts, hosted by Peter Mansbridge and including some of the country’s preëminent journalists.

It was announced yesterday that free tickets would be available starting at noon today at the Confederation Centre box office, and online starting on Monday.

I dropped by to pick some up this afternoon at 12:30 and found a bunch of disappointed people waiting in line; they’d just learned that the event was sold out after only 30 minutes. As one particularly disturbed fellow said on his way out, “this riles me up to no end.”

While I’m sad we won’t be able to attend, I do take some comfort from the notion that an event on the “changing nature of news” sold out as fast as the Leonard Cohen concert a few years go.

🗓️

In case they’ve escaped your attention, Port Cities is a new Nova Scotia supergroup that deserves your attention. They are releasing a new album here in Charlottetown on March 24, 2017. Unfortunately, this date conflicts with a performance across the street at the same time by Peter Mansbridge’s supergroup. An embarrassment of riches in the neighbourhood on that night.

🗓️
Port Cities  •  Music  •  Charlottetown

Now that my phone has received the Google Assistant update, I’ve got both it and our Amazon Echo hooked up to the Wemo switches for our living room light and television.

So here’s a little video showing them both at work on the same task:

🗓️
Audio file

Continuing my drive to spread the City Cinema film schedule as far and wide as possible into cyberspace, I’ve got a “Google Action” all ready to go. It’s working, in private “preview” mode, on both my Google Home device here in the office, and in Google Assistant on my Android phone.

I’ve reached a stumbling block with getting it approved for public release by Google, though: when I try to use “City Cinema” as the “invocation name” I get an error about a “reserved brand name”:

Google API Manager screen show showing invocation name error

I’ve done everything I’m supposed to do to under “Connected Properties,” and I’ve been back and forth several times, fruitlessly, with the Google Actions support. I’ve submitted another request today, and hope I’m more successful.

In the meantime, here’s what it looks like:

Screen shot of Google Assistant on my Nextbit Robin

🗓️

Generating a good portion—or more—of our electricity load here on Prince Edward Island from the wind happens frequently enough these days that it’s unremarkable. But it’s seldom that load and wind generation are so perfectly in balance as they are tonight.

🗓️

A friend of mine made reference, in an email a few weeks ago, to her vain attempts to “release attachment to the outcome.”

That struck a chord with me: doing exactly that has removed one of the great sources of stress in our family’s daily life: getting to school on time.

According to the letter of the law, the school day at Colonel Gray Senior High School starts at 9:00 a.m.

And so our goal, starting out the year in September, was to try to arrive at school at 8:45 a.m. to give Oliver a chance to get settled before things ramped up.

This turned out to be untenable, for a variety of reasons.

First, if you work backward from 8:45 a.m., and factor in that we were walking to school in the fall, we had to leave the house by about 8:15 a.m. Which meant breakfast had to be underway by 7:30 a.m. Which meant getting Oliver out of bed by 7:00 a.m. Which meant getting myself out of bed by 6:30 a.m.

It wasn’t so much that this order of operations was untenable–6:30 a.m. is a perfectly reasonable time to wake up–it’s just that the military precision required to getting all operations completed on time to allow for an on-time arrival at school was eating away at our souls, especially Oliver’s, as there’s nothing he likes less than being rushed.

So, with the generous cooperation of school officials, we decided to release our attachment to the outcome: we’d try to get to school by 9:30 a.m., but if we didn’t, well, that would be okay too.

The positive effect on our family life was immediate and dramatic: with no time-pressure, our mornings could be leisurely and free of “Oliver, you have to hurry up and eat so that we can leave on time” stress coursing through the house.

Slow morning getting started? Who cares!

Oliver needs a little more time to finish watching a Robert Reich video or to memorialize somebody’s birthday by posting 89 YouTube videos to their wall? Take your time!

The great irony of this is most days we arrive at school, without consciously trying, at about 9:22 a.m.

I know this because the first thing Oliver does every morning on arrival is to go for a walk with Dave, his educational assistant. And so my first action on arrival is to send a text message to Dave, and to Shelly, the leader of the Learning Centre at the school, letting them know we’ve arrived.

And scrolling back through my text messages last week I found that there’s freaky regularity in our arrival time:

Screen shot from my SMS app on my phone, showing arrival times at school

This is supported by my Google Location History, which tracks my location and automatically records my arrival time at the school each morning:

Screen shot of Google Location History, showing a 9:23 arrival time at Colonel Gray High School.

Discovery of our regularity came as a big surprise to me, for I’d been under the impression, what given our release from attachment to the outcome, that we’d been arriving on a random schedule, untethered to real-world concerns like clocks and schedules.

But, no, it’s almost always 9:22 a.m.

9:22 a.m., it seems, is the time that Oliver is meant to be at school when we follow the natural rhythm of our family.

9:22 a.m. works for us.

9:22 a.m. doesn’t make us rush. It doesn’t make Oliver time-claustrophobic.

9:22 a.m. has made the difference between a hectic, stressful morning and a calm, enjoyable one.

I’m so happy we released our attachment, and that we were supported in doing so.

🗓️

The Google app on my phone invited me to “Explore Interests” this morning. Under the “politicians” category it listed Donald Trump, Hillary Clinton, Barack Obama, Justin Trudeau, Melania Trump, Vladimir Putin, Bernie Sanders, Queen Elizabeth and Fidel Castro.

🗓️

Quick on the heels of the City Cinema Twitter Bot, here’s the City Cinema Telegram Bot.

If you use Telegram as a messaging app, you can query this bot just like you can the Twitter one: “what’s playing on Sunday?” and so on. It’s powered by the same API.ai back-end as the Twitter bot is, and there were no coding changes required to support this integration.

Here’s what it looks like:

Screen shot of a Telegram conversation with the CityCinemaBot.

You gotta hand it to Telegram for eating its own dog food: the entire process of setting up a new “bot” is handled conversationally with the BotFather.

🗓️
Telegram  •  City Cinema  •  API.ai

Remember that Amazon Alexa Skill that I built for City Cinema? Well it’s now generally available: if you have an Echo device anywhere in the world, you can enable the “City Cinema” skill.

My usual coding practice when hacking away at things like this is to write horribly-organized spaghetti code to see whether things are going to work at all, and to understand the underlying patterns, and then to loop back and create more elegant, reusable code once I’ve got some more insight. I’ve now done the loop-back for the code that powers the City Cinema schedule, building a PHP class that allows me to do things like this:

<?php
$c = new CityCinema('whatsPlaying', '2017-03-15);
$message = $c->speakable;
?>

(which will set $message equal to a speakable version of the City Cinema schedule for March 15, 2017).

The great thing about reusable code is that it’s, well, reusable. Meaning that when I went to explore the now-Google-owned API.ai platform for developing conversational interfaces, I could use the same PHP class to act as the back-end webhook for that too, with almost no modifications.

API.ai is a considerably more sophisticated platform than Amazon’s Alexa Skills Kit: coding for API.ai seems a lot less like coding for ELIZA and more like using a tool that’s custom-tailored for this task.

So, for example, the UI for creating a new “intent” looks like this in API.ai:

Screen shot of the API.ai intent creation screen.

Rather than needing to spell out, in JSON, all of the various utterances that I want to glue to my business logic, I simply specify some sample phrases, highlight where the entities that are required appear in them (connecting “Tuesday” to the @sys.date entity, for example), and API.ai takes it from there; even though I didn’t specify it in my examples, there’s enough to be derived from these that I can say “Ask City Cinema what’s on tap for Wednesday” and it will figure out what I mean.

One of the nicest features of API.ai is that it supports multiple conversational integrations from the same setup, and these are very easy to deploy.

For example, once I had the Google Actions integration working (to allow me to support Google Home and Google Assistant), I was able to roll out a Twitter bot in about 5 minutes; the only change required was to my back-end webhook, where I changed “do you want to hear a description” to “do you want a description” when the source was Twitter.

As a result, if you send a Twitter Direct Message to @city_cinema, you can now ask it the same questions you can ask Alexa and Google, like “what’s playing tonight?” or “what’s running on Sunday?” And I’ve added a couple of conveniences too, like “what’s your location?” and “how much are tickets?” Here’s what it looks like in action:

 

Screen shot of the City Cinema Twitter "bot" in action showing a dialog where I ask it questions and it responds.

Give it a try!

🗓️
Twitter  •  API.ai  •  Alexa  •  Google Home  •  Google Actions
🗓️

About This Blog

Photo of Peter RukavinaI am . I am a writer, letterpress printer, and a curious person.

To learn more about me, read my /now, look at my bio, listen to audio I’ve posted, read presentations and speeches I’ve written, see things I’ve favourited elsewhere, or get in touch (peter@rukavina.net is the quickest way).

I have been writing here since May 1999: you can explore the 25+ years of blog posts in the archive.

You can subscribe to an RSS feed of posts, an RSS feed of comments, an RSS feed of favourites elsewhere, or a podcast RSS feed that just contains audio posts. You can also receive a daily digests of posts by email. I also publish an OPML blogroll.

InstagramYouTubeVimeoORCIDOpenStreetMapInternet ArchivePEI.artDrupalGithub.