We visited the new Princess Auto store in Charlottetown for the first time tonight (it opened yesterday).

We had little idea what to expect. And even after visiting the store I can’t tell you exactly what business they’re in.

But I did buy a stethoscope for $13.

Why?

Because at the vet on Tuesday when Dr. Jameson was checking Ethan’s heart I distinctly remember thinking “it would be so great if civilians were allowed to have stethoscopes.”

And apparently we are.

It turns out that a stethoscope is essentially a tube with a tiny snare drum at the end. I had no idea (I’m not sure what I thought a stethoscope was, but it wasn’t that).

For the benefit of future residents of 100 Prince Street, reading this on your holoreaders, here’s a photo of the replacement tree that was planted the City of Charlottetown on Monday, May 30, 2016 in front of the house.

I hope you are enjoying its shade.

Granite Island: A Portrait of Corsica is the subject of the next The Happy Reader issue so I got myself a copy.

And, now that the ink is dry, I have a bookmark.

I’m not sure how Rukavina became Rukàvinà, but, setting that aside, my colleagues at the Internationale Gutenberg-Gesellschaft in Mainz know how to give good envelope.

Envelope

Spending time in Berlin with my friend [[Morgan]] reignited my interest in learning more about Chinese cooking.

To the point where, sitting in Morgan’s living room, I ordered a copy of Every Grain of Rice from Amazon; it was waiting for me when I arrived home to Canada.

Step number one, working my way through the book’s introduction, is to stock up our pantry; I was greatly aided in that effort by the opening of a new Asian grocery store a few blocks from our house.

Top Fresh Asian Market is on Grafton Street across from Holland College. It’s very well stocked, and I was able to find everything on my list, from Chinkiang brown rice vinegar to fermented tofu. They’re open most days from 10:00 a.m. to 7:00 p.m.

I suspect I’ll be a regular customer.

I’ve been making a concerted effort – although, to date, with somewhat lackluster results – to wean myself from Twitter, Facebook, et al., given their increasingly low signal to noise ratio.

Facebook’s not a big issue: I don’t write anything there, and I’ve found it not-too-difficult to live without pictures of the baby goats of that woman I once had the crush on in the mid-1980s. 

Twitter, though, is proving harder to kick. I have, after all, tweeted more than 33,000 times over the last decade, so it’s become something of a habit built in to my daily flow.

But, spurred on by the POSSE crew, I’ve come to realize that I don’t need to quit cold turkey: I can revert to the pre-2006 style of using this blog as my exclusive place to write on the web, and push as needed to other services to syndicate what I write to people who can’t, or won’t, drop by here.

Sort of like John Steinbeck in The Guardian in the 1940s.

Twitter’s ace in the hole, posting-wise, is its excellent Android client, which makes posting photos quite easy. I wanted to continue to be able to post photos, but I didn’t want to have to open a mobile browser, login to Drupal, and navigate through the process of creating a new post in that tiny environment.

So I decided to create a workflow that would allow me to post here via email.

Here’s how I did it.

I host my email with Fastmail, and Fastmail makes it very easy to set up new email aliases, so I set one up: a dedicated email address that would exist solely to receive and forward new posts for this blog.

Next, I created a new Postmark account and set up a new “Server” and then setup an Inbound webhook, allowing me to receive email at a special inbound.postmarkapp.com email address and forward it on as JSON via HTTP POST to a web service of my choice:

Postmark Inbound Webhook

A new Postmark account includes 25,000 “credits,” and each inbound email processed uses a single credit, so I should be good posting-by-email until pretty close to the end of time with my available balance.

Back on Fastmail, I set the “forwarding address” for my new blogging email address to this new Postmark webhook:

Fastmail Alias

And, finally, I created a PHP script to be the target of the webhook and strapped it to a secure server: the script receives JSON from Postmark, pulls it apart, finds any photos in the body and resizes them if needed and moves them into place where Drupal can find them, and finally creates a new Drupal node using the email’s subject line as the node title and the body of the email as the node body.

As a result, the flow for posting a photo here by email is as simple as this:

Blogging from my Android email client

I sent that email and, a few seconds later, this post resulted.

A few important things to note:

  1. There’s no authentication involved: anyone with the email address can post here. And so I use a hard-to-guess email alias. That said, sharing the email with a trusted friend is an easy way to allow someone else to post, no fuss no muss (that’s how [[Olle]] was able to post this photo).
  2. I recently updated the script to look for MP3 files in the email too; if it finds one, it creates a new “sound” node. Like this one, created by email from Street Food Thursday in Berlin.
  3. Another recent update: the body of the email is now assumed to be Markdown, and it’s converted from Markdown to HTML before being posted to Drupal.

This workflow has proved very satisfying. It’s now as easy to post a photo (or sound, or note) here as it is to post it to Twitter. And whatever I post ends up on Twitter anyway, via an IFTTT recipe that echoes all posts to new tweets:

And to Facebook as well:

Post on Facebook

My digital emancipation continues.

Now I have many.

One aspect of our shared childhood that my brothers and I all remember clearly is The Budget.

We were never completely sure what it meant, but we all remember our parents talking about it, and we remember that there were various systems in place that regulated it.

For example, if we needed $5 for fish and chips in the cafeteria on Friday, there was a pencil case on our father’s dresser that held petty cash that we could get the $5 from, but we had to note this on a chit, and the chits were collected and factored somehow into The Budget.

Our parents are both systems thinkers, and The Budget was an integral part of maintaining and organizing the economic fuel that allowed a family of 6 people to get by on a single salary.

In the mid-1980s we started to have computers in the house: first a TRS-80 Colour Computer, which my father brought home one day and upon which he (and I) spent many hours typing away (I sometimes think that 20% of my youth was taken up typing in program listings from Creative Computing and Byte).

Dad’s tour de force, programming wise, was the creation of a BASIC program to track The Budget. In the years since this has been replaced by off-the-shelf applications like Quicken, but at the time it was all hand-coded and thus custom-tailored around the economic ecosystem of our family.

Another aspect of our parents’ systems thinking is a predilection for archiving, and so that BASIC program, in its various versions, has survived in Dad’s digital collections all these years and the version from 1986 — BUD86.BAS — surfaced recently and he wondered whether it was possible to run it on a modern computer.

It turned out to be surprisingly easy.

PC-BASIC is a free cross-platform GW-BASIC emulator that’s available for the Mac. I downloaded and installed it, and once I realized that its “working directory” was my home directory on my Mac, I simply copied the BUD86.BAS code into that directory and:

Running PC-BASIC on a Mac

at which point — somewhat magically given that 30 years had passed — this appeared on the screen:

PC-BASIC running a BASIC program on my Mac

Just looking at the menu can tell you a lot about the financial setup of our family the year that I turned 20: a MasterCard, a Visa, department store cards from Sears and Eatons, and a chequing account.

There’s no actual data there. And, it seems, no way of adding new transactions (I’ve asked Dad whether there was a separate program for that). But entering “4” for “CAT. TOTALS” you can gain some additional insight into the way that things got categorized:

Budget Categories

Every member of the family — N, F, P, M, J and S, listed in birth order — got a “Clothing” category. And there were categories for Food, Meals Out, Household, Education, Recreation, Property Tax, Union Gas, and Hydro. On the next page the list continued: Phone, Car, Gasoline, Fitness, Medical/Dental, Professional Dues, Christmas, Life Insurance, House Insurance, Computer, Miscellany.

That there was a budget category for “Computer” is interesting in and of itself. Indeed, surely there’s much to be mined from this sort of information about the social and economic history of the late 20th century Canadian family; I hope other families have an archival bent and have saved their own particular budgeting schemes so that they can form the part of a broader analysis of this type of thing for anthropologists of the future.

Meanwhile, I’m sad to report that there are no aspects of the formal organization The Budget left in my Charlottetown branch of the family; perhaps because we’re a smaller crew, perhaps because we’re lazy, but our approach to budgeting has been, most of the time, “save what we can, spend the rest.”  

Vestigially expressed from deep within me, however, is an economy of spending that I inherited from my parents (that, I imagine, they inherited from their parents, who lived through the Great Depression): I feel guilty every time I spend money, and if there’s a way of avoiding it, I’ll always take that way first.

It may not be the least stressful way to live, but it got my family through the 1970s and 1980s in one piece, so it can’t be all that bad.

Here’s something you might do when you’re writing a computer program:

$months = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

This happens to be a bit of the PHP computer language, but similar constructions are available in almost any language: this defines an array – a “collection,” you might say – of months. You don’t have to be a computer programmer to realize that this would have utility in any number of computer programs: collecting credit card expiration dates or birth dates, allowing a search of a database of events by month, and so on.

One of the rookie mistakes we all made when we first started programming is to think that when we, say, want to refer to the month of May, we’d refer to:

$months[5];

May is, after all, the fifth month, and in a collection of months it would only make sense, wouldn’t it, that May would be referenced as such?

Except that PHP, by default, uses zero-based arrays. Which means that in my array of months the first month is 0, the second month is 1, the third month is 2, and so on. Meaning that the month of May is actually referenced as:

$months[4];

This is something that causes no end of confusion for the novice programmer. And, indeed, for the veteran as well, on occasion.

You might think that this is a post about computer programming, but it’s not.

Longtime readers may recall the story I posted here about taking the metro in Porto, Portugal, ten years ago this week: that story too involved zero-based counting.

To refresh your memory, [[Catherine]] and [[Oliver]] and I were nabbed by the Porto transit cops for traveling without a proper ticket. We were taking Line A from Senhor de Matoshinhos to Campanhã, where we were to catch the train. Here’s the list of stops on that line:

Porto Metro Line A Map

Porto uses a zoned ticketing system, and we reasoned that because Senhor de Matoshinhos was in Zone C3 and Campanhã was in Zone C1, we would need a 2-zone ticket, as we’d be crossing two zone boundaries. 

In other words, we assumed the metro system used zero-based numbering for its ticketing: we started counting 0 in Zone C3, then 1 for Zone C2 and 2 for Zone C3. And so we bought 2-zone tickets.

But Porto’s metro uses a one-based numbering system for its ticketing: you start counting 1 for the zone you’re starting in, and count up from there. Which means that to go from Senhor de Matoshinhos to Campanhã we needed a 3 zone ticket.

The same issue bit me last December in Montreal, albeit counting days, not zones.

In Montreal you can buy a 3-day transit pass valid for unlimited travel across the system. Oliver and I arrived in the city on Thursday, and immediately purchased this pass. I assumed that it would last us until our Sunday departure:

  • Thursday to Friday - 1 day
  • Friday to Saturday - 2 days
  • Saturday to Sunday - 3 days

I was using zero-based counting, assuming that Thursday was day 0.

And, again, I was wrong. As is made rather clear on the STM explanation of the pass, it’s good for “3 consecutive days” of travel, meaning that, as with Porto and its zones, you start counting with 1.

I realized the folly of my ways when Sunday arrived and my mother, who had purchased her own 3-day pass on Friday, was happily accepted with a “green” signal when we got on the bus where Oliver and I, following behind her, were rejected with a “red” signal.

So you’d think I’d be safe simply assuming that one-based numbering is universal and using that as my default.

But it’s not.

Next week I’m spending 6 days in New Hampshire at [[Yankee Publishing]] and I pre-loaded a Roam Mobility prepaid SIM card up in anticipation. Roam’s text + talk + data plan is billed by the day. I reasoned, knowing the error of my earlier ways, that because I’d be in New Hampshire for 6 days, I needed to purchase 6 days worth of service.

But I was wrong.

Roam uses zero-based day-counting for its system: a “day” in their world is a 24 hour period starting from the hour of activation. So I only needed “5 days” of service to cover the period from Sunday in the late afternoon to Friday in the late afternoon:

  • Sunday - Day 0
  • Monday - Day 1
  • Tuesday - Day 2
  • Wednesday - Day 3
  • Thursday - Day 4
  • Friday - Day 5

Perhaps the greatest international schism related to zero- vs. one-based numbering has to do with building-floor-numbering.

In Canada we start counting the floors in a building at one: you enter a building from the street and you’re on the first floor.

In Britain, though, and in much of Europe, entering from street level puts you on the ground floor; to get to the first floor you need to walk up one flight of stairs. So if you let a “first floor flat” in London on Airbnb, you’re going to have to walk up a flight of stairs to get to it. And if you let a “fifth floor flat” you’re going to have to walk up five flights of stairs, not four.

The Canadian system is one-based and the British system is zero-based.

And even here in Canada we have difficulty being clear about what floor is what; witness this elevator button pane in Charlottetown City Hall, which should be intuitive and clear but is anything but:

Charlottetown City Hall Elevator Buttons

Given how confusing it can be to use zero-based counting in a one-based system, or vice-versa (believe me, I’ve spent enough time wandering around European buildings looking for friends’ apartments on the wrong floor to know), you’d think there’d be an easier shorthand for communicating about the issue, and that pains would be taken to make it clear, especially in situations where tickets and billing are concerned, which system is in use.

But it seems to be assumed that we should know this intuitively, and we don’t have easy shorthand for communicating about it: I had to call Roam Mobility last week and ask something along the lines of “if I’m arriving in the US on Sunday and leaving on Friday, do I need to purchase 5 days of service or 6?” The agent I spoke to was obviously used to answering questions like this, which adds credence to the notion that this should be made clearer on the Roam website. For example, they could change their purchase widget from:

Current widget

to this, adding the expiration date so that it’s clear what “5 days” means:

Change the widget to show expiration date and time.

As it is we’re all forced to greet each new system, and each new jurisdiction, assuming that they could start counting at either zero or one, and to discover through experience — or the threat of arrest at the hands of the transit cops — which it is.

My brother [[Steve]] reports on a “mob hit” for CBC News in Montreal. On Facebook.

He is the living embodiment of the “convergence” that we’ve all been talking about since 1995.

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 /nowlook at my bio, read presentations and speeches I’ve written, or get in touch (peter@rukavina.net is the quickest way). You can subscribe to an RSS feed of posts, an RSS feed of comments, or receive a daily digests of posts by email.

Search