Today was the official start of cycling season in our family: we headed out over the Hillsborough Bridge pathway as far as construction allowed (to the Stratford end of the navigation span). It was glorious, and I’m so looking forward to the day—reported to be June 30—when we can cycle all the way across.

“Sex and the Island”: Lives of Single Women in Prince Edward Island, a 2011 Island Studies Journal article by Kristie Collins:

This article considers the significance attributed to Prince Edward Island in managing a marginalized single female identity, as presented by accounts of thirty never-married and previously-married Island women, aged twenty-seven through sixty-five. As popular media and social narratives overwhelmingly position contemporary single women against an urban backdrop, the question arises as to whether unmarried Island women feel “marooned” in ways their urban counterparts may not. In accordance with feminist aims to produce research for, rather than about, women’s lives, the paper focuses on two themes from fieldwork interviews that were of particular interest to participants. The first theme relates to negotiating female singleness within the Island’s family-centered culture, and the second theme presents participants’ talk around advantages and disadvantages of living in Prince Edward Island, Canada, as single women. The paper concludes with a summary of other findings from the study and suggestions for future research on female singleness and island locales.

Every year in May the yellow tulips bloom.

We have rhubarb growing in our front garden. How did it get there? No idea.

But: rhubarb pie!

Did you know rhubarb pie has only three ingredients!? Rhubarb. Flour. Sugar. Presto!

,

While I was hauling up the summer tires from the basement–one of my least favourite activities of the season–I noticed a roll of copper tucked in a back corner, a vestige of [[Catherine]]’s career as a metalsmith that likely got set there when we moved into the house in 2000 and never revisited.

Having no need for a roll of copper, and having acquainted myself with the wonders of A&S Scrap Metals over the winter, I planned an impromptu field trip with Olivia late yesterday afternoon.

The roll of copper turned out to be 30 pounds of copper, and netted us $126 (at $4.20 a pound).

It turns out that, by happenstance, I timed this deal perfectly, as the price of copper reached an all time high yesterday.

A&S is located out by the airport. It can be seem an intimidating place to visit, but the staff are super-helpful, even if you have no idea what you’re talking about.

Receipt and cash for copper from A&S Scrap Metals

I went for a long bicycle ride this morning: it was sunny and warm and I needed to clear my head.

Last night, while chatting with an old friend about walking and cycling, I complained that, because Charlottetown is, in essence, a peninsula, there’s not really any where to go if you are averse to walking out and doubling back. I decided to prove myself wrong, and to start collecting ways of cycling around Charlottetown in a great circle, a practice made easier by our ever-improving cycling infrastructure.

So I cycled out to the corner of Riverside Drive and Grafton, to take advantage of the new stretch of multi-use path that runs from there north to Park Street, then continued along the path to the Queen Elizabeth Hospital, turned right and cycled the path along Murchison to Hillsborough Hospital, exited through the back parking lot back to the path, and then, through a little jog and jig, joined the still-under-construction path that runs from Pioneer to St. Peters Road (the first section was still under construction, but had nice hard-packed gravel; the second section was lovely smooth pavement).

Cycle-friendly infrastructure comes to a grinding halt at St. Peters Road, and so to continue the great circle I took the St. Peters roundabout to Oak Drive, and continued along Oak to Mt. Edward Road, and then in the back entrance of the mall to join the Confederation Trail.

I continued down the Confederation Trail to Allen Street, where I stopped for lunch–phoned in from Oak Drive 15 minutes earlier—at Thai Pad, and then continued along the trail to Joe Ghiz park and home.

Map of my cycle ride, visualized in the HERE XYX GeoJSON Visualizer

The journey was 14 km from end to end, no doubling back, and a lot of interesting new terrain covered.

I tracked the ride with the my phone, which sends digital breadcrumbs to PhoneTrack. When I got back to the office, I exported from PhoneTrack as a GPX file, then loaded the GPX into GeoJSON.io where I added some annotations, like “This is signed do not enter, but there’s no other way to get to the trail,” and exported as a GeoJSON file, which is a simple, human-readable, Rosetta Stone-like format for passing around map data.

As a result, you can grab a copy for yourself, and load it into your mapping application of choice (HERE XYZ is a good one, as is GeoJSON.io).

I like the idea of GeoJSON Collectibles: digital artifacts that can be shared around like we used to share cassette tapes, with no websites or apps or dependencies on proprietary formats or services required. You can take my GeoJSON, and turn it into your GeoJSON, adding your own route variations and annotations.

Helping with the tools at my disposal.

,

The summer tires on my Kia Soul EV have whatever gizmos inside them needed to allow the car to read the tire pressure. The winter tires do not.

When I switch from winter tires to summer tires, it takes the car a few kilometres to realize this, resulting in a yearly, fleeting, “oh no, something’s broken” feeling in the car.

Documenting this here to remind myself of this in spring 2022. And to record May 10 as my winter to summer tire switchover date.

OPML is much in the air these days: Ton is experimenting with federated bookshelves, and Paul is using OPML of yesteryear to explore his feed-reading past.

Which got me thinking about blog post archaeology, and using the blogs that I read every day as a corpus to explore in different ways.

My first thought was: export my list of feeds as OPML, then write code to parse the OPML to get the RSS feed for each blog, then write more code to retrieve the archive of each blog, and then write more code to parse the body of each post. In theory that would all be possible, as many languages have plug-and-play libraries to make parsing OPML and RSS relatively easy.

But then I realized that my RSS reader, FreshRSS, maintains a long archive of blog posts in its local database. And I thought, as a first experiment, it might be interesting to extract all the quotes from that archive–anything wrapped in “blockquote” in the body of the post–by way of providing an alternate interface for experiencing the posts all over again.

Here’s what I did to make this happen:

I used the command line interface for FreshRSS to export a JSON representation of the archive, one file per blog:

cd freshness
./export-zip-for-user.php --user peter > peter.zip

I copied the resulting peter.zip file to my local machine, unzipped it into a folder called peter, and then used the following PHP, which depends on PHP Simple HTML DOM Parser, to generate an HTML file of the quotes:

<?php

require_once("simplehtmldom/simple_html_dom.php");

$path = "./peter";

if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ('.' === $file) continue;
        if ('..' === $file) continue;
        parseJSON($path . '/' .  $file);
    }
    closedir($handle);
}

function parseJSON($file) {
	$json = file_get_contents($file);
	$feed = json_decode($json);
	if ($feed) {
		print "<h1>" . str_replace(' articles', '', str_replace('List of ', '', $feed->title)) . "</h1>\n";
		foreach ($feed->items as $item) {
			$html = str_get_html($item->content->content);
			if ($html) {
				if ($html->find('blockquote')) {
					echo "<h2><a href=\"" . $item->id . "\">" . $item->title . "</a></h2>\n";
					foreach($html->find('blockquote') as $element) {
						echo "<blockquote style='border: 1px solid grey; padding: 20px'>" . $element->innertext . "</blockquote>\n";
					}
				}
			}
		}
	}
}

I ran the script, dumping the result into an HTML file:

php parse.php > quotes.html

It turns out that the blogs I follow include a lot of quotes, and the file is–quotes.html–is, to some degree, impenetrably useless.

Which got me thinking: what if I rejigged this output as an OPML file, which, among other things, I could load into OmniOutliner to browse.

So, I rejigged the code:

<?php

require_once("simplehtmldom/simple_html_dom.php");

$path = "./peter";

print '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
print '<opml version="2.0"><head><title>Quotes in Posts</title></head>';
print '<body>' . "\n";

if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ('.' === $file) continue;
        if ('..' === $file) continue;
        parseJSON($path . '/' .  $file);
    }
    closedir($handle);
}

print '</body>';
print '</opml>';

function parseJSON($file) {
	$json = file_get_contents($file);
	$feed = json_decode($json);
	if ($feed) {
		print "<outline text=\"" . str_replace(' articles', '', str_replace('List of ', '', htmlspecialchars($feed->title))) . "\">\n";
		foreach ($feed->items as $item) {
			$html = str_get_html($item->content->content);
			if ($html) {
				if ($html->find('blockquote')) {
					echo "<outline text=\"" .  htmlspecialchars($item->title) . "\">\n";
					foreach($html->find('blockquote') as $element) {
						echo "<outline text=\"" . htmlspecialchars(strip_tags($element->innertext)) . "\"></outline>\n";
					}
					print "</outline>\n";
				}
			}
		}
		print "</outline>\n";
	}
}

And, sure enough, the result is somewhat less impenetrable. And kind of cool:

Visualizing block quotes in OPML in OmniOutliner.

The result also shows one of the limitations of HTML as currently practiced, which generally leaves quotes without machine-readable attribution, something that using more semantic HTML, as illustrated here, would help alleviate:

<figure>
    <blockquote cite="https://www.huxley.net/bnw/four.html">
        <p>Words can be like X-rays, if you use them properly—they’ll go through anything. You read and you’re pierced.</p>
    </blockquote>
    <figcaption>—Aldous Huxley, <cite>Brave New World</cite></figcaption>
</figure>

I’ll try to start doing that with my own quotes.

From this New Yorker article about the Penobscot language:

Francis, who is in his early fifties, grew up on Indian Island in an era of burgeoning indigenous activism. He feels that the key to saving Penobscot culture is not just studying the language but using it. “Take the strawberry preserves off the shelf and spread it on a piece of toast” is how he put it to me.

That’s a powerful metaphor for life in general.

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