To vote, or not to vote? by Edward Hasbrouck. Nothing has made me think more about democracy, voting, violence and war than reading this.
I have never been a regular wearer of Remembrance Day poppies, for no more reason that ignorance and sloth.
Archdeacon John Clarke wrote a moving argument for the poppy in a blog post last week; in part:
The red poppy was not chosen as a symbol of remembrance because of its beauty. It’s because it grew around the graves of soldiers killed in Europe during the world wars. The deep red colour of the poppy reminds us of the blood that poured from the wounds of people killed in battle.
We place a symbol of the poppy on our lapels, near our hearts, to remind ourselves of one essential fact, that war is ugly. The poppy in no way falsely glorifies war. Its intention is the exact opposite, it reminds us of the utter and complete horror of the violence perpetrated on soldiers and civilians in war. The poppy is a stark symbol of the need for us and our political leaders to do all in their power to achieve an everlasting peace.
If I needed any more convincing, this passage from one of the Letters from the Great War was all it took:
Just a few lines to let you know I am alright. Hoping this will find you all the same. Well, I am still in Blighty and I am tired of writing and getting no answer. I have not had a letter from you since I had the registered one with the dollar in it. It seems to be the same with all us Canadians here, as there is about a hundred in the hospital here and they don’t get any letters from Canada. I would like to know where in hell they are going to. That is why I am having mine sent to a private address. I do stand more chance of getting them.
Well, I had a Medical Board two weeks ago and they marked me B I for B II, so I am expecting to be on the next draft and it is for Siberia, but you leave that to me. I do not want to go there. It is too far away and too cold. I would rather go to France. I think I can kick off it. Well, I am not fit for it anyhow, but I am getting better every day. I am getting stronger. It takes quite a little time to get over gas, but this is a dead place here. I do not like it.
It’s not so much the prospect of being sent to Siberia or France to fight that is chilling–although it certainly is–as much as the humanizing contrast between the everyday worries about postal service and what should be exceptional worries about the time needed to “get over the gas.”
As Archdeacon Clarke wrote in his post, war is ugly. We wear a poppy to remind ourselves of that. There’s one on my coat as I type.
I suppose we’ve always known that this day would eventually come, and, truth be told, I’m amazed it hasn’t come sooner, but we received an email from Netflix today telling us that our ability to stream Netflix to our television via our venerable Nintendo Wii will cease as of the end of January:
The only TV in our house is a 20 year old analog Sony Trinitron. It’s hooked up to our Wii using the old pre-HDMI analog way, VHS-tape-machine-style. And while it lacks all the bells and whistles of the modern television–apps, resolution, clarity, 16:9–it continues to serve us well, and I’ve no inclination to stop using it until some part of the setup stops working. I’m not sure that cessation of Netflix will be enough to get me to upgrade the television; indeed it might be all the stimulus I need to rid the house of television altogether.
From UPS’s tracking information for my Mac mini package, here’s the voyage it took to get to Charlottetown from Shenzhen, China:
The package started in Shenzhen, China, leaving late on Saturday, November 3 and arriving at Chek Lap Kok, Hong Kong on the next morning, Sunday, November 4.
After spending the day in Hong Kong, the package left for Taoyuan, Taiwan Sunday evening, spent a few hours there, and then left for the USA.
It arrived in Anchorage, Alaska on Monday afternoon, spent three hours there, and then left for Louisville, Kentucky, where it arrived just after midnight on Tuesday, November 6.
The package spent a day in Louisville, leaving for Canada early Wednesday morning and arriving at Mirabel International Airport in Montreal just before breakfast.
After confusingly-reported customs formalities in Montreal (“We currently have the package. The receiver requested clearance by a non-UPS broker. / As requested, the package was transferred to a Free Trade Zone or a non-UPS broker.”), it left for Dieppe, New Brunswick on Wednesday morning, arriving mid-morning Wednesday.
The package began the last leg of its trip this morning at 4:30 a.m., leaving Dieppe for Charlottetown, where it arrived at 6:45 a.m. and went on a truck for delivery to my house.
Total distance traveled, give or take, was 12,000 km in 5 days.
My new Mac mini is scheduled for delivery today, and I received an SMS from Apple this morning alerting me:
Because this is bilingual Canada, the alert was in both English and French, and I noticed that the French version of “Today’s the day” was “C’est le jour J.” I initially though the “J” was an errant character, but it turns out that “le jour J” has become a generic French term for “the big day”:
Le jour J and, to a lesser extent, D-Day can also be used by civilians, as a figurative reference to an important event, similar to saying “the big day” in English. While jour J can be used for happy occasions like parties, D-Day is limited to events that one doesn’t look forward to, like a deadline, perhaps because it’s easy to imagine D standing for doom or disaster.
From this I learned that while VE Day (Victory in Europe) and VJ Day (Victory in Japan) are references to specific events, the “D” in “D-day” means, oddly, “Day”:
The terms D-day and H-hour are used for the day and hour on which a combat attack or operation is to be initiated. They designate the day and hour of the operation when the day and hour have not yet been determined, or where secrecy is essential. The letters are derived from the words for which they stand, “D” for the day of the invasion and “H” for the hour operations actually begin. There is but one D-day and one H-hour for all units participating in a given operation. It is unnecessary to state that H-hour is on D-day.
The military has a raft of letter-designations for days and hours, including E-day (“the unnamed day on which a NATO exercise commences”) and P-day (” the expected date at which the rate of production of a consumable equals the rate at which the item is required by the Armed Forces”).
C’est le jour J!
Along with my friend Ton, I am seeking to emancipate myself from Evernote, a very capable cross-platform organizational app that I’ve been using for many years. The emancipation is part regaining-data-sovereignty and part (a related) worry about Evernote’s future, and how I would be stuck if Evernote disappeared.
The most serious day-to-day integration of Evernote into my life is using it to manage my household and office bills.
When a new bill arrives–mostly by email, these days–I create a new Evernote note, attach a due date (a week before the actual bill’s due date, to give me some breathing room) and drop it in the “Bills - Unpaid” Evernote category.
Here’s an example of this, showing my home heating oil bill with an alarm set for October 27, and my PEI Property Taxes bill’s final installment, with a reminder set for later in the month:
Evernote sends email alerts, and Mac and Android notifications, on the due date I set, making it very hard to ignore the fact that I need to pay a bill when it’s due.
Once I’ve paid the paid–again, almost always online–I copy and paste the confirmation message from my credit union bill payment screen into the note, and move the note into the “Bills - Paid” Evernote category.
As you can see from the screen shot, I’ve paid 896 bills this way, going back to July 2010: this system has worked well, and I have an almost-100%-on-time bill payment record as a result.
To replace Evernote’s role in this, I needed a way to:
- Store the bills themselves–PDF files–with some redundancy built in.
- Set reminders to pay the bills.
- Record the payment information when I pay the bill.
I’ve come up with a system that uses Nextcloud, a PHP script, and the Mac Reminders application, and it works like this.
When a new bill arrives in my inbox, I do whatever’s needed to download a PDF version of the bill (usually this involves logging into a vendor website). I save the PDF to my computer.
Next, I right-click on the PDF to fire an Automator workflow that I wrote to process the PDF; the workflow looks like this:
The workflow is simple: it takes the PDF file and passes it to a PHP script I wrote, /Users/peter/bin/bill.php, and, when the script is done, it has the Mac speak “I created a Reminder!”.
The bill.php script is where the heavy lifting happens:
First, I use pdftotext to convert the PDF to a text file:
function getTextFromPDF($file) {
system("/usr/local/bin/pdftotext $file /tmp/pdfdump.txt");
$text = file_get_contents("/tmp/pdfdump.txt");
return $text;
}
Next, I use the text version of the PDF to find which vendor it’s from; I do this by looking for known strings in each bill, like the account number (I’ve removed my actual account numbers and replaced them with Xs):
function getBillType($text) {
if (strpos($text, "XXXX XXXX XXXX XXXX")) {
return "Eastlink";
}
else if (strpos($text, "XXXXXXX")) {
return "Bell";
}
else if (strpos($text, "XXXXXXX")) {
return "Kenmac";
}
else if (strpos($text, "XXXXXXX-XXXXXXX-XXXXXXX")) {
return "MaritimeElectricStudio";
}
else if (strpos($text, "XXXXXXX-XXXXXXX-XXXXXXX")) {
return "MaritimeElectricHome";
}
}
With the bill’s vendor known, and assuming that the format of every month’s bill is the same, I can then extract the date of the bill, using what I know about how this appears on each bill:
function getBillDate($text, $billtype) {
if ($billtype == "Eastlink") {
// September 24, 2018 Account Number
if (preg_match("/(.*) Account Number/", $text, $matches)) {
return getNormalizedDate($matches[1]);
}
}
else if ($billtype == "Bell") {
// 5421473 9 September 21, 2018
if (preg_match("/\n5421473 9 (.*)/", $text, $matches)) {
return getNormalizedDate($matches[1]);
}
}
else if ($billtype == "Kenmac") {
// 10/4/2018
if (preg_match("/\n(\d+\/\d+\/\d\d\d\d)/", $text, $matches)) {
return getNormalizedDate($matches[1]);
}
}
else if (($billtype == "MaritimeElectricStudio") or ($billtype == "MaritimeElectricHome")) {
// Bill issued on 03Oct18 includes payments received
if (preg_match("/Bill issued on (.*) includes/", $text, $matches)) {
return getNormalizedDate($matches[1]);
}
}
return FALSE;
}
I also need the bill’s due date: in some cases I look for the actual due date, in other cases the due date isn’t printed, and I calculate one based on a known amount of time after the bill date. I also set a reminder date, 7 days before the due date; as with Evernote’s reminder dates, this gives me some breathing room to pay the bill well before it’s due.
function getDueDate($text, $billtype, $billdate) {
if ($billtype == "Eastlink") {
// Please pay the total amount by Oct 15, 2018.
if (preg_match("/Please pay the total amount by (.*)/", $text, $matches)) {
$duedate = getNormalizedDate($matches[1], TRUE);
$reminddate = strftime("%Y-%m-%d, 9:00 AM", strtotime($duedate) - (7 * 86400));
return array($duedate, $reminddate);
}
}
else if ($billtype == "Bell") {
// please pay by: October 12, 2018
if (preg_match("/please pay by: (.*)/", $text, $matches)) {
$duedate = getNormalizedDate($matches[1], TRUE);
$reminddate = strftime("%Y-%m-%d, 9:00 AM", strtotime($duedate) - (7 * 86400));
return array($duedate, $reminddate);
}
}
else if ($billtype == "Kenmac") {
// No due date specified -- add 30 days to bill date
$duedate = strftime("%Y-%m-%d, 9:00 AM", strtotime($billdate) + (30 * 86400));
$reminddate = strftime("%Y-%m-%d, 9:00 AM", strtotime($duedate) - (7 * 86400));
return array($duedate, $reminddate);
}
else if (($billtype == "MaritimeElectricStudio") or ($billtype == "MaritimeElectricHome")) {
if (preg_match("/Payment Due On or Before: (.*) Amount/", $text, $matches)) {
$duedate = getNormalizedDate($matches[1], TRUE);
$reminddate = strftime("%Y-%m-%d, 9:00 AM", strtotime($duedate) - (7 * 86400));
return array($duedate, $reminddate);
}
}
}
Now that I know which vendor the bill is from, what the bill date is, and what the due date is, I copy the file to a directory that’s mirrored to Nextcloud, and trigger an AppleScript that creates a reminder in the Reminders app:
system("cp $thisfile $bills_root/$billtype/$newfilename");
$reminder_script = <<<EOT
tell application "Reminders"
set myList to list "Bills"
tell myList
make new reminder with properties { name:"$billtype Bill $billdate", due date:date "$duedate", remind me date:date "$reminddate", body: "file:///$bills_root/$billtype/$newfilename" }
end tell
end tell
EOT;
exec("/usr/bin/osascript -e '$reminder_script'");
By including a file:/// URL as the body of the reminder, with a link to the PDF, I get a clickable link to the PDF of the bill included with the node:
Nextcloud fits into this system in two ways:
- The PDF files of the bills are mirrored to a “bills” directory in Nextcloud, where I can reference them as PDF files. They’re named by the vendor and the date for ease of reference.
- My Reminders app on my Mac is connected to the Tasks app in Nextcloud. This not only serves to back up the reminders, but also allows me access to the reminders from the Tasks app on my Android phone. This is all powered by CalDAV, which is an open standard.
As such, I’m leveraging the utility of desktop and mobile applications without being beholden to them, and I’m maintaining control over where my data is stored and in what format.
I’ve been using this new system since August, and it’s proved a capable replacement for Evernote; indeed, because more of the workflow is automated, it’s actually a better system than I had in Evernote, and I enjoy using it more.
I’ve still got more Evernote-functionality-replacing to work on, mostly its utility as a place to dump various bits and bobs of information, from boarding pass to network diagrams, that I don’t want to lose.
But replacing Evernote’s bills payment function in my life is a huge hurdle overcome.
I popped up to The Source (née Radio Shack) in the Confederation Court Mall yesterday to pick up some earphones for my brother Mike, who was about to jump on a plane back to Hamilton and needed a pair to while away the flight. I was greeted by this scene:
The Source has closed.
This is a blow to downtown Charlottetown, the immediate practical effects of which were evident from my earphone search: I tried “Bob’s,” the dollar-store-like discount store on the first floor of the mall, and Shopper’s Drug Mart, and while they both sell earphones, they are of the cheap $7 variety, and they don’t have anything for a modern iPhone.
When I first moved to Charlottetown in 1993, I was happy to find a very well-stocked Radio Shack store on Queen Street just south of Richmond. It was a handy shop to pick up many things unavailable elsewhere: batteries, serial cables, soldering irons, resistors, floppy disks, tractor printer paper; all the stuff of digital life at the dawn of the Internet.
The store later moved to Grafton Street across from the Confederation Centre of the Arts1, and later, rebranded as “The Source,” to the second floor of the Confederation Court Mall. Although The Source was never as hobbyist-focused as Radio Shack, it continued to be a place to get batteries, USB cables, mobile phone SIM cards, ink cartridges, clock radios, SD cards, Ethernet cables and earphones; all the stuff of digital life in the Internet’s adolescence.
While there’s a The Source out at the Charlottetown Mall, that’s effectively as far away as Amazon.ca is for many people living and working downtown, and the effect will, I’m sure, be a loss of local jobs and purchasing in addition to the loss of convenience.
So long, Radio Shack: you will be missed.
1. Thanks to my friend Dave Cairns for reminding me of this location.
Citizens of Charlottetown woke up with a new mayor and city councillor following from yesterday’s municipal election in the city. Picking up our daily newspaper The Guardian, this morning, however, you’d never know it:
Instead of election coverage, we see a delightful piece about the local brewing industry.
Why?
Because, starting this summer, The Guardian is no longer printed on Prince Edward Island.
As the CBC reported in May, the paper is printed in Halifax now, a move instituted by its new owners:
In an email statement to CBC News, SaltWire Network spokesperson Barbara Cameron said the Guardian and Journal Pioneer’s digital platforms will be the “primary venue for late-breaking news.”
“Printed newspapers are evolving and so is what we include in that medium. More and more we’ll be playing to the strength of print, which facilitates thoroughness, resonance and permanence,” she said.
That’s powerful PR, but little consolation for someone who wants to read about the election by opening a real newspaper.
Here’s how the non-news was explained on the front of the paper today:
There are new mayors in Charlottetown, Summerside and Stratford today, as well as a new council in the new municipality of Three Rivers. While print deadlines prevented results in today’s print edition of The Guardian, full coverage is online and will be in Wednesday’s paper.
By Wednesday, who will care?
By comparison, here’s the front page of The Guardian from February 11, 1904, the morning after that year’s municipal election in the city:
Those were the days.
If you only need one reason to stay at The Charlottetown Hotel, surely this sign qualifies.
Brother Mike is visiting and is sporting a fancy new iPhone with “portrait mode.” Here’s a photo he took of Ethan with me in the background.