Jo Vito Ramírez makes an end table:

Sick of watching videos from experts insisting that their wildly complicated craft is “simple”? Why not learn along with another beginner? Join Jo Vito Ramírez as he attempts to build an end table. For the first time.

🗓️

Besides being an excellent song, Karine Polwart’s I Burn but I Am Not Consumed is one of the few songs written about gneiss, surely the only song ever sung from the perspective of gneiss, and certainly the only song written from the perspective of gneiss about Donald Trump.

As the son of a geologist, I feel an obligation to tell you these things.

(If you want to see some gneiss up close, there’s a gneiss boulder in Charlottetown).

🗓️
Karine Polwart  •  Geology  •  Charlottetown Boulder Park  •  Gneiss  •  Donald Trump

In case this has escaped your notice, #DancingontheInside is why we invented the Internet.

It started with this song from Gen Hoshino, to which he added:

Share your own instrumental accompaniments, arrangements, dances or covers on YouTube!

And the Internet complied.

Like this.

And this.

And this.

And this.

🗓️
#DancingontheInside  •  Japan  •  Music  •  COVID-19

For the first time in 38 years of driving, I suffered a cracked windshield. So the Kia Soul is at Good Guys this morning having a new one installed.

Postscript: Excellent service, quick turnaround. Good Guys is in a funny business: if I’m typical, I need windshield work maybe once a decade, so their challenge is to stay top-of-mind with longevity. In their case, it’s a long history of television commercials that does it.

🗓️

Under cover of pandemic darkness, Corney’s Shoe Store on Queen Street pulled up stakes. Inside has been stripped back to the brick, not a shoe to be seen.

🗓️
Charlottetown  •  Retail  •  History

On the left is the spoke wrench loaned to me by my friend Cynthia, which works like a dream; on the right is a 3D printed spoke wrench, which took just over 3 hours to to print on my Monoprice Select Mini 3D printer, which was an abject failure: the PLA simple wasn’t up to the task.

Photo of a metal spoke wrench (left) and my attempt at a 3D printed one (right)

🗓️

Charlottetown: where the mayor, who used to be your son’s French teacher, stops his crane to let you walk your bicycle across the street; then, 10 minutes later, you pass your Green MLA, who defeated the mayor’s brother in the last election, washing the windows of her house; then, 5 minutes after that, you run into said former MLA, and have a conversation about PHP and screen scraping.

🗓️

Swag to be included with the next issue of C1A 4R4:

Photo of drying "Hello from C1A 4R4" cards.

🗓️

I’ve been working on a way of keeping the photos and videos in Catherine’s Instagram online without Instagram, and finally came up with a solution today, which you can browse to your heart’s content at:

http://eramosa.net/instagram

Catherine posted to Instagram for four years, from December of 2015 to December of 2019. She started and ended in the Christmas season, and so both her first video and her last video were of the Christmas village that gets set up in our dining room every year.

To generate this static HTML version, I started with a data dump requested from Instagram, and wrote a short PHP script to process the media.json file found therein, which contains an index of every photo, video and story in the archive.

The script first loads in the JSON file and converts it to a PHP object:

$media_file = file_get_contents("media.json");
$media = json_decode($media_file);

Then it generates a thumbnail image, using ImageMagick, for every image, and writes the HTML needed to render that image, and link to the original:

fwrite($fp, "<h2>Photos</h2>\n");
foreach($media->photos as $key => $photo) {
	$html = "<a href='" . $photo->path . "'><img src='thumbnails/" . $photo->path . "' width='200' height='200' alt='" . htmlentities($photo->caption, ENT_QUOTES) . "' title='" . htmlentities($photo->caption, ENT_QUOTES) . "'></a> ";
	fwrite($fp, $html . "\n");
	$parts = explode("/", $photo->path);
	$subdir = $parts[1];
	if (!file_exists("thumbnails/photos/$subdir")) {
		system("mkdir thumbnails/photos/$subdir");
	}
	if (!file_exists("thumbnails/" . $photo->path)) {
		system("convert " . $photo->path . " -resize 200x200 thumbnails/" . $photo->path);
	}
}

It goes through the same process for the videos and stories, the result being one big index.html that shows everything. A sort of anti-Instagram, UX-wise.

I uploaded this file, along with the generated thumbnails and the photos, videos and stories directories, to an Amazon S3 bucket, wired up Catherine’s eramosa.net domain name to the bucket and, presto, static website.

Screen shot of Catherine's static Instagram archive.

🗓️
Audio file

My friend Dave Atkinson mused that an oral history of how I learned the things I learned the other day came to be learned.

So I recorded one.

🗓️
Dave Atkinson  •  Podcast  •  Blogging  •  Oral History

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.

Instagram • YouTube • Vimeo • ORCID • OpenStreetMap • Internet Archive • PEI.art • Drupal • Github.