Narwhal Microblog Plugin for WordPress: Quickly Posting Notes to your IndieWeb Site

This morning, after reading a brief, but interesting snippet in the IndieWeb WordPress chat from last night, David Shanske made me think about an old itch I had to have a quicker and more stripped down posting interface for notes on my website. I immediately thought of WordPress’s P2 and 02 themes/products which had a built-in simple posting interface reminiscent of Twitter’s UI. 

Screencapture of Twitter's simple posting interface

Not wanting to wait to see what David might come up with before the next couple of IndieWebCamps, I thought I’d at least do some research to see what was hiding in the good old WordPress repository. I found a few old plugins that were roughly the sort of idea I was looking for, but they were last maintained about 8-10 years ago. 

Then I came across the Narwhal Microblogging plugin from Billy Wilcosky, which is being actively developed/maintained and has almost exactly what I’m looking for!

Screencapture of the Narwhal microblogging plugin user interface

Apparently the plugin itself had an early simple start before the developer came across Jon Smajda’s plugin Posthaste which was apparently repurposed for the Prologue/P2 code that WordPress used for that product/theme. He’s since rewritten a large chunk of it based on Posthaste’s original code and added in some basic formatting options and the ability to add media, so one can post a quick note along with a photo.

Settings for the plugin are hiding in Settings << Writing admin interface (or at the path /wp-admin/options-writing.php on your website) which includes the ability to choose which pages to display the “widget” and allowing one to hide the title, tags, categories, draft seclector, one’s Gravatar, and the Greeting and Links. I’d personally pare my version down to just provide tags, categories, and the draft options to keep the interface as clean as possible.

Screencapture of the settings for the Narwhal plugin

Finally the developer notes that within the user interface “if you leave the ‘Category:’ box at its default setting it posts to your default category. However… If you have a category named ‘asides’, it will put posts with empty titles into the ‘asides’ category even if you do not explicitly specify the ‘asides’ category in the dropdown. You can then style them as asides.”

This is the view of the posting interface on my site after paring it down to my personal bare minimum.

Benefits

I’ve already discussed some of the immediate benefits for easily and quickly posting directly from my own website. Just below I’ll add a few others.

Most importantly for me at the moment, the plugin works with the Classic Editor in WordPress. The interface also only shows up when one is logged into their website, so visitors won’t ever see it.

Titleless posts

The plugin automatically takes the first 40 characters of your note and posts that into the title field, so you don’t have to bother with it. Sadly, this means that feed readers and other services will take your status updates and give them a title. (Though in the wild, most feed readers do something like this anyway. I am hearing strong rumors that Inoreader is about to have better support for social media-like posts soon.) For those using the plugin for IndieWeb use and prefer to keep their notes/asides/status updates titleless, you can spelunk into the code pretty easily and make a quick change which the developer kindly documents in his support page:

But, if you want to modify the title character limit it is easy to do.

  1. Go to this plugin’s folder and open the narwhal-microblog.php file.
  2. In this file you will see a line for this max character limit and you will see the number 40. You could just increase it to something like 100, 3500, or 999999. Depending on how long you are willing to let your titles get.

In my case, I think I’ll just decrease the character limit to 0 and then rely on the Post Kinds plugin to add it’s customary pseudo-title to the admin interface on my back end so that I can distinguish my posts in the posts pages.

UI suggestions

The category chooser could be a little cleaner and provide a dropdown of all my pre-existing categories with the ability to select multiple ones. I suspect that somewhere in the WordPress universe there’s a way to do this even if it means swiping a snippet of code from core’s editor.

The basic text box for entering text could be a bit smaller on the page to accept 2-4 lines of text since it’s meant for short posts. As it stands now, it defaults to 10, but it also smartly already has a slider that appears when you type more than the available number of lines and it also has a handle in the corner to allow you to increase the boxes size.

I’ve mentioned doing natively titleless notes above, but to make things a bit more user friendly, it would be nice to have the ability in the settings page to enter a number for the text excerpt, so that users could configure it without needing code. I suspect that most in the IndieWeb space would set the title excerpt to zero so as to not have titles on their notes.

It will take me some time to dig into it, but it would be nice if the developer had some notes about the CSS classes used in the plugin so that one might more easily style the display of the output on one’s website. Fortunately the defaults to match one’s current theme seem relatively solid.

At present, there isn’t any UI for including syndication targets to external services like Twitter, Mastodon, etc. It would be nice if there was some tie into syndication services or functionality like that provided with Syndication Links plugin and brid.gy publish or brid.gy fed if those pieces are present.

The last dovetail that would be nice to have, particularly within an IndieWeb framing, would be to have better direct integration of this plugin with the Post Kinds plugin. This could extend to auto-setting the post kind to “note”, which should in turn allow the automatic setting of Post Formats to either “status” or “aside”.

Summary

In sum, this plugin is really fantastic for allowing a simple and lightweight means of posting quick status updates or notes to one’s WordPress website! It’s the next best thing to using any of the variety of Micropub clients, particularly when you already happen to be at your own site.

I suspect this plugin is the sort of thing that many within the IndieWeb and WordPress communities will love using–and at least one person in the chat has already said they think it’s a great find. There are currently less than 10 active installations of the plugin, but I think it deserves a magnitude or more. Let’s see what we can do about that!

Have you tried it? What do you think of the idea?

Comparing Inoreader’s user interface for their internal tweets versus RSS tweets

For a long time I’ve been consuming the majority of my Twitter feed within various feed readers. My most frequent feed reader is Inoreader, though I’ve been experimenting with and using some IndieWeb influenced microsub-based feed readers for quite a while.

Earlier today I thought I’d try out Inoreader’s Twitter integration and subscribe to some of my twitter lists using that instead of importing feeds directly from outside services. (I’ve been a big fan of using Ryan Barrett’s Twitter-Atom and related tools.) One of the things that had always bothered me about third party RSS feeds into most feed readers is that the author of the post is in such tiny text and there is no avatar indicator of who wrote the post. As a result I’m stuck spending a lot more cognitive load trying to discern the author of a tweet before or after reading it. It just boils down to less than optimal user interface.

Fortunately Inoreader seems to have a slightly better method for doing this (since they control the user interface and are presumably using the Twitter API). Within their reader, Tweets look a tad bit more standard with respect to the usual Twitter client and include an avatar and the name of the author in larger font. Sadly, though they have control over the UI, they’re still including a bolded version of the the text of the tweet as a title and thereby needlessly duplicating some of the content. It would be far better for notes, status updates and other content that typically doesn’t have (or need) a title if they would simply just leave it out. They could then use the extra space to have a larger font for reading the short status update. In fact, most of the IndieWeb-based feeds I read in Inoreader have these unnecessary titles included which typically not only look bad from a UI perspective, but they again needlessly duplicate content I don’t need.

Below I’m including screenshots of the two different methods of reading Tweets via Inoreader. I’m also including a screenshot of how Tweets look like in Monocle when fed in via the same Atom feed that was used in the Inoreader case. In Monocle’s version, it’s got a nice larger and easier to discern author name, but it too is missing the author photo (or avatar), in part because the feed doesn’t include it as a default. I suspect that if the feed included it, Monocle would display it properly though the Inoreader version probably wouldn’t. The Monocle version also includes a copy of the photo in the Tweet twice because the feed adds it in a second time as an enclosure.

UI example of a tweet within Inoreader using their native Twitter support.
UI example of a tweet within Inoreader imported using a third party RSS-based client.
UI example of a tweet within Monocle imported using a third party RSS-based client.

For completeness, I’m including the text of the Atom feed for this particular tweet so that we can see what is or isn’t being included in the Inoreader and Monocle versions.

<entry>
<author>
 <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
 <uri>https://twitter.com/BigHistoryPro</uri>
 <name>Big History Project</name>
</author>
    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
  <id>https://twitter.com/BigHistoryPro/status/1195385992728985600</id>
  <title>In an ideal world, you’d have 1-on-1 time with every student to discuss every...</title>
  <content type="xhtml">
  <div xmlns="http://www.w3.org/1999/xhtml">
In an ideal world, you’d have 1-on-1 time with every student to discuss every aspect of every writing assignment. With BHP score, you come close. <br />
<a href="https://bh-p.co/2N1xopV">bh-p.co/2N1xopV</a>
<p>
<a class="link" href="https://twitter.com/BigHistoryPro/status/1195385992728985600">
<img class="u-photo" src="https://pbs.twimg.com/media/EJbdObjXkAQ6QNw.jpg" alt="" />
</a>
</p>
  </div>
  </content>
  <link rel="alternate" type="text/html" href="https://twitter.com/BigHistoryPro/status/1195385992728985600" />
  <link rel="ostatus:conversation" href="https://twitter.com/BigHistoryPro/status/1195385992728985600" />
      <link rel="ostatus:attention" href="https://bh-p.co/2N1xopV" />
      <link rel="mentioned" href="https://bh-p.co/2N1xopV" />   <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
  <published>2019-11-15T17:00:04+00:00</published>
  <updated>2019-11-15T17:00:04+00:00</updated>
  <link rel="self" type="application/atom+xml" href="https://twitter.com/BigHistoryPro/status/1195385992728985600" />
      <link rel="enclosure" href="https://pbs.twimg.com/media/EJbdObjXkAQ6QNw.jpg" type="image/jpeg" />
</entry>

In sum, I generally like the UI of the Inoreader version, though they could still do with removing the redundant and unnecessary title. The Monocle version is likely the best, but I’d need to find a feed method that also includes the avatar to have a better representation of the original Tweet. Even with these differences, I think I tend to prefer Monocle at the end of the day because it also automatically includes Micropub functionality which means that I can post my reactions (likes, reposts, or comments) directly to my website and syndicate copies directly to Twitter. (This is also in consideration of my previously having set up some separate functionality for forcing Inoreader to allow me to post some of this same sort of data to my website by other means.)

Has anyone found better/prettier or more useful ways of consuming Twitter in third party means while allowing one to own their data?

On Blogging Infrastructure

I’ve been reading through a series of essays on Blogging Infrastructure that are part of CJ Eller’s Blogging Futures. There are some interesting ideas hiding in there including the idea of a blogchain, which appears to have originated on Venkatesh Rao’s site Ribbon Farm. As best as I can tell it amounts to linking series of blog posts by potentially multiple authors into a linear long form piece. It reminds me of the idea of a webring, but instead of being random (though some may have historically been completely linear in nature), they’ve got slightly more structure, and instead of linking entire websites, they’re linking posts on a particular idea or topic. 

I’ve also seen some tangential mentions among the Blogging Futures crowd of Webmention, which is essentially a standardized web technology that allows notifications or @mentions between websites on different domains and running completely different software. I know that Tom Critchlow, who is a memeber of the blogchain, has recently set up webmentions, so I’m curious to hear his impression of what a blogchain means after he’s begun using webmention. (Difficultly, he’s using a static site generator, which will tend to make his experience with them a tad more fraught compared with services that have it built in or available by simple plugins.) To me there’s more value in combining the two ideas of Webmention and blogchain wherein each post is able to webmention the other posts within a particular blogchain and thereby create a broader web of related ideas. 

Of course this is all very similar to ideas like IndieNews and Kicks Condor’s IndieWeb.xyz aggregation hub which allow users to post to them by means of Webmention. In some sense this allows for a central repository or hub that collects links to all of the responses for those who want to to participate. These responses could obviously be sorted by topic (aka tag/category), author, and even date. Naturally if each post includes links to all the other pieces in such a blogchain, and all the sites accept and display webmentions, then there will be a more weblike chain of discussion of the topic rather than a more linear one.

I’m not aware of it being done, but I’ve always sort of wished that someone would add webmention support to a wiki platform. Many has been the time I wish I could have added a link into the See also section of the IndieWeb wiki simply by linking to a particular page and sending a webmention. Lots of my online documentation references that wiki and it would be wonderfully useful for links to my content to automatically show up there. Later, others could add some of my content back into the wiki in a more fully fleshed out way, but at least the references would be there. Imagine how the world’s knowledge would be expanded if a larger wiki like Wikipedia had the ability to accept incoming links this way!?

I’ll mention that both the aggregation hubs and the wikis can help to serve as somewhat more centralized means of discovery on the web, which also helps to fuel idea and content production.

All the people I know who have added Webmention have generally fallen in love with it as a new means of posting into and interacting within a rejuvenated blogosphere. There’s more power in posting to one’s own website while still being able to interact in a more social sort of way. 

Podcast discovery, Huffduffer, and listen feeds

As I was reading through some of the subscriptions in Aaron Davis’ well-curated blogroll which I’m subscribed to via OPML Subscription in Inoreader, I was reminded that I should be following my own Huffduffer Collective. This is a feed of audio that comes from all of the accounts I’m following on Jeremy Keith’s awesome Huffduffer audio service. For those looking for a great method for discovering new and interesting audio content and podcasts, this is by far the best discovery service I know.

While finding content which others have bookmarked is an excellent discovery mechanism, I think that finding it by means of things they’ve actually listened to would be even more powerful. By saying you’ve listened to something, it means you’ve put some skin in the game and spent some of your own valuable time actually consuming the content and then separately posting about it. I wonder how Huffduffer might incorporate this sort of “listen” functionality in addition to their bookmarking functionality? I can’t help but thinking that more audio applications should have Micropub functionality for posting listens.

Here I’ll remind people that my website provides just such a feed of my own listens, so if you want to hear exactly what I’ve been listening to, you can have your own feed of it, which I call my faux-cast and you should be able to subscribe to it in most podcatchers. I do roughly the same thing for all the things I read online and off as well. I may bookmark something as interesting, but you know it was even more valuable to me when I’ve spent the time to actually listen to or read it from start to finish.

Do you have a listen feed I could subscribe to?  Perhaps a Huffduffer account I should follow? How do you discover audio content online? How could this be used in the education technology space?

Following People on Hypothes.is

I get a LOT of value out of using Hypothes.is, but one of my favorite parts is having the RSS feeds of about a dozen interesting peoples’ H feeds piped into my reader. I get not only interesting things to read, but highlights and annotations of the best of it all.

The general format for feeds to subscribe to is https://hypothes.is/stream.atom?user=XYZ.  As an example my personal feed is at https://hypothes.is/stream.atom?user=chrisaldrich. Some of my other favorites are judell, actualham, nateangell, mpelzel, mrkrndvs, jgmac1106, and jeremydean.

(By the way, you can do a similar thing for tag topics like: https://hypothes.is/stream.atom?tag=OER.)

I wish that the system had some more social features to make discovery and following of friends and colleagues easier, but doing it the hard way sort of makes it that much more valuable.

Who are you following there? Which other interesting Hypothes.is users should I be following? Do let me know.

WordPress and IndieWeb: Creating Your Dialtone on the Internet

Next weekend, I’ll be giving a talk at the third annual WordCamp Riverside on Saturday, November 9th at 11:00 AM Pacific in the Innovation room. If you haven’t registered already, there are still tickets left for purchase.

After having watched the livestream of Tantek Çelik’s invited talk at WordCamp US entitled Take Back Your Web, I’ll note that my intention is to generally pick up from where he left off and get into some of the nuts and bolts of what some of the IndieWeb philosophies and technologies are and how they work with WordPress. (Though don’t worry if you missed his talk, I’ll put all the ideas into their larger context.) I’ll approach it from the perspective of a WordPress beginner, but will have some pointers to lots of in-depth resources for designers and developers. In short, I’ll attempt to provide a crash-course overview of what the IndieWeb looks like from a WordPress perspective.

Below is a brief teaser for the talk:

Welcome to Web 3.0, the internet you always wish you had.

I can have phone service on Verizon and you may choose to use AT&T, T-Mobile, or Sprint, but as long as we’ve got phones we can talk to each other or any other phone number that’s connected to the network. But why can’t Facebook users interact directly with Twitter users or Instagram users or vice versa? Crucially why couldn’t one website built on WordPress talk to another website built with Drupal or Kirby? The internet is an open communication platform after all! I’m going to show how this (and so much more magic) can all be done with some simple plugins in under an hour!
Over the past several years a group of dedicated bloggers, technologists, and designers has been innovating, building, and testing a suite of open W3C web standards to allow their personal websites to recreate the major pieces of interactive functionality that are part of the largest social media sites like Facebook, Twitter, Instagram, LinkedIn, SoundCloud, etc. These larger pieces are now all working together across dozens of content management systems including WordPress, Drupal, WithKnown, ProcessWire, Elgg, Nucleus CMS, Craft, Django, Kirby, static site generators like Hugo and Jekyll and services like Micro.Blog and Mastodon. This means that instead of relying on smaller non-interoperable social media sites that obsessively surveil you and then pollute your stream with obtrusive ads, you can now better own and control your own data and comprehensive identity on your own domain name. In this talk we’ll take a high level look at W3C web specs including Webmention, WebSub, Micropub, and the forthcoming Microsub to see how you can make your own website a first class citizen on the (social) web. Using WordPress and a few simple plugins you can now close the circle of website-to-website intercommunication across the open web. Use your own website to read and consume web content, post your own status updates, bookmarks, likes, and replies while interacting directly with other websites. In many cases you can also do this with social platforms like Twitter, Instagram, Flickr, GitHub, Mastodon, and Micro.blog.

Expanding Ekphrasis to the Broader Field of Mnemotechny: or How the Shield of Achilles Relates to a Towel, Car, and Water Buffalo

If Lynne Kelly‘s thesis about the methods of memory used by indigenous peoples is correct, and I strongly believe it is, then the concept of ekphrasis as illustrated in the description of the Shield of Achilles in Homer’s Iliad (Book 18, lines 478–608) is far more useful than we may have previously known. I strongly suspect that Achilles’ Shield is an early sung version of a memory palace to which were once attached other (now lost) memories from Bronze Age Greece.

The word ekphrasis, or ecphrasis, comes from the Greek for the description of a work of art produced as a rhetorical exercise, often used in the adjectival form ekphrastic.—Wikipedia

While many may consider this example of Homer’s to be the first instance of ekphrasis within literature (primarily because it specifically depicts an artwork, which is part of the more formal definition of the word), I would posit that even earlier descriptions in the Iliad itself which go into great detail about individuals and their methods of death are also included in a broader conception of ekphrasis. This larger ekphrasis subsumes all of these descriptions in an tradition of orality as being portions of ancient memory palaces within a broader field of mnemotechny. I imagine that these graphic, bloody, and larger-than-life depictions of death not only encoded the names and ideas of the original people/ancestors, but they were also quite likely to have had additional layers of memory encoded (or attached) to them as well. Here I’m suggesting that while an actual shield may or may not have originally existed that even once the physical shield or other object is gone or lost that the remembered story of the shield still provides a memory palace to which other ideas can be attached.

(I’ll remind the forgetful reader than mnemotechny grows out of the ancient art of rhetoric as envisioned in Rhetorica ad Herennium, and thus the use of ekphrasis as a rhetorical device implicitly subsumes the idea of memory, though most modern readers may not have that association.)

Later versions of ekphrasis in post-literate history may have been more about the arts themselves and related references and commentary (example: Keats’ Ode on a Grecian Urn), but I have a strong feeling that this idea’s original incarnation was more closely related to early memory methods at the border of oral and literate societies.

In other words, ancient performers, poets, etc. may have created their own memory palaces by which they were able to remember long stories like the Iliad, but what is to say that these stories themselves weren’t in turn memory palaces to the listeners themselves? I myself have previously used the plot and portions of the movie Fletch as a meta memory palace in just this way. As the result of ritualistic semi-annual re-watchings of classic and engaging movies like this, I can dramatically expand my collection of memory palaces. The best part is that while my exterior physical location may change, classics movies will always stay the same. And in a different framing, my memories of portions of history may also help me recall a plethora of famous movie quotes as well.

Can I borrow your towel? My car just hit a water buffalo.—Irwin M. Fletcher

The web is my social network: My talk from WordCamp Riverside 2018

WordPress.tv has posted my talk from WordCamp Riverside 2018. If you missed it live, you can review it again now. The slides can be found here on my site.


Download

MP4: Low, Med, High
OGG: Low

The web is my social network

Growing toxicity on Twitter, Facebook’s Cambridge Analytica scandal, algorithmic feeds, and a myriad of other problems have opened our eyes to the ever-growing costs of social media. Walled gardens have trapped us with the promise of “free” while addicting us to their products at the cost of our happiness, sense of self, sanity, and privacy. Can we take back our fractured online identities, data, and privacy to regain what we’ve lost?
I’ll talk about how I’ve used IndieWeb related technologies in conjunction with WordPress as a replacement for my social presence while still allowing easy interaction with friends, family, and colleagues online. I’ll show how everyone can easily use simple web standards to make WordPress a user-controlled, first-class social platform that works across domains and even other CMSs.
Let’s democratize social media using WordPress and the open web, the last social network you’ll ever need to join.

Social Reading User Interface for Discovery

I read quite a bit of material online. I save “bookmarks” of all of it on my personal website, sometimes with some additional notes and sometimes even with more explicit annotations. One of the things I feel like I’m missing from my browser, browser extensions, and/or social feed reader is a social layer overlay that could indicate that people in my social network(s) have read or interacted directly with that page (presuming they make that data openly available.)

One of the things I’d love to see pop up out of the discovery explorations of the IndieWeb or some of the social readers in the space is the ability to uncover some of this social reading information. Toward this end I thought I’d collect some user interface examples of things that border on this sort of data to make the brainstorming and building of such functionality easier in the near future.

If I’m missing useful examples or you’d like to add additional thoughts, please feel free to comment below.

Examples of social reading user interface for discovery

Google

I don’t often search for reading material directly, but Google has a related bit of UI indicating that I’ve visited a website before. I sort of wish it had the ability to surface the fact that I’ve previously read or bookmarked an article or provided data about people in my social network who’ve done similarly within the browser interface for a particular article (without the search.) If a browser could use data from my personal website in the background to indicate that I’ve interacted with it before (and provide those links, notes, etc.), that would be awesome!

Screen capture for Google search of Kevin Marks with a highlight indicating that I've visited this page in the recent past
Screen capture for Google search of Kevin Marks with a highlight indicating that I’ve visited his page several times in the past. Given the March 2017 date, it’s obvious that the screen shot is from a browser and account I don’t use often.

I’ll note here that because of the way I bookmark or post reads on my own website, my site often ranks reasonably well for those things.

On a search for an article by Aaron Parecki, my own post indicating that I’ve read it in the past ranks second right under the original.

In some cases, others who are posting about those things (reading, commenting, bookmarking, liking, etc.) in my social network also show up in these sorts of searches. How cool would it be to have a social reader that could display this sort of social data based on people it knows I’m following

A search for a great article by Matthias Ott shows that both I and several of my friends (indicated by red arrows superimposed on the search query) have read, bookmarked, or commented on it too.

Hypothes.is

Hypothes.is is a great open source highlighting, annotation, and bookmarking tool with a browser extension that shows an indicator of how many annotations  appear on the page. In my experience, higher numbers often indicate some interesting and engaging material. I do wish that it had a follower/following model that could indicate my social sphere has annotated a page. I also wouldn’t mind if their extension “bug” in the browser bar had another indicator in the other corner to indicate that I had previously annotated a page!

Screen capture of Vannevar Bush’s article As We May Think in The Atlantic with a Hypothes.is browser extension bug indicating that there are 329 annotations on the page.

Reading.am

It doesn’t do it until after-the-fact, but Reading.am has a pop up overlay through its browser extension. It adds me to the list of people who’ve read an article, but it also indicates others in the network and those I’m following who have also read it (sometimes along with annotations about their thoughts).

What I wouldn’t give to see that pop up in the corner before I’ve read it!

Reading.am’s social layer creates a yellow colored pop up list in the upper right of the browser indicating who else has read the article as well as showing some of their notes on it. Unfortunately it doesn’t pop up until after you’ve marked the item as read.

Nuzzel

Nuzzel is one of my favorite tools. I input my Twitter account as well as some custom lists and it surfaces articles that people in my Twitter network have been tweeting about. As a result, it’s one of the best discovery tools out there for solid longer form content. Rarely do I read content coming out of Nuzzel and feel robbed. Because of how it works, it’s automatically showing those people in my network and some of what they’ve thought about it. I love this contextualization.

Nuzzel’s interface shows the title and an excerpt of an article and also includes the avatars, names, network, and commentary of one’s friends that interacted with the piece. In this example it’s relatively obvious that one reader influenced several others who retweeted it because of her.

Goodreads

Naturally sites for much longer form content will use social network data about interest, reviews, and interaction to a much greater extent since there is a larger investment of time involved. Thus social signaling can be more valuable in this context. A great example here is of Goodreads which shows me those in my network who are interested in reading a particular book or who have written reviews or given ratings.

A slightly excerpted/modified screen capture of the Goodreads page for Melanie Mitchell’s book Complexity that indicates several in my social network are also interested in reading it.

Are there other examples I’m missing? Are you aware of similar discovery related tools for reading that leverage social network data?

Micropub and WordPress: Custom Posting Applications My talk from WordCamp Santa Clarita Valley 2019

WordPress.tv has posted my talk from WordCamp Santa Clarita Valley 2019. If you missed it live, you can review it again now. The slides are available for download as well.

Download

MP4: LowMedHigh
OGG: Low

Micropub and WordPress: Custom Posting Applications

April 6, 2019, 3:30 pm Horseshoe Ranch Room, University Center, College of the Canyons — The W3C recommended Micropub specification (2017) allows developers to create custom posting applications for a wide variety of data targeting any content management system that supports the spec.

Chris Aldrich provides an overview of the available plugin and endpoint for WordPress and a variety of client applications like Quill, Teacup, OwnYourGram, OwnYour Swarm, Omnibear, that allow one to post status updates, bookmarks, likes, check-ins/location data, photos, and more directly to WordPress sites.
We’ll also talk about how developers can create custom posting interfaces to drastically simplify content creation and posting for clients in ways that can be even simpler than working with Gutenberg.

Domains, power, the commons, credit, SEO, and some code implications

How to provide better credit on the web using the standard rel=“canonical” by looking at an example from the Open Learner Patchbook

A couple of weeks back, I noticed and began following Cassie Nooyen when I became aware of her at the Domains 2019 conference which I followed fairly closely online.

She was a presenter and wrote a couple of nice follow up pieces about her experiences on her website. I bookmarked one of them to read later, and then two days later I came across this tweet by Terry Green, who had also apparently noticed her post:

But I was surprised to see the link in the tweet points to a different post in the Open Learner Patchbook, which is an interesting site in and of itself.

This means that there are now at least two full copies of Cassie’s post online:

While I didn’t see a Creative Commons notice on Cassie’s original or any mention of permissions or even a link to the source of the original on the copy on the Open Patchbook, I don’t doubt that Terry asked Cassie for permission to post a copy of her work on his site. I’ll also suspect that it may have been the case that Cassie might not have wanted any attention drawn to herself or her post on her site and may have eschewed a link to it. I will note that the Open Patchbook did have a link to her Twitter presence as a means of credit. (I’ll still maintain that people should be preferring links to their own domain over Twitter for credits like these–take back your power!)

Even with these crediting caveats aside, there’s a subtle technical piece hiding here relating to search engines and search engine optimization that many in the Domain of One’s Own space may not realize exists, or if they do they may not be sure how to fix. This technical subtlety is that search engines attempt to assign proper credit too. As a result there’s a very high chance that Open Patchbook could rank higher in search for Cassie’s own post than Cassie’s original. As researchers and educators we’d obviously vastly prefer the original to get the credit. So what’s going on here?

Search engines use a web standard known as rel=“canonical”, a microformat which is most often found in the HTML <header> of a web page. If we view the current source of the copy on the Open Learner Patchbook, we’ll see the following:

<link rel="canonical" href="http://openlearnerpatchbook.org/technology/patch-twenty-five-my-domain-my-place-to-grow/" />

According to the Microformats wiki:

By adding rel=“canonical” to a hyperlink, a page indicates that the destination of that hyperlink should be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.

In the case of our example of Cassie’s post, search engines will treat the two pages as completely separate, but will suspect that one is a duplicate of the other. This could have dramatic consequences for one or the other sites in which search engines will choose one to prefer over the other, and, in some cases, search engines may penalize one site for having duplicate content and not stating that fact (in their metadata). Typically this would have more drastic and averse consequences for Cassie’s original in comparison with an institutional site. 

How do we fix the injustice of this metadata? 

There are a variety of ways, but I’ll focus on several in the WordPress space. 

WordPress core has built-in functionality that should set the permalink for a particular page as the canonical one. This is why the Open Patchbook page displays the incorrect canonical link. Since most people are likely to already have an SEO related plugin installed on their site and almost all of them have this capability, this is likely the quickest and easiest method for being able to change canonical links for pages and posts. Two popular choices for this are Yoast and All in One SEO which have simple settings for inputting and saving alternate canonical URLs. Yoast documents the steps pretty well, so I’ll provide an example using All in One SEO:

  • If not done already, click the checkbox for canonical URLs in the “General Settings” section for the plugin generally found at /wp-admin/admin.php?page=all-in-one-seo-pack%2Faioseop_class.php.
  • For the post (or page) in question, within the All in One SEO metabox in the admin interface (pictured) put the full URL of the original posts’ location.
  • (Re-)publish the post.

Screenshot of the AIOSEO metabox with the field for the Canonical URL outlined in red

If you’re using another SEO plugin, it likely handles canonical URLs similarly, so check their documentation.

For aggregation websites, like the Open Learner Patchbook, there’s also another solid option for not only setting the canonical URL, but for more quickly copying the original post as well. In these cases I love PressForward, a WordPress plugin from the Roy Rosenzweig Center for History and New Media which was designed with the education space in mind. The plugin allows one to quickly gather, organize, and republish content from other places on the web. It does so in a smart and ethical way and provides ample opportunity for providing appropriate citations as well as, for our purposes, setting the original URL as the canonical one. Because PressForward is such a powerful and diverse tool (as well as a built-in feed reader for your WordPress website), I’ll refer users to their excellent documentations.

Another useful reason I’ll mention for using rel-canonical mark up is that I’ve seen cases in which using it will allow other web standards-based tools like Hypothes.is to match pages for highlights and annotations. I suspect that if the Open Patchwork page did have the canonical link specified that any annotations made on it with Hypothes.is should mirror properly on the original as well (and vice-versa). 

I also suspect that there are some valuable uses of this sort of small metadata-based mark up within the Open Educational Resources (OER) space.

In short, when copying and reposting content from an original source online, it’s both courteous and useful to mark the copy as such by putting a tag onto the URL of the original to provide it with the full credit as the canonical source.

An annotation example for Hypothes.is using <blockquote> markup to maintain annotations on quoted passages

A test of some highlighting functionality with respect to rel-canonical mark up. I’m going to blockquote a passage of an original elsewhere on the web with a Hypothes.is annotation/highlight on it to see if the annotation will properly transclude it.

I’m using the following general markup to make this happen:

<blockquote><link rel="canonical" href="https://www.example.com/annotated_URL">
Text of the thing which was previously annotated.
</blockquote>

Let’s give it a whirl:

This summer marks the one-year anniversary of acquiring my domain through St. Norbert’s “Domain of One’s Own” program Knight Domains. I have learned a few important lessons over the past year about what having your own domain can mean.

SECURITY

The first issue that I never really thought about was the security and privacy on my domain. A few months after having my domain, I realized that if you searched my name, my domain was one of the first things that popped up. I was excited about this, but I soon realized that this meant everything I blogged about was very much in the open. This meant all of my pictures and also every person I have mentioned. I made the decision to only use first names when talking about others and the things we have done together. This way, I can protect their privacy in such an open space. With social media you have some control over who can see your post based on who “friends” or “follows you”; on a domain, this is not as much of a luxury. Originally, I thought my domain would be something I only shared with close friends and family, like a social media page, but understanding how many people have the opportunity to see it really shocked me and pushed me to think about the bigger picture of security and safety for me and those around me.

—Cassie Nooyens in What Having a Domain for a year has Taught Me

Unfortunately, however, I’m noticing that if I quote multiple sources this way (at least in my Chrome browser), only the last quoted block of text transcludes the Hypothes.is annotations. Based on prior experiments using rel-canonical mark up I’ve noticed this behavior, but I suspect it’s simply the fact that the rel-canonical appears on the page and matches one original. It would be awesome if such a rel-canonical link which was nested into any number of blockquote tags would cause the annotations from the originals

Perhaps Jon Udell and friends could shed some light on this and or make some tweaks so that blockquoting multiple sources within the same page could also allow the annotations on those quoted passages to be transcluded onto them?

Separately, I’m a tad worried that any annotations now made on my original could also be mistakenly pushed back to the quoted pages because of the matching rel-canonical without anything taking into account the nested portions of the page or the blockquoted pieces. I’ll make a test on a word or phrase like “security and privacy” to see if this is the case. We’ll all notice that of course this test fails by seeing the highlight on Cassie’s original. Oh well…

So the question becomes, is there a way within the annotation spec to allow us to write simple HTML documents that blockquote portions of other texts in such a way that we can bring over the annotations of those other texts (or allow annotating them on our original page and have them pushed back to the original) within the blockquoted portions, yet still not interfere with annotating our own original document? Ideally what other HTML tags could/should this work on? Further could this be common? Generally useful? Or simply just a unique edge case with wishful thinking made from this pet example? Perhaps there’s a better way to implement it than my just having thrown in the random link on a whim? Am I misguidedly attempting to do something that already exists?

Domains 2019 Reflections from Afar

My OPML Domains Project

Not being able to attend Domains 2019 in person, I was bound and determined to attend as much of it as I could manage remotely. A lot of this revolved around following the hashtag for the conference, watching the Virtually Connecting sessions, interacting online, and starting to watch the archived videos after-the-fact. Even with all of this, for a while I had been meaning to flesh out my ability to follow the domains (aka websites) of other attendees and people in the space. Currently the easiest way (for me) to do this is via RSS with a feed reader, so I began collecting feeds of those from the Twitter list of Domains ’17 and Domains ’19 attendees as well as others in the education-related space who tweet about A Domain of One’s Own or IndieWeb. In some sense, I would be doing some additional aggregation work on expanding my blogroll, or, as I call it now, my following page since it’s much too large and diverse to fit into a sidebar on my website.

For some brief background, my following page is built on some old functionality in WordPress core that has since been hidden. I’m using the old Links Manager for collecting links and feeds of people, projects, groups, and institutions. This link manager creates standard OPML files, which WordPress can break up by categories, that can easily be imported/exported into most standard feed readers. Even better, some feed readers like Inoreader, support OPML subscriptions, so one could subscribe to my OPML file, and any time I update it in the future with new subscriptions, your feed reader would automatically update to follow those as well. I use this functionality in my own Inoreader account, so that any new subscriptions I add to my own site are simply synced to my feed reader without needing to be separately added or updated.

The best part of creating such a list and publishing it in a standard format is that you, dear reader, don’t need to spend the several hours I did to find, curate, and compile the list to recreate it for yourself, but you can now download it, modify it if necessary, and have a copy for yourself in just a few minutes. (Toward that end, I’m also happy to update it or make additions if others think it’s missing anyone interesting in the space–feedback, questions, and comments are heartily encouraged.) You can see a human-readable version of the list at this link, or find the computer parse-able/feed reader subscribe-able link here.

To make it explicit, I’ll also note that these lists also help me to keep up with people and changes in the timeframe between conferences.

Anecdotal Domains observations

In executing this OPML project I noticed some interesting things about the Domains community at large (or at least those who are avid enough to travel and attend in person or actively engage online). I’ll lay these out below. Perhaps at a future date, I’ll do a more explicit capture of the data with some analysis.

The largest majority of sites I came across were, unsurprisingly, WordPress-based, which made it much easier to find RSS feeds to read/consume material. I could simply take a domain name and add /feed/ to the end of the URL, and voilà, a relatively quick follow!

There are a lot of people whose sites didn’t have obvious links to their feeds. To me this is a desperate tragedy for the open web. We’re already behind the eight ball compared to social media and corporate controlled sites, why make it harder for people to read/consume our content from our own domains? And as if to add insult to injury, the places on one’s website where an RSS feed link/icon would typically live were instead populated by links to corporate social media like Facebook, Twitter, and Instagram. In a few cases I also saw legacy links to Google+ which ended service and disappeared from the web along with a tremendous number of online identities and personal data on April 2, 2019. (Here’s a reminder to remove those if you’ve forgotten.) For those who are also facing this problem, there’s a fantastic service called SubToMe that has a universal follow button that can be installed or which works well with a browser bookmarklet and a wide variety of feed readers.

I was thrilled to see a few people were using interesting alternate content management systems/site generators like WithKnown and Grav. There were  also several people who had branched out to static site generators (sites without a database). This sort of plurality is a great thing for the community and competition in the space for sites, design, user experience, etc. is awesome. It’s thrilling to see people in the Domains space taking advantage of alternate options, experimenting with them, and using them in the wild.

I’ll note that I did see a few poor souls who were using Wix. I know there was at least one warning about Wix at the conference, but in case it wasn’t stated explicitly, Wix does not support exporting data, which makes any potential future migration of sites difficult. Definitely don’t use it for any extended writing, as cutting and pasting more than a few simple static pages becomes onerous. To make matters worse, Wix doesn’t offer any sort of back up service, so if they chose to shut your site off for any reason, you’d be completely out of luck. No back up + no export = I couldn’t recommend using.

If your account or any of your services are cancelled, it may result in loss of content and data. You are responsible to back up your data and materials. —Wix Terms of Use

I also noticed a few people had generic domain names that they didn’t really own (and not even in the sense of rental ownership). Here I’m talking about domain names of the form username.domainsproject.com. While I’m glad that they have a domain that they can use and generally control, it’s not one that they can truly exert full ownership over. (They just can’t pick it up and take it with them.) Even if they could export/import their data to another service or even a different content management system, all their old links would immediately disappear from the web. In the case of students, while it’s nice that their school may provide this space, it is more problematic for data portability and longevity on the web that they’ll eventually lose that institutional domain name when they graduate. On the other hand, if you have something like yourname.com as your digital home, you can export/import, change content management services, hosting companies, etc. and all your content will still resolve and you’ll be imminently more find-able by your friends and colleagues. This choice is essentially the internet equivalent of changing cellular providers from Sprint to AT&T but taking your phone number with you–you may change providers, but people will still know where to find you without being any the wiser about your service provider changes. I think that for allowing students and faculty the ability to more easily move their content and their sites, Domains projects should require individual custom domains.

If you don’t own/control your physical domain name, you’re prone to lose a lot of value built up in your permalinks. I’m also reminded of here of the situation encountered by faculty who move from one university to another. (Congratulations by the way to Martha Burtis on the pending move to Plymouth State. You’ll notice she won’t face this problem.)  There’s also the situation of Matthew Green, a security researcher at Johns Hopkins whose institutional website was taken down by his university when the National Security Agency flagged an apparent issue. Fortunately in his case, he had his own separate domain name and content on an external server and his institutional account was just a mirrored copy of his own domain.

If you’ve got it, flaunt it.
—Mel Brooks from The Producers (1968), obviously with the it being a referent to A Domain of One’s Own.

Also during my project, I noted that quite a lot of people don’t list their own personal/professional domains within their Twitter or other social media profiles. This seems a glaring omission particularly for at least one whose Twitter bio creatively and proactively claims that they’re an avid proponent of A Domain of One’s Own.

And finally there were a small–but still reasonable–number of people within the community for whom I couldn’t find their domain at all! A small number assuredly are new to the space or exploring it, and so I’d give a pass, but I was honestly shocked that some just didn’t.

(Caveat: I’ll freely admit that the value of Domains is that one has ultimate control including the right not to have or use one or even to have a private, hidden, and completely locked down one, just the way that Dalton chose not to walk in the conformity scene in The Dead Poet’s Society. But even with this in mind, how can we ethically recommend this pathway to students, friends, and colleagues if we’re not willing to participate ourselves?)

Too much Twitter & a challenge for the next Domains Conference

One of the things that shocked me most at a working conference about the idea of A Domain of One’s Own within education where there was more than significant time given to the ideas of privacy, tracking, and surveillance, was the extent that nearly everyone present gave up their identity, authority, and digital autonomy to Twitter, a company which actively represents almost every version of the poor ethics, surveillance, tracking, and design choices we all abhor within the edtech space.

Why weren’t people proactively using their own domains to communicate instead? Why weren’t their notes, observations, highlights, bookmarks, likes, reposts, etc. posted to their own websites? Isn’t that part of what we’re in all this for?!

One of the shining examples from Domains 2019 that I caught as it was occurring was John Stewart’s site where he was aggregating talk titles, abstracts, notes, and other details relevant to himself and his practice. He then published them in the open and syndicated the copies to Twitter where the rest of the conversation seemed to be happening. His living notebook– or digital commmonplace book if you will–is of immense value not only to him, but to all who are able to access it. But you may ask, “Chris, didn’t you notice them on Twitter first?” In fact, I did not! I caught them because I was following the live feed of some of the researchers, educators, and technologists I follow in my feed reader using the OPML files mentioned above. I would submit, especially as a remote participant/follower of the conversation, that his individual posts were worth 50 or more individual tweets. Just the additional context they contained made them proverbially worth their weight in gold.

Perhaps for the next conference, we might build a planet or site that could aggregate all the feeds of people’s domains using their categories/tags or other means to create our own version of the Twitter stream? Alternately, by that time, I suspect that work on some of the new IndieWeb readers will have solidified to allow people to read feeds and interact with that content directly and immediately in much the way Twitter works now except that all the interaction will occur on our own domains.

As educators, one of the most valuable things we can and should do is model appropriate behavior for students. I think it’s high time that when attending a professional conference about A Domain of One’s Own that we all ought to be actively doing it using our own domains. Maybe we could even quit putting our Twitter handles on our slides, and just put our domain names on them instead?

Of course, I wouldn’t and couldn’t suggest or even ask others to do this if I weren’t willing and able to do it myself.  So as a trial and proof of concept, I’ve actively posted all my interactions related to Domains 2019 that I was interested in to my own website using the tag Domains 2019.  At that URL, you’ll find all the things I liked and bookmarked, as well as the bits of conversation on Twitter and others’ sites that I’ve commented on or replied to. All of it originated on my own domain, and, when it appeared on Twitter, it was syndicated only secondarily so that others would see it since that was where the conversation was generally being aggregated. You can almost go back and recreate my entire Domains 2019 experience in real time by following my posts, notes, and details on my personal website.

So, next time around can we make an attempt to dump Twitter!? The technology for pulling it off certainly already exists, and is reasonably well-supported by WordPress, WithKnown, Grav, and even some of the static site generators I noticed in my brief survey above. (Wix obviously doesn’t even come close…)

I’m more than happy to help people build and flesh out the infrastructure necessary to try to make the jump. Even if just a few of us began doing it, we could serve as that all-important model for others as well as for our students and other constituencies. With a bit of help and effort before the next Domains Conference, I’ll bet we could collectively pull it off. I think many of us are either well- or even over-versed in the toxicities and surveillance underpinnings of social media, learning management systems, and other digital products in the edtech space, but now we ought to attempt a move away from it with an infrastructure that is our own–our Domains.

From Following Posts and Blogrolls (Following Pages) with OPML to Microsub Servers and Readers

I’m still tinkering away at pathways for following people (and websites) on the open web (in my case within WordPress). I’m doing it with an eye toward making some of the UI and infrastructure easier in light of the current fleet of Microsub servers and readers that will enable easier social reading without the centralized reliance on services like Facebook, Twitter, Instagram, Snapchat, Medium, LinkedIn, et al.

If you haven’t been following along, here are some relevant pieces for background:

Generally I’ve been adding data into my Following Page (aka blogroll on steroids) using the old WordPress Links Manager pseudo-manually. (There’s also a way to bulk import to it via OPML, using the WordPress Tools Menu or via /wp-admin/import.php?import=opml). The old Links Manager functionality in WordPress had a bookmarklet to add links to it quickly, though it currently only seems to add a minimal set–typically just the URL and the page title. Perhaps someone with stronger JavaScript skills than I possess could improve on it or integrate/leverage some of David Shanske’s Parse This work into such a bookmark to pull more data out of pages (via Microformats, Schema.org, Open Graph Protocol, or Dublin Core meta) to pre-fill the Links Manager with more metadata including page feeds, which I now understand Parse This does in the past month or so. (If more than one feed is found, they could be added in comma separated form to the “Notes” section and the user could cut/paste the appropriate one into the feed section.) Since I spent some significant time trying to find/dig up that old bookmarklet, I’ll mention that it can be found in the Restore Lost Functionality plugin (along with many other goodies) and a related version also exists in the Link Library plugin, though on a small test I found it only pulled in the URL.

Since it wasn’t completely intuitive to find, I’ll include the JavaScript snippet for the Links Manager bookmarklet below, though note that the URL hard coded into it is for example.com, so change that part if you’re modifying for your own use. (I haven’t tested it, but it may require the Press This plugin which replaces some of the functionality that was taken out of WordPress core in version 4.9. It will certainly require one to enable using the Links Manager either via code or via plugin.)

javascript:void(linkmanpopup=window.open('https://exanple.com/wp-admin/link-add.php?action=popup&linkurl='+escape(location.href)+'&name='+escape(document.title),'LinkManager','scrollbars=yes,width=750,height=550,left=15,top=15,status=yes,resizable=yes'));linkmanpopup.focus();window.focus();linkmanpopup.focus();

Since I’ve been digging around a bit, I’ll note that Yannick Lefebvre’s Link Library plugin seems to have a similar sort of functionality to Links Manager and adds in the ability to add a variety of additional data fields including tags, which Ton Zijlstra mentions he would like (and I wouldn’t mind either). Unfortunately I’m not seeing any OPML functionality in the plugin, so it wins at doing display (with a huge variety of settings) for a stand-alone blogroll, but it may fail at the data portability for doing the additional OPML portion we’ve been looking at. Of course I’m happy to be corrected, but I don’t see anything in the documentation or a cursory glance at the code.

In the most ideal world, I’d love to be able to use the Post Kinds Plugin to create follow posts (see my examples). This plugin is already able to generally use bookmarklet functionality to pull in a variety of meta data using the Parse This code which is also built into Post Kinds.

It would be nice if these follow posts would also copy their data into the Links Manager (to keep things DRY), so that the blogroll and the OPML files are automatically updated all at once. (Barring Post Kinds transferring the data, it would be nice to have an improved bookmarklet for pulling data into the Links Manager piece directly.)

Naturally having the ability for these OPML files be readable/usable by Jack Jamieson’s forthcoming Yarns Microsub Server for WordPress (for use with social readers) would be phenomenal. (I believe there are already one or two OPML to h-feed converters for Microsub in the wild.) All of this would be a nice end -to-end solution for quickly and easily following people (or sites) with a variety of feeds and feed types (RSS, Atom, JSONfeed, h-feed).

An additional refinement of the blogroll display portion would be to have that page display as an h-feed of h-entries each including properly marked up h-cards with appropriate microformats and discoverable RSS feeds to make it easier for other sites to find and use that data. (This may be a more IndieWeb-based method of displaying such a page compared with the OPML spec.) I’ll also note that the Links Manager uses v1 of the OPML spec and it would potentially be nice to have an update on that as well for newer discovery tools/methods like Dave Winer’s Share Your OPML Subscription list, which I’m noting seems to be down/not functioning at the moment.