I’ve been on a skateboard only once in my life. My friend Timmy, who lived up on the 13th Concession, made his own skateboard out of a piece of wood and some casters, and he let me try it out one afternoon in his basement. I fell down. I did not get back up again.

Other than an aborted attempt to windsurf, on a lake near Parham, Ontario, in 1988, I have been absent from the balancing-on-a-board sports scene ever since.

The arrival of electric skateboards on the scene recently, most prominently under the feet of prolific YouTuber Casey Neistat and his Boosted board, has caused me to reconsider for the first time. They look like so much fun!

I was disabused of this notion, however, after reading some helpful Reddit threads, which have me convinced that I would almost immediately and irreparably injure myself if I were to try.

So I will remain with feet on ground.

Today’s letterpress experiment: a tiny bookmark.

My friend Ton’s WordPress blog supports Pingbacks, which the WordPress documentation describes like this:

A pingback is a special type of comment that’s created when you link to another blog post, as long as the other blog is set to accept pingbacks. To create a pingback, just link to another WordPress blog post. If that post has pingbacks enabled, the blog owner will see a pingback appear in their comments section

So, for example, if I want to indicate to Ton that this post is in reference to his post from earlier today, Reinventing Distributed Conversations, his post contains guidance for my blogging engine as to where to send that notification:

<link rel="pingback" href="https://www.zylstra.org/wp/xmlrpc.php" />

(I found that by using View > Source from my browser menu when reading Ton’s post).

Unfortunately contemporary Drupal (the blogging software I’m using to write this) has no built-in support for Pingbacks. There have been add-on modules in the past, but none have been updated recently, and none are covered by Drupal’s security advisory policy:

I suspect this is because as Drupal transitioned from Drupal 6 to Drupal 7, the commercial web had taken over,  the social web was withering on the vine, and there was little or no motivation to develop modules for a standard that few were using.

In the interim there are workarounds: this script allows me, in theory, to notify Ton’s blog manually, from the command line, with a Pingback, like this:

./pingback.sh \ 
    https://ruk.ca/content/resuscitating-pingbacks \
    https://www.zylstra.org/blog/2018/04/reinventing-distributed-conversations/

I tried that out just now, but it didn’t work: there’s too much in the script that’s not supported by macOS.

So, using guidance here, I tried doing this very manually, created an XML payload:

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
 <param>
  <value>
   <string>https://ruk.ca/content/resuscitating-pingbacks</string>
  </value>
 </param>
 <param>
  <value>
   <string>https://www.zylstra.org/blog/2018/04/reinventing-distributed-conversations/</string>
  </value>
 </param>
</params>
</methodCall>

and then used cURL to POST that to Ton’s Pingback endpoint:

curl -X POST -d @pingback.xml https://www.zylstra.org/wp/xmlrpc.php

But the response I got back suggests that there’s something up on Ton’s end:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /wp/xmlrpc.php
on this server.</p>
</body></html>

I suspect that might be due to Ton or his surrogates closing off access to Pingback because of a vulnerability.

So no Pingbacks for now, both because my Drupal won’t send them, and Ton’s WordPress won’t receive them.

However, thanks to the diligent work of the IndieWeb tribe, there’s a more modern standard, called Webmention, that might allow us to get to the same place: there’s a plugin for WordPress for Ton’s end, but only support via the atrophied Vinculum module for Drupal; I’ll dig into that and see if there’s a way forward.

In the meantime, I’ll just manually leave a comment on Ton’s blog pointing here.

Update: I reinstalled Vinculum and have it set up to both send and receive Webmentions. As a result, if you View > Source on this page, you’ll find:

<link rel="webmention" href="https://ruk.ca/node/22274/webmention" />

This means that this page should be able to receive Webmentions. But it seems to be only partially working. Anyone care to send?

My friend Ton has been blogging up a storm on the blogging-about-blogging front of late:

He is, as such, a man after my own heart.

And he’s inspired me to recall the long-dormant feeling of how it felt to be building the Internet together, back in the days before we outsourced this to commercial interests as a way of saving money, learning curve and messiness.

The difference now, a year after I decamped from the commercial web, is that when I did that I was focused on a combination of “the commercial web is evil” and a profound sense of personal failure at having been part of letting that happen, whereas now I’m filled with tremendous hope.

It’s not a coincidence that I work under a banner called Reinvented: time and time and time again over the course of my life I’ve found utility in returning to earlier iterations of technology.

Letterpress printing has taught me so much about the true nature of letterforms, in a way that the digital never could.

Keeping a ready supply of cards, envelopes and stamps in the office has kindled a practice of regularly thanking people for kindnesses, advocacies, and boldnesses.

Teaching myself to sketch has changed the way I look at architecture.

What Ton’s writing–and the zeitgeist that surrounds it–have made me remember is that we invented blogging already and then, not completely but almost, we threw it away.

But all the ideas and tools and debates and challenges we hashed out 20 years ago on this front are as relevant today as they were then; indeed they are more vital now that we’ve seen what the alternatives are. And, fortunately, often we’ve recorded much of what we learned in our blogs themselves.

So I propose we move on from “Facecbook is evil” to “blogging is awesome–how can we continue to evolve it.” And, in doing so, start to put the inter back into the Internet.

Dictionary definition of inter: 1 between; among: inter-agency | interblend. 2 mutually; reciprocally: interactive.

Nine years ago Oliver presented a delightful video tour of our Yotel room at Heathrow Airport; it may be the best review of anything, ever (of course I am somewhat biased in this regard).

In this spirit, albeit in a non-narrated and decidedly less delightful manner, I recorded a tour of my room at the Yotel in Boston, where I stayed last week en route back to PEI.

Last year I posted some instructions–mostly for my own use–for transcoding video I’d recorded and uploading the results to Amazon S3 so that I could embed video in an HTML5 video element here on the blog.

While that proved useful, and a commercial-free alternative to posting to YouTube, the friction involved in the multi-step process was enough to dissuade me from posting video as often as I would like.

So today I set out to streamline this through automation, and I’m documenting the process here, both so that I don’t forget how I did it and as a guide to others.

The starting point is a video recorded on my Nextbit Robin phone: videos I record with the phone are automatically synced to Google Photos where I can download them as MP4 files.

So I begin, say, with a file called goldingjobber-newhome.mp4 on my Mac desktop:

Screen shot of video icon on my Mac desktop

To have a version of that video that will play across different browsers requires that I transcode (aka “convert”) the video to Webm format. I experimented with doing this locally on my Mac using ffmpeg, but this took a really long time, more than my day-to-day patience would support.

Fortunately, Amazon Web Services has a very-low-cost web service for doing exactly this called Amazon Elastic Transcoder, and it works relatively quickly by compare.

So I wrote a Mac Automator script to do the following:

  1. Upload the MP4 file on my Desktop to Amazon S3.
  2. Transcode the video to Webm.
  3. Put a chunk of HTML on my Mac clipboard that I can paste into the source of a blog post.

The Automator script looks like this:

say "Uploading original video to S3"
/usr/local/bin/aws s3 cp $1 s3://images.ruk.ca/ --acl public-read
say "Transcoding to Web-M"
/usr/local/bin/aws elastictranscoder create-job --pipeline-id 1523992573945-p552kg --input Key=$(basename $1),FrameRate=auto,Resolution=auto,AspectRatio=auto,Interlaced=auto,Container=auto --job-output '{"Key":"'$(basename $1 .mp4)'.webm","ThumbnailPattern":"","Rotate":"auto","PresetId":"1351620000001-100240","Watermarks":[]}'
echo "<p>
  <video controls='' style='width: 100%; max-width: 100%; height: auto;'>
     <source src='https://s3.amazonaws.com/images.ruk.ca/$(basename $1)' type='video/mp4; codecs=avc1.42E01E,adpcm_ima_qt)' />
     <source src='https://s3.amazonaws.com/images.ruk.ca/$(basename $1 .mp4).webm' type='video/webm; codecs=vp8,vorbis' />
  </video>
</p>" | pbcopy
say "HTML copied to clipboard"

Going through this line by line, here’s what’s happening:

/usr/local/bin/aws s3 cp $1 s3://images.ruk.ca/ --acl public-read

This takes the file I’ve highlighted on the Desktop and sent to the Automator script ($1) and uses the Amazon Web Services command line tool aws to upload it to Amazon S3 as a publicly-readable file. When this is complete, I end up with a file at https://s3.amazonaws.com/images.ruk.ca/goldingjobber-newhome.mp4 that I can then use as the starting point for transcoding.

/usr/local/bin/aws elastictranscoder create-job --pipeline-id 1523992573945-p552kg --input Key=$(basename $1),FrameRate=auto,Resolution=auto,AspectRatio=auto,Interlaced=auto,Container=auto --job-output '{"Key":"'$(basename $1 .mp4)'.webm","ThumbnailPattern":"","Rotate":"auto","PresetId":"1351620000001-100240","Watermarks":[]}'

This is where the heavy-lifting happens: I use the aws tool to create what Elastic Transcoder calls a “job,” passing the name of the file I uploaded to S3 as the input:

--input Key=$(basename $1)

And setting the output filename as that same name, minus the .mp4 extension, with a .webm extension:

--job-output '{"Key":"'$(basename $1 .mp4)'.webm"...

The pipeline-id parameter is the ID of an Elastic Transcoder pipeline that defined the S3 bucket to look for the input file in, the bucket to save the output file in, and with what permissions:

Screen shot showing Pipeline ID value in AWS

The PresetId value is the ID of an Elastic Transcoder preset for transcoding into Webm:

Screen shot of Preset ID value in AWS

The end result of this process is that, moments later, I end up with a transcoded Webm version of the video at https://s3.amazonaws.com/images.ruk.ca/goldingjobber-newhome.webm.

echo "<p>
  <video controls='' style='width: 100%; max-width: 100%; height: auto;'>
     <source src='https://s3.amazonaws.com/images.ruk.ca/$(basename $1)' type='video/mp4; codecs=avc1.42E01E,adpcm_ima_qt)' />
     <source src='https://s3.amazonaws.com/images.ruk.ca/$(basename $1 .mp4).webm' type='video/webm; codecs=vp8,vorbis' />
  </video>
</p>" | pbcopy

Finally, I use the Mac pbcopy tool to copy some pre-configured HTML onto the Mac clipboard, ready for pasting into the source of a blog post.

In Automator, this all ends up looking like this:

Screen shot of Automator source for this script

While this seems all quite complex under the hood, actually using the script is dead-simple: I simply right-click on the video file on my Mac Desktop and select “Transcode and Upload Video to Blog” from the contextual menu:

Screen shot of using the Automator script

The result is that all of the above happens, and I end up with this HTML on my Mac clipboard:

<p>
  <video controls='' style='width: 100%; max-width: 100%; height: auto;'>
     <source src='https://s3.amazonaws.com/images.ruk.ca/goldingjobber-newhome.mp4' type='video/mp4; codecs=avc1.42E01E,adpcm_ima_qt)' />
     <source src='https://s3.amazonaws.com/images.ruk.ca/goldingjobber-newhome.webm' type='video/webm; codecs=vp8,vorbis' />
  </video>
</p>

When I embed that HTML into a blog post, the result looks like this:

I made this spontaneous declaration to a friend this afternoon

Johnstons River is the new Brooklyn.

Mark my words.

Spotted in Rova magazine, which caters to the #vanlife crowd, an ad for Amazon CamperForce, a recruiting program for people who live in their campers to come and work for Amazon from August to Christmas while living at an Amazon-sponsored campsite.

Libby Osgood on learning how to learn about sustainability in the novitiate:

Learning how to learn about sustainability is not something I expected to learn in the novitiate. Ever in the process of transformation, I recognize that to be a sister means to have an endlessly renewed openness to the cries of the world. Today, that is ecological sustainability. Tomorrow… we’ll have to wait and see (and hopefully be open to whatever challenge comes).

An “endlessly renewed openness to the cries of the world” is something we should all cultivate.

A perforator being for sale in Okotoks is the start of a great short story.

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