Creating a tag cloud directory for the Post Kinds Plugin on WordPress

Yesterday after discovering it on Xavier Roy’s site I was reminded that the Post Kinds Plugin is built on a custom taxonomy and, as a result, has the ability to output its taxonomy in typical WordPress Tag Cloud widget. I had previously been maintaining/displaying a separate category structure for Kinds, which I always thought was a bit much in my category area. While it’s personally nice to have the metadata, I didn’t like how it made the categories so overwhelming and somehow disjointed.

For others who haven’t realized the functionality is hiding in the Post Kinds Plugin, here are some quick instructions for enabling the tag cloud widget:

  1. In the administrative UI, go to Appearance » Widgets in the menu structure.
  2. Drag the “Tag Cloud” widget to one of your available sidebars, footers, headers or available widget areas.
  3. Give the widget a title. I chose “Post Kinds”.
  4. Under the “Taxonomy” heading choose Kinds.
  5. If you want to show tag counts for your kinds, then select the checkbox.
  6. If necessary, select visibility if you want to create conditions for which pages, posts, etc. where the widget will appear.
  7. Finally click save.

You’ll end up with something in your widget area that looks something like this (depending on which Kinds you have enabled and which options you chose):

The tag cloud for the Post Kinds plugin data

If you’re interested in changing or modifying the output or display of your tag cloud, you can do so with the documentation for the Function Reference wp tag cloud in the WordPress Codex.

Syndicated copies to:

IndieWeb Summit 2018 Recap

Last week was the 8th annual IndieWeb Summit held in Portland, Oregon. While IndieWeb Camps and Summits have traditionally been held on weekends during people’s free time, this one held in the middle of the week was a roaring success. With well over 50 people in attendance, this was almost certainly the largest attendance I’ve seen to date. I suspect since people who flew in for the event had really committed, the attendance on the second day was much higher than usual as well. It was great to see so many people hacking on their personal websites and tools to make their personal online experiences richer.

The year of the Indie Reader

Last year I wrote the post Feed Reader Revolution in response to an increasingly growing need I’ve seen in the social space for a new sort of functionality in feed readers. While there have been a few interesting attempts like Woodwind which have shown a proof-of-concept, not much work had been done until some initial work by Aaron Parecki and a session at last year’s IndieWeb Summit entitled Putting it all Together.

Over the past year I’ve been closely watching Aaron Parecki; Grant Richmond and Jonathan LaCour; Eddie Hinkle; and Kristof De Jaeger’s collective progress on the microsub specification as well as their respective projects Aperture/Monocle; Together; Indigenous/Indigenous for iOS; and Indigenous for Android. As a result in early May I was overjoyed to suggest a keynote session on readers and was stupefied this week as many of them have officially launched and are open to general registration as relatively solid beta web services.

I spent a few minutes in a session at the end of Tuesday and managed to log into Aperture and create an account (#16, though I suspect I may be one of the first to use it besides the initial group of five developers). I also managed to quickly and easily add a microsub endpoint to my website as well. Sadly I’ve got some tweaks to make to my own installation to properly log into any of the reader app front ends. Based on several of the demos I’ve seen over the past months, the functionality involved is not only impressive, but it’s a properly large step ahead of some of the basic user interface provided by the now-shuttered Woodwind.xyz service (though the code is still available for self-hosting.)

Several people have committed to make attempts at creating a microsub server including Jack Jamieson who has announced an attempt at creating one for WordPress after having recently built the Yarns reader for WordPress from scratch this past year. I suspect within the coming year we’ll see one or two additional servers as well as some additional reading front ends. In fact, Ryan Barrett spent the day on Wednesday hacking away at leveraging the News Blur API and leveraging it to make News Blur a front end for Aperture’s server functionality. I’m hoping others may do the same for other popular readers like Feedly or Inoreader to expand on the plurality of offerings. Increased competition for new reader offerings can only improve the entire space.

Even more reading related support

Just before the Summit, gRegor Morrill unveiled the beta version of his micropub client Indiebookclub.biz which allows one to log in with their own website and use it to post reading updates to their own website. For those who don’t yet support micropub, the service saves the data for eventual export. His work on it continued through the summit to continue to improve an already impressive product. It’s the fist micropub client of its kind amidst a growing field of websites (including WordPress and WithKnown which both have plugins) that offer reading post support. Micro.blog has recently updated its code to allow users of the platform the ability to post reads with indiebookclub.biz as well. As a result of this spurt of reading related support there’s now a draft proposal to add read-of and read-status support as new Microformats. Perhaps reads will be included in future updates of the post-type-discovery algorithm as well?

Given the growth of reading post support and a new micropub read client, I suspect it won’t take long before some of the new microsub-related readers begin supporting read post micropub functionality as well.

IndieAuth Servers

In addition to David Shanske’s recent valiant update to the IndieAuth plugin for WordPress, Manton Reece managed to finish up coding work to unveil another implementation of IndieAuth at the Summit. His version is for the micro.blog platform which is a significant addition to the community and will add several hundred additional users who will have broader access to a wide assortment of functionality as a result.

The Future

While work continues apace on a broad variety of fronts, I was happy to see that my proposal for a session on IndieAlgorithms was accepted (despite my leading another topic earlier in the day). It was well attended and sparked some interesting discussion about how individuals might also be able to exert greater control over what they’re presented to consume. With the rise of Indie feed readers this year, the ability to better control and filter one’s incoming content is going to take on a greater importance in the very near future. With an increasing number of readers to choose from, more people will hopefully be able to free themselves from the vagaries of the blackbox algorithms that drive content distribution and presentation in products like Facebook, Twitter, Instagram and others. Based on the architecture of servers like Aperture, perhaps we might be able to modify some of the microsub spec to allow more freedom and flexibility in what will assuredly be the next step in the evolution of the IndieWeb?

Diversity

While there are miles and miles to go before we sleep, I was happy to have seen a session on diversity pop up at the Summit. I hope we can all take the general topic to heart to be more inclusive and actively invite friends into our fold. Thanks to Jean for suggesting and guiding the conversation and everyone else for continuing it throughout the rest of the summit and beyond.

Other Highlights

Naturally, the above are just a few of the bigger highlights as I perceive them. I’m sure others will appear in the IndieNews feed or other blogposts about the summit. The IndieWeb is something subtly different to each person, so I hope everyone takes a moment to share (on your own sites naturally) what you got out of all the sessions and discussions. There was a tremendous amount of discussion, debate, and advancement of the state of the art of the continually growing IndieWeb. Fortunately almost all of it was captured in the IndieWeb chat, on Twitter, and on video available through either the IndieWeb wiki pages for the summit or directly from the IndieWeb YouTube channel.

I suspect David Shanske and I will have more to say in what is sure to be a recap episode in our next podcast.

Photos

Finally, below I’m including a bunch of photos I took over the course of my trip. I’m far from a professional photographer, but hopefully they’ll give a small representation of some of the fun we all had at camp.

Final Thanks

People

While I’m thinking about it, I wanted to take a moment to thank everyone who came to the summit. You all really made it a fantastic event!

I’d particularly like to thank Aaron Parecki, Tantek Çelik, gRegor Morrill, Marty McGuire, and David Shanske who did a lot of the organizing and volunteer work to help make the summit happen as well as to capture it so well for others to participate remotely or even view major portions of it after-the-fact. I would be remiss if I didn’t thank Martijn van der Ven for some herculean efforts on IRC/Chat in documenting things in real time as well as for some serious wiki gardening along the way. As always, there are a huge crew of others whose contributions large and small help to make up the rich fabric of the community and we wouldn’t be who we are without your help. Thank you all! (Or as I might say in chat: community++).

And finally, a special personal thanks to Greg McVerry for kindly letting me join him at the Hotel deLuxe for some late night discussions on the intersection of IndieWeb and Domain of One’s Own philosophies as they dovetail with the education sector.  With growing interest and a wealth of ideas in this area, I’m confident it’s going to be a rapidly growing one over the coming years.

Sponsors

I’d also like to take a moment to say thanks to all the sponsors who helped to make the event a success including Name.com, GoDaddy, Okta, Mozilla, DreamHost, and likely a few others who I’m missing at the moment.

I’d also like to thank the Eliot Center for letting us hosting the event at their fabulous facility.

Syndicated copies to:

The Pepper Drive Parade

Our local neighborhood gets together at 10am on the 4th of July for a neighborhood parade. There are far more people in the parade than watching it, so it’s more like a gathering at the top of the street in preparation followed by a procession to the bottom of the street where there’s another gathering with snacks and drinks. Those who are along the parade route seem to eventually join the parade and walk to the end for the party.

There were some truly creative little costumes and decorations, but I think my favorite part of the parade today was a bewildered coyote that was coming up the street in the opposite direction of the parade who was shocked to see a mob of people with horses and a firetruck coming down the street. He managed to run off down a side street and escape.

Syndicated copies to:

Threaded conversations between WordPress and Twitter

I’ve written about threading comments from one WordPress website to another before. I’ve long suspected this type of thing could be done with Twitter, but never really bothered with it or necessarily needed to do it, though I’ve often seen cases where others might have wanted to do this.

For a post today, I wrote on my own site and syndicated it to Twitter and got a reply back via webmention through Brid.gy. This process happens for me almost every day, and this all by itself feels magical.  The real magic however, and I don’t think I’ve done this before or seen it done, was that I replied to the backfed comment on my site inline and manually syndicated to Twitter using a permalink of the form http://www.example.com/standard-permalink-structure/?replytocom=57527#respond, where 57527 is the particular comment ID for my inline comment. (This comment ID can typically be found by hovering over the “Reply” or “Comment” button on one’s WordPress website in most browsers.)

Where to find the comment ID to provide the proper permalink to get properly nested comments backfed to your site.

When a reply to my second syndicated Twitter post came in, Brid.gy properly sent it as a comment to my comment AND nested it properly!

I’ve now got a nested copy of the conversation on my site that is identical to the one on Twitter.

I suspect that by carefully choosing the URL structure you syndicate to Twitter, you’ll allow yourself more control over how backfed comments from Brid.gy nest (or don’t) in your response section on your site.

Perhaps even more powerfully, non-WordPress-based websites could also use these permalinks structures for composing their replies to WordPress sites to have their replies nest properly too. I think I’ve seen Aaron Parecki do this in the wild.

Since the WordPress Webmention plugin now includes functionality for sending webmentions directly from the comments section, I’ll have to double check that the microformats on my comments are properly marked up to  see if I can start leveraging Brid.gy publish functionality to send threaded replies to Twitter automatically. Or perhaps work on something that will allow automatic replies via Twitter API. Hmmm…

Despite the fact that this could all be a bit more automated, the fact that one can easily do threaded replies between WordPress and Twitter makes me quite happy.

Thread onward!

For more on my IndieWeb explorations with Twitter, see my IndieWeb Research page.

Syndicated copies to:

Plans and Thoughts for IndieWebSummit

IndieWeb Summit is upon us. Going into it I thought I’d jot down a handful of areas I’d like to play around with this week (and in coming weeks) as well as make a short list of things I might like to potentially build on day two. Things are sure to change as I see presentations and have conversations throughout the day, but at least I’ll have the ideas to hack around on in the coming weeks and months afterwards.

Session ideas

IndieWeb for Education (edtech, OER, outreach, DoOO)
Readers
Annotations
Publics/Audience
Vouch
Journalism
Syndication
Commonplace books online
WordPress Outreach (microformats for theme developers)

Build

Fix micropub set up for my site (esp. for reads/checkins)
TwentyTwelve theme fork with mf2 compatibility
Annotations post kind
Itch post kind
IFTTT code for PESOS from various RSS feeds
Plugin for the fragmentioner
Add annotations/highlights to the post types page
Tweaks to the Hypothesis Aggregator plugin to suit my workflow

 

An Outline for Using Hypothesis for Owning your Annotations and Highlights

I was taken with Ian O’Byrne’s righteous excitement in his video the other day over the realization that he could potentially own his online annotations using Hypothesis, that I thought I’d take a moment to outline a few methods I’ve used.

There are certainly variations of ways for attempting to own one’s own annotations using Hypothesis and syndicating them to one’s website (via a PESOS workflow), but I thought I’d outline the quickest version I’m aware of that requires little to no programming or code, but also allows some relatively pretty results. While some of the portions below are WordPress specific, there’s certainly no reason they couldn’t be implemented for other systems.

Saving individual annotations one at a time

Here’s an easy method for taking each individual annotation you create on Hypothesis and quickly porting it to your site:

Create an IFTTT.com recipe to port your Hypothesis RSS feed into WordPress posts. Generally chose an “If RSS, then WordPress” setup and use the following data to build the recipe:

  • Input feed: https://hypothes.is/stream.atom?user=username (change username to your user name)
  • Optional title: 📑 {{EntryTitle}}
  • Body: {{EntryContent}} from {{EntryUrl}} <br />{{EntryPublished}}
  • Categories: Highlight (use whatever categories you prefer, but be aware they’ll apply to all your future posts from this feed)
  • Tags: hypothes.is
  • Post status (optional): I set mine to “Draft” so I have the option to keep it privately or to publish it publicly at a later date.

Modify any of the above fields as necessary for your needs. IFTTT.com usually polls your feed every 10-15 minutes. You can usually pretty quickly take this data and turn it into your post kind of preference–suggestions include read, bookmark, like, favorite, or even reply. Add additional categories, tags, or other metadata as necessary for easier searching at a later time.

Here’s an example of one on my website that uses this method. I’ve obviously created a custom highlight post kind of my own for more specific presentation as well as microformats markup.

A highlight from Hypothesis posted on my own website using some customized code to create a “Highlight post” using the Post Kinds Plugin.

Aggregating lots of annotations on a single page

If you do a lot of annotations on Hypothesis and prefer to create a bookmark or read post that aggregates all of your annotations on a given post, the quickest way I’ve seen on WordPress to export your data is to use the Hypothesis Aggregator plugin [GitHub].

  • Create a tag “key” for a particular article by creating an acronym from the article title followed by the date and then the author’s initials. This will allow you to quickly conglomerate all the annotations for a particular article or web page. As an example for this article I’d use: OUHOAH062218CA. In addition to any other necessary tags, I’ll tag each of my annotations on the particular article with this somewhat random, yet specific key for which there are unlikely to be any other similar tags in my account.
  • Create a bookmark, read, reply or other post kind to which you’ll attach your annotations. I often use a bookmarklet for speed here.
  • Use the Hypothesis Aggregator’s short code for your tag and username to pull your annotations for the particular tag. It will look like this:
    [hypothesis user = 'username' tags = 'tagname']

    If you’re clever, you could include this shortcode in the body of your IFTTT recipe (if you’re using drafts) and simply change the tag name to the appropriate one to save half a step or need to remember the shortcode format each time.

If you’re worried that Hypothes.is may eventually shut down, the plugin quits working (leaving you with ugly short codes in your post) or all of the above, you can add the following steps as a quick work-around.

  • Input the shortcode as above, click on the “Preview” button in WordPress’s Publish meta box which will open a new window and let you view your post.
  • Copy the preview of the annotations you’d like to keep in your post and paste them over your shortcode in the Visual editor tab on your draft post. (This will maintain the simple HTML formatting tags, which you can also edit or supplement if you like.)
  • I also strip out the additional unnecessary data from Hypothesis Aggregator about the article it’s from as well as the line about who created the annotation which isn’t necessary as my post will implicitly have that data. Depending on how you make your post (i.e. not using the Post Kinds Plugin), you may want to keep it.

As Greg McVerry kindly points out, Jon Udell has created a simple web-tool for inputting a few bits of data about a set of annotations to export them variously in HTML, CSV, or JSON format. If you’re not a developer and don’t want to fuss with Hypothesis’ API, this is also a reasonably solid method of quickly exporting subsections of your annotations and cutting and pasting them onto your website. It does export a lot more data that one might want for their site and could require some additional clean up, particularly in HTML format.

Perhaps with some elbow grease and coding skill, sometime in the future, we’ll have a simple way to implement a POSSE workflow that will allow you to post your annotations to your own website and syndicate them to services like Hypothesis. In the erstwhile, hopefully this will help close a little of the data gap for those using their websites as their commonplace books or digital notebooks.

Syndicated copies to:

Some thoughts on highlights and marginalia with examples

Earlier today I created a read post with some highlights and marginalia related to a post by Ian O’Bryne. In addition to posting it and the data for my own purposes, I’m also did it as a manual test of sorts, particularly since it seemed apropos in reply to Ian’s particular post. I thought I’d take a stab at continuing to refine my work at owning and controlling my own highlights, notes, and annotations on the web. I suspect that being able to better support this will also help to bring more self-publishing and its benefits to the halls of academe.

At present I’m relying on a PESOS solution to post on another site and syndicate a copy back to my own site. I’ve used Hypothesis, in large part for their fantastic UI and as well for the data transfer portion (via RSS and even API options), to own the highlights and marginalia I’ve made on the original on Ian’s site. Since he’s syndicated a copy of his original to Medium.com, I suppose I could syndicate copies of my data there as well, but I’m saving myself the additional manual pain for the moment.

Rather than send a dozen+ webmentions to Ian, I’ve bundling everything up in one post. He’ll receive it and it would default to display as a read post though I suspect he may switch it to a reply post for display on his own site. For his own use case, as inferred from his discussion about self-publishing and peer-review within the academy, it might be more useful for him to have received the dozen webmentions. I’m half tempted to have done all the annotations as stand alone posts (much the way they were done within Hypothesis as I read) and use some sort of custom microformats mark up for the highlights and annotations (something along the lines of u-highlight-of and u-annotation-of). At present however, I’ve got some UI concerns about doing so.

One problem is that, on my site, I’d be adding 14 different individual posts, which are all related to one particular piece of external content. Some would be standard replies while others would be highlights and the remainder annotations. Unless there’s some particular reason to do so, compiling them into one post on my site seems to be the most logical thing to do from my perspective and that of my potential readers. I’ll note that I would distinguish annotations as being similar to comments/replies, but semantically they’re meant more for my sake than for the receiving site’s sake. It might be beneficial for the receiving site to accept and display them (preferably in-line) though I could see sites defaulting to considering them vanilla mentions as a fallback.  Perhaps there’s a better way of marking everything up so that my site can bundle the related details into a single post, but still allow the receiving site to log the 14 different reactions and display them appropriately? One needs to not only think about how one’s own site looks, but potentially how others might like to receive the data to display it appropriately on their sites if they’d like as well. As an example, I hope Ian edits out my annotations of his typos if he chooses to display my read post as a comment.

One might take some clues from Hypothesis which has multiple views for their highlights and marginalia. They have a standalone view for each individual highlight/annotation with its own tag structure. They’ve also got views that target highlights/annotation in situ. While looking at an original document, one can easily scroll up and down through the entire page’s highlights and annotations. One piece of functionality I do wish they would make easier is to filter out a view of just my annotations on the particular page (and give it a URL), or provide an easier way to conglomerate just my annotations. To accomplish a bit of this I’ll typically create a custom tag for a particular page so that I can use Hypothesis’ search functionality to display them all on one page with a single URL. Sadly this isn’t perfect because it could be gamed from the outside–something which might be done in a classroom setting using open annotations rather than having a particular group for annotating. I’ll also note in passing that Hypothesis provides RSS and Atom feeds in a variety of ways so that one could quickly utilize services like IFTTT.com or Zapier to save all of their personal highlights and annotations to their website. I suspect I’ll get around to documenting this in the near future for those interested in the specifics.

Another reservation is that there currently isn’t yet a simple or standard way of marking up highlights or marginalia, much less displaying them specifically within the WordPress ecosystem. As I don’t believe Ian’s site is currently as fragmentions friendly as mine, I’m using links on the date/time stamp for each highlight/annotation which uses Hypothesis’ internal functionality to open a copy of the annotated page and automatically scroll down to the fragment as mentioned before. I could potentially see people choosing to either facepile highlights and/or marginalia, wanting to display them in-line within their text, or possibly display them as standalone comments in their comments section. I could also see people wanting to be able to choose between these options based on the particular portions or potentially senders. Some of my own notes are really set up as replies, but the CSS I’m using physically adds the word “Annotation”–I’ll have to remedy this in a future version.

The other benefit of these date/time stamped Hypothesis links is that I can mark them up with the microformat u-syndication class for the future as well. Perhaps someone might implement backfeed of comments until and unless Hypothesis implements webmentions? For fun, some of my annotations on Hypothesis also have links back to my copy as well. In any case, there are links on both copies pointing at each other, so one can switch from one to the other.

I could imagine a world in which it would be nice if I could use a service like Hypothesis as a micropub client and compose my highlights/marginalia there and micropub it to my own site, which then in turn sends webmentions to the marked up site. This could be a potential godsend to researchers/academics using Hypothesis to aggregate their research into their own personal online (potentially open) notebooks. In addition to adding bookmark functionality, I could see some of these be killer features in the Omnibear browser extension, Quill, or similar micropub clients.

I could also see a use-case for adding highlight and annotation kinds to the Post Kinds plugin for accomplishing some of this. In particular it would be nice to have a quick and easy user interface for creating these types of content (especially via bookmarklet), though again this path also relies on doing individual posts instead of a single post or potentially a collection of posts. A side benefit would be in having individual tags for each highlight or marginal note, which is something Hypothesis provides. Of course let’s not forget the quote post kind already exists, though I’ll have to think through the implications of that versus a slightly different semantic version of the two, at least in the ways I would potentially use them. I’ll note that some blogs (Colin Walker and Eddie Hinkle come to mind) have a front page that display today’s posts (or the n-most recent); perhaps I could leverage this to create a collection post of highlights and marginalia (keyed off of the original URL) to make collection posts that fit into my various streams of content. I’m also aware of a series plugin that David Shanske is using which aggregates content like this, though I’m not quite sure this is the right solution for the problem.

Eventually with some additional manual experimentation and though in doing this, I’ll get around to adding some pieces and additional functionality to the site. I’m still also interested in adding in some of the receipt/display functionalities I’ve seen from Kartik Prabhu which are also related to some of this discussion.

Is anyone else contemplating this sort of use case? I’m curious what your thoughts are. What other UI examples exist in the space? How would you like these kinds of reactions to look on your site?

Syndicated copies to:

Visually indicating post types on blogs and microblogs

It’s been a while since I’ve actively read Om Malik‘s blog, but I noticed that he’s using graphical indicators that add some semantic detail about what each post is. It’s a design element I’ve only seen lately out of the IndieWeb community with plugins like the Post Kinds Plugin for WordPress or done manually with emoji in post titles the way Aaron Davis has done relatively religiously, particularly on his “Collect” site.

Om Malik is using some graphical indicators to give quick additional semantic meaning to what he’s posting.

I highly suspect that he’s using the Post Formats functionality from WordPress core to do some of this using a custom theme. Sadly it’s generally fallen out of fashion and one doesn’t see it very often any more. I suspect that it’s because WordPress didn’t take the functionality to its logical conclusion in the same way that the Post Kinds Plugin does.

The way Aaron Davis uses emoji in his posts helps to provide additional context about what is being written about to indicate what is going on in a link before it’s clicked.

I think some of my first experience with its resurgence was as helpful UI I saw suggested by Tantek Çelik on the Read page of the IndieWeb wiki. I’ve been doing it a lot myself, primarily for posts that I syndicate out to micro.blog, where it’s become a discovery function using so-called tagmoji (see books, for example), or Twitter (reads, bookmarks, watches, listens, likes). In those places, they particularly allow me to add a lot more semantic meaning to short notes/microblog posts than others do.

I do wish that having emoji for read posts was more common in Twitter to indicate that people actually bothered to read those articles they’re sharing to Twitter, the extra context would be incredibly useful. I generally suspect that article links people are sharing have more of a bookmark sentiment based on their click-bait headlines. Perhaps this is why I like Reading.am so much for finding content — it’s material people have actually bothered to read before they shared it out. Twitter adding some additional semantic tidbits like these would make it much more valuable in my mind.

It doesn’t appear that Om has taken this functionality that far himself though (at least on Twitter). Perhaps if WordPress made it easier to syndicate out content to Twitter with this sort of data attached it would help things take off?

Syndicated copies to:

Defining the IndieWeb

The concept of IndieWeb is something slightly different to many people and it’s ever evolving and changing, just like the internet itself.

Trying to define it is somewhat akin to trying to define America: while it has a relatively well-defined geographic border and place in time, its people, laws, philosophies, and principles, while typically very similar, can vary and change over time. What it is can be different for everyone both within it as well as outside of it. It can be different things to different people based on their place, time, and even mood. In the end maybe it’s just an idea.

A basic definition of IndieWeb

In broadest terms I would define being part of the IndieWeb as owning your own domain name and hosting some sort of website as a means of identifying yourself and attempting to communicate with others on the internet.

At its simplest, one could say they have an IndieWeb site by buying their own domain name (in my case: boffosocko.com) and connecting it to a free and flexible service like Tumblr.com or WordPress.com. Because you’ve got the ability to export your data from these services and move it to a new host or new content management system, you have a lot more freedom of choice and flexibility in what you’re doing with your content and identity and how you can interact online. By owning your domain and the ability to map your URLs, when you move, you can see and feel the benefits for yourself, but your content can still be found at the same web addresses you’ve set up instead of disappearing from the web.

If you wished, you could even purchase a new domain name and very inexpensively keep the old domain name and have it automatically forward people from your old links to all the appropriate links on your new one.

By comparison, owning your own domain name and redirecting it to your Facebook page doesn’t quite make you IndieWeb because if you moved to a different service your content might be able to go with you by export, but all of the URLs that used to point to it are now all dead and broken because they were under the control of another company that is trying to lock you into their service.

Some more nuanced definition

Going back to the analogy of America, the proverbial constitution for the IndieWeb is generally laid out on its principles page. If you like, the pre-amble to this “constitution” is declared on the IndieWeb wiki’s front page and on its why page.

Some people may choose to host the business card equivalent of a website with simply their name and contact information. Others may choose to use it as the central hub of their entire online presence and identity. In the end, what you do with your website and how you choose to use it should be up to you. What if you wanted to use your website like Twitter for short status updates or sharing links? What if you wanted to use it like Facebook to share content and photos with your friends and family? What if you want to host audio or video like Soundcloud, YouTube, or Vimeo allow?

The corporate social media revolution was a lovely and useful evolution of what the blogosphere was already doing. Thousands of companies made it incredibly easy for billions of people to be on the internet and interact with each other. But why let a corporation own and monetize your data and your ability to interact with others? More importantly, why allow them to limit what you can do? Maybe I want to post status updates of more than 280 characters? Maybe I want the ability to edit or update a post? Maybe I want more privacy? Maybe I don’t want advertising? Why should I be stuck with only the functionality that Twitter, Facebook, Instagram, Google+, LinkedIn and thousands of others allow me to have? Why should I be limited in communicating with people who are stuck on a particular service? (Would you use your phone to only call friends who use AT&T?) Why should I have hundreds of social accounts and an online identity shattered like just so many horcruxes when I could have one that I can fully control?

By decentralizing things to the level of owning a domain and having a simple website with control of my URLs, I can move to cheaper or more innovative web hosts or service providers. I can move to more innovative content manage systems that allow me to do more and communicate better or more broadly with others online. As a side effect of empowering myself, I can help create more competition and innovation in the space to do things I might not otherwise be capable of doing solely by myself.

Web standards

Almost all of the people behind the IndieWeb movement believe in using some basic web standards as a central building block. Standards help provide some sort of guidance to allow sites to be easier to build and provide a simpler way for them to communicate and interact with each other.

Of course, because you have control of your own site, you can do anything you wish with it. (In our America analogy we could consider standards to be like speech. Then how might we define free speech in the IndieWeb?) Perhaps a group of people who want some sort of new functionality will agree on a limited set of new standards or protocols? They can build and iterate and gradually create new standards that others can follow so that the infrastructure advances and new capabilities emerge. Generally the simpler and easier these standards are to implement, the more adoption they will typically garner. Often simple standards are easier to innovate on and allow people to come up with new ways of using them that weren’t originally intended.

This type of growth can be seen in the relatively new W3C recommendation for the Webmention specification which grew out of the IndieWeb movement. Services like Facebook and Twitter have a functionality called @mentions, but they only work within their own walled gardens; they definitely don’t interoperate–you can’t @mention someone on Facebook with your Twitter account. Why not?! Why not have a simple standard that will allow one website to @mention another–not only across domain names but across multiple web servers and even content management systems? This is precisely what the Webmention standard allows. I can @mention you from my domain running WordPress and you can still receive it using your own domain running Drupal (or whatever software you choose). People within the IndieWeb community realized there was a need for such functionality, and so, over the span of several years, they slowly evolved it and turned it into a web standard that anyone (including Facebook and Twitter) could use. While it may have been initially meant as a simple notifications protocol, people have combined it with another set of web standards known as Microformats to enable cross-site conversations and a variety of other wonderous functionalities.

Some people in the IndieWeb might define it as all of the previous ideas we’ve discussed as well as the ability to support conversations via Webmentions. Some might also define an IndieWeb site as one that has the ability to support Micropub, which is a standard that allows websites to be able to accept data from a growing variety of applications that will allow you to more easily post different types of content to your site from articles and photos to what you’re drinking or reading.

Still others might want their own definition of IndieWeb to support the functionality of WebSub, MicroSub, IndieAuth, or even all of the above. Each small, free-standing piece expands the capabilities of what your personal website can do and how you can interact online. But since it’s your website and under your control, you have the power to pick and choose what and how you would like it to be able to do.

So what is the IndieWeb really?

Perhaps after exploring the concept a bit, most may not necessarily be able to define it concretely. Instead they might say–to quote United States Supreme Court Justice Potter Stewart“But I know it when I see it […]”.

The IndieWeb can be many different things. It is:

  • a website;
  • an independent network of websites;
  • an idea;
  • a concept;
  • a set of broad-based web standards;
  • a set of principles;
  • a philosophy;
  • a group of people;
  • a support network;
  • an organization;
  • an inclusive community;
  • a movement;
  • a Utopian dream of what the decentralized, open Internet could be.

In some sense it is all of these things and many more.

In the end though, the real question is:

What do you want the IndieWeb to be?

Come help us all define it.

IndieWeb.org

Syndicated copies to:

The Story of My Domain

Alan Levine recently put out a request for stories about domains as a part of the Ontario Extend project. While I have traditionally identified more with the IndieWeb movement, a lot of how I use my website dovetails with the Domain of One's Own philosophy.

Here are my answers to Alan’s list of questions about my domain:

What is your domain name and what is the story, meaning behind your choice of that as a name?

I use the domain name BoffoSocko as my online identity.

I’ve spent 20+ years working in the entertainment industry in one way or another and was enamored of it long before that. Boffo and socko are slanguage from the trade magazine Variety essentially meaning “fantastically, stupendously outstanding; beyond awesome”, and used together are redundant. I was shocked that the domain name was available so I bought it on a whim expecting I’d do something useful with it in the future. Ultimately who wouldn’t want to be Boffo, Socko, or even both?

In my youth I think I watched Muppets Take Manhattan about 1,000 times and apparently always thought Kermit was cool when he said “Boffo Lenny! Socko Lenny!”

What was your understanding, experience with domains before you got one? Where were you publishing online before having one of your own?

Over the ages I’d had several websites of one stripe or another going back to the early/mid-90’s when I was in college and everyone was learning about and using the web together. Many of my domains had  a ~ in them which was common at the time. I primarily used them to promote work I was doing in school or with various groups. Later I remember spending a lot of time setting up WordPress and Drupal sites, often for friends, but didn’t actually do much with my own. For me it was an entry point into working with coding and simply playing with new technology.

I didn’t actually begin putting a lot of material online until the social media revolution began in 2006/2007. In 2008, I purchased a handful of domain names, many of which I’m still maintaining now. Ultimately I began posting more of my own material, photos, and observations online in a now defunct Posterous account in early 2010. Before it got shut down I had moved back to WordPress which gave me a lot more freedom and flexibility.

What was a compelling feature, reason, motivation for you to get and use a domain? When you started what did you think you would put there?

When I bought my first handful of domains, it was primarily to begin to own and brand my own identity online. I wasn’t sure what exactly I was going to do with them, but I was posting so much content to Facebook and Twitter I thought I ought to be posting it all (especially the longer form, and in my mind, more valuable content) to a site I owned and controlled and then syndicating the content to those other sites instead. Initially microblogging, bookmarking, posting checkins, and sharing photos made it easier to being writing and producing other things.

What kinds of sites have you set up on your domain since then? How are you using them? Please share URLs!

Most of my domains are personal and personal education related, though I do have a few for separate business/work purposes.

https://www.boffosocko.com is my primary, personal, catch-all domain run with WordPress. I can do almost anything and everything I want with it at this point.

I use it to (privately or publicly):

  • collect bookmarks of interesting things I see online or want to read in the future;
  • post about what I’m reading, watching, or listening to;
  • post what I’m eating, drinking, or places I’ve checked into, photos of things around me;
  • post podcasts and microcasts from time to time;
  • draft and synthesize big pieces of the above to write reviews or longer pieces (from articles to books) and publish them for others to read.

Generally I do everything others would do on any one of hundreds of other social media websites (and I’ve got all those too, though I use them far less), but I’m doing it in a centralized place that I own and control and don’t have to worry about it or certain pieces of functionality disappearing in the future.

In large part, I use my website like a modern day commonplace book. It’s where I post most of what I’m thinking and writing on a regular basis and it’s easily searchable as an off-board memory. I’m thrilled to have been able to inspire others to do much the same, often to the extent that many have copied my Brief Philosophy word-for-word to their “About” pages.

Almost everything I do online starts on my own domain now, and, when appropriate, I syndicate content to other places to make it easier for friends, family, colleagues, and others to read that content in other channels and communicate with me.

https://chrisaldrich.withknown.com — This is a WithKnown-based website that I used when I initially got started in the IndieWeb movement. It was built with IndieWeb and POSSE functionality in mind and was dead simple to use with a nice interface.

http://stream.boffosocko.com — Eventually I realized it wasn’t difficult to set up and maintain my own WithKnown site, and it gave me additional control. I made it a subdomain of my primary website. I’ve slowly been using it less and less as I’ve been able to do more and more with my WordPress website. Now I primarily use it for experiments as well as for quick mobile replies to sites like Twitter.

What helped you or would have helped you more when you started using your domain? What do you still struggle with?

Having more examples of things that are possible with a domain and having potential mentors to support me in what I was attempting to do. I wish I had come across the IndieWeb movement and their supportive community far earlier. I wish some of the functionality and web standards that exist now had been around earlier.

I still struggle with writing the code I’d like to have to create particular pieces of functionality. I wish I was a better UX/UI/design person to create some of the look and feel pieces I wish I had. Since I don’t (yet), I’m trying to help others maintain and promote pieces of their projects, which I use regularly.

I still wish I had a better/more robust feed reader more tightly integrated into my website. I wish there was better/easier micropub support for various applications so that I could more easily capture and publish content on my website.

What kind of future plans to you have for your domain?

I’d like to continue evolving the ability to manage and triage my reading workflows on my own site.

I’d like to be able to use it to more easily and prettily collect things I’m highlighting and annotating on the web in a way that allows me to unconditionally own all the relevant data without relying on third parties.

Eventually I’d like to be able to use it to publish books or produce and distribute video directly.

I’m also continuing to document my experiments with my domain so that others can see what I’ve done, borrow it, modify it, or more easily change it to suit their needs. I also do this so that my future (forgetful) self will be able to remember what I did and why and either add to or change it more easily.

Tomorrow I’m positive I’ll see someone using their own website to do something cool or awesome that I wish I had thought to do. Then I hope I won’t have to work too hard to make it happen for myself. These itches never seem to stop because, on your own domain, nearly anything is possible.

What would you say to other educators about the value, reason why to have a domain of your own? What will it take them to get going with their own domain?

Collecting, learning, analyzing, and creating have been central to academic purposes since the beginning of time. Every day I’m able to do these things more quickly and easily in conjunction with using my own domain. With new tools and standards I’m also able to much more easily carry on two-way dialogues with a broader community on the internet.

I hope that one day we’re able to all self-publish and improve our own content to the point that we won’t need to rely on others as much for many of the moving parts. Until then things continue to gradually improve, so why not join in so that the improvement accelerates? Who knows? Perhaps that thing you would do with your domain becomes the tipping point for millions of others to do so as well?

To get going it only takes some desire. There are hundreds of free or nearly free services you can utilize to get things rolling. If you need help or a mentor, I’m happy to serve as that to get you going. If you’d like a community and even more help, come join the IndieWeb chat room. You can also look for a local (or virtual) Homebrew Website Club; a WordPress Meetup or Camp, or Drupal Meetup or Camp; or any one of dozens of other groups or communities that can help you get moving.

Welcome to the revolution!

Syndicated copies to:

Allowing arbitrary HTML in the Summary/Quote field in the Post Kinds Plugin

Now you can have richer reply contexts on your posts in WordPress

Reply contexts

One of my favorite parts of the Post Kinds plugin isn’t just that it provides me the flexibility to add a huge variety of post types to my website or the semantic HTML and microformats it provides to help my site dovetail into the IndieWeb. It’s that it allows me to quickly and easily provide very rich reply contexts to my posts so that I more easily know what I’ve bookmarked, liked, favorited, read, or replied to online. In some sense it helps guard against some of the problem of context collapse found in many social media sites on the internet. As my friend and foodie extraordinaire Jeremy Cherfas has said, “a reply without context is like an egg without salt.”

For a long time I had been wanting a bit more control of how the Post Kinds plugin presented some of the data it allows.1,2 After one inputs a URL, the plugin uses several methods to scrape the related web page and returns a lot of metadata about it including the title, a summary, the site name, tags, a featured image, publication date and time, the author and author’s website among others. The data returned depends on how the page is marked up and is generally based on available microformats or open graph protocol data when they’re provided.

The plugin has a setting to “Embed Sites into your Response” on its settings page, and this is generally okay, but it relies on sites to have some sort of oEmbed set up predefined. For bigger sites like YouTube and WordPress, this is generally alright, but it’s not always the case that any data is provided by the external site. Even in YouTube’s case you’ll only display the video with no other meta-data about it. As a result I leave it turned off.

Let’s take a quick look at what some of these default outputs for the reply context with a short comment underneath them look like.

This is the default  Post Kinds output for an automatically parsed YouTube video with the embed function off. While it’s a good start, it’s not necessarily inspiring or a good reminder of the content you watched. One could manually change or add some of the fields for additional data, but we would still be a bit limited.
This is what Post Kinds outputs for an automatically parsed YouTube video with the embed function turned on. It’s nice to have an embedded copy of the video, but where did it come from? What is it about? Why should we care? Is there any other metadata we can display?

With the embed option turned off the plugin will return a “Summary” of the parsed website page. This too is generally well supported in 90% of websites in my experience. But the data it returns is (smartly) filtered using wp_kses for security so that a malicious page couldn’t inject random html or code into your page. This means that useful functionality is often being stripped out of the “Summary/Quote” field in the reply context. I’d prefer to have the ability to have text with links, video, and audio to appear in-line in these contexts so that there’s a better representation of the actual post I’m reacting to.

The question then, is how can I make this happen?

In older versions of the plugin there was a setting for this feature, but it wasn’t well documented and most people didn’t know what the setting was or what it meant. For simpler UI and support it was ultimately stripped out although the raw code for it was left in. In fact, it’s literally the first short block of code within the plugin’s main code! It looks like this:

if ( ! defined( 'POST_KINDS_KSES' ) ) {
	define( 'POST_KINDS_KSES', false );
}

To enable the ability to manually add arbitrary html, links, audio, video, etc. you can go to your main administrative user interface in WordPress and go to Plugins >> Edit and then choose the Post Kinds option in the drop down selector in the top right hand corner and click select. Search for the code listed above (it should be right at the top, underneath the title and details for the plugin) and change the single word false to true. Next scroll down the page and click the Update File button.

Now you should be able to manually change any of the fields within the Response Properties metabox and they’d display in full HTML as you’d expect them to. (Caveat: because you’ve disabled a small layer of security, you should keep a close eye on what data appears in your “Summary/Quote” field and make sure you’re not allowing your site or your readers to be led astray or hacked. In my case, I’m almost always modifying it by hand, so it’s not a big issue. Your mileage may vary depending on what you’re posting.)

This is what Post Kinds outputs for a parsed YouTube video with the embed function off. We’ve gone in and manually tweaked the author name, URL, and photo and added manual HTML to render a sysnopsis with links and an in-line playable  iframed embed of the video. This is a much richer reply context! It doesn’t get much better than this. Thanks Post Kinds!!

Updates

But wait… What happens when I update the plugin? Won’t the update overwrite the change? Yes, you’re absolutely correct. You’ll have to remember to go back and make this change any time the plugin updates. To prevent this, you could instead modify your wp-config.php file in the root folder of your WordPress install. To do this add the following lines of code to the bottom of this file:

/** Sets up initial variable for the Post Kinds plugin to not filter the Summary/Quote field  */
if ( ! defined( 'POST_KINDS_KSES' ) ) 
	define(' POST_KIND_KSES', true );

Next save the file and upload it to your WordPress install. Now you should be all set.

References

1.
Aldrich C. Post Kinds Plugin for WordPress. BoffoSocko. https://boffosocko.com/2017/08/11/post-kinds-plugin-for-wordpress/. Published August 11, 2017. Accessed June 9, 2018.
2.
Aldrich C. Manually adding a new post kind to the Post Kinds Plugin for WordPress. BoffoSocko. https://boffosocko.com/2018/06/06/manually-adding-a-new-post-kind-to-the-post-kinds-plugin-for-wordpress/. Published June 7, 2018. Accessed June 9, 2018.
Syndicated copies to:

Manually adding a new post kind to the Post Kinds Plugin for WordPress

An example using the infamous chicken post kind

The Post Kinds plugin, essentially an extended version of WordPress’s core Post Formats functionality, allows one to make a variety of types of posts on one’s website that mirrors the functionality provided in a huge variety of social media platforms. This is useful if you’re owning all of your own data and syndicating it out to social silos, but it’s also great for providing others better user interface for reading and consuming what you’re posting.

I’ve documented and written about it quite a bit in the past and am obviously a big fan. In addition to most of the default post types (notes, favorites, likes, bookmarks, reads, listens, etc.), my personal site also supports follows, eat, drink, wishes, acquisitions, exercise, and chickens! Wait a second… CHICKENS?!?

Yes, that’s chickens, not checkins, which I also support.

One of the nice benefits of the plugin is that it’s fantastically modular and extensible. As an exercise a few months back I thought I would take a shot at adding chicken post support to my website. Several years ago in the IndieWeb, partly as an educational exercise and partly for fun, several people thought it would be nice to add a post type of “chicken” to their sites. What would it look like? What would it entail? How might it evolve? Since then interest in chicken related posts has naturally waned, but it does bring up some interesting ideas about potential new pieces of functionality that one might want to have on their personal websites.

While I currently support many post types, I’ve discovered recently that I have a variety of notes and checkins that relate to items I’ve purchased or acquired. I thought it might be worthwhile to better keep track on my own website of things I acquired  in a more explicit way to make posting them and searching for them a lot easier. But how could I do this myself and potentially contribute it back to a broader base of other users? I started with a bit of research on how others have done this in the past and tried to document a lot of it on the Indieweb wiki. I eventually asked David Shanske to reserve the idea of acquisitions within the Post Kinds plugin, which he did, but I wondered how I might have done some of that work myself.

So below, as an example, I thought I’d write up how I’ve managed to add Chicken posts to my website. To a great extent, I’m using data fields and pieces already built into the main plugin, but in doing this and experimenting around a bit I thought I could continue to refine chicken posts until they did what I wanted, after which, I could do a pull request to the main plugin and add support for others who might want it. Hopefully the code below will give people a better idea about how the internals of the plugin work so that if they want to add their own pieces to their sites or contribute back to the plugin, things might be a tad easier.

Pieces for a new Post Kind in WordPress

Adding a new Post Kind primarily consists of three broad pieces  which I’ll address below. The modularity of the plugin makes adding most of the internals for a new kind far simpler than one might imagine.

Adding Taxonomy Support

New kinds in general will require a small handful of properties which include:

  • a name (as well as its singular, plural, and verb forms);
  • a microformats 2 property;
  • a format, so that the plugin can map the new post kind to a particular Post Format type within WordPress core so that themes which use these can be properly set when needed. Format options include: aside, image, video, quote, link, gallery, status, audio, and chat. Some post kinds may not have an obvious mapping, in which case the value can be left as empty;
  • a generic description for display within the admin user interface as well as for the archive pages for the type which are auto-generated;
  • a description-url, typically this is a link to the IndieWeb wiki that has examples and details for the particular post kind. If there isn’t one, you could easily create it and self-document your new use case. It could even be empty if necessary;
  • A show setting with a value of true or false to tell the plugin to default to showing the kind in the Post Kinds “Kinds” metabox so that the new kind will show up and be choose-able from within the interface when creating new posts.

Code to include these pieces of data will need to be added to the /includes/class-kind-taxonomy.php folder/file path within the plugin so that the plugin knows where it needs to be found.

As an example, here’s what the code looks like for the bookmark kind:

'bookmark'    => array(
	'singular_name'   => __( 'Bookmark', 'indieweb-post-kinds' ), // Name for one instance of the kind
	'name'            => __( 'Bookmarks', 'indieweb-post-kinds' ), // General name for the kind plural
	'verb'            => __( 'Bookmarked', 'indieweb-post-kinds' ), // The string for the verb or action (liked this)
	'property'        => 'bookmark-of', // microformats 2 property
	'format'          => 'link', // Post Format that maps to this
	'description'     => __( 'storing a link/bookmark for personal use or sharing with others', 'indieweb-post-kinds' ),
	'description-url' => 'http://indieweb.org/bookmark',
	'show'            => true, // Show in Settings
	),

For direct comparison, and as an explicit example for my chicken post kind, here’s the block of code I inserted within the class-kind-taxonomy.php file immediately below the section for the acquisition type:

'chicken'    => array(
	'singular_name'   => __( 'Chicken', 'indieweb-post-kinds' ), // Name for one instance of the kind
	'name'            => __( 'Chickens', 'indieweb-post-kinds' ), // General name for the kind plural
	'verb'            => __( 'Chickened', 'indieweb-post-kinds' ), // The string for the verb or action (liked this)
	'property'        => 'chicken-of', // microformats 2 property
	'format'          => 'image', // Post Format that maps to this
	'description'     => __( 'Owning all the chickens. Welcome to my chicken feed.', 'indieweb-post-kinds' ),
	'description-url' => 'https://indieweb.org/chicken',
	'show'            => true, // Show in Settings
	),

You’ll probably notice that beyond the simple cut and paste, I haven’t really changed much. Syntax aside, most of these pieces are relatively obvious and very straightforward, but I’ll add some commentary about a few parts and what they do which may not be as obvious to the beginner. When creating your own you can copy and paste this same block into the code at the bottom of the list of other types, but you’ll want to change only the data that appears within the single quotes on each of the nine lines for the various settings.

For those not familiar with microformats you may be asking yourself what snippet to add for the property setting. The best bet is to take a look at the microformats wiki or look for possible examples of people doing the same type of post you’re doing and copy their recommended microformat. For extremely new and likely experimental edge cases, chances are that you’ll need to choose your own experimental microformat name. In these instances you can use prior microformats as examples and potentially follow the format. In my case I knew about the bookmark-of, like-of, favorite-of, and the experimental read-of, listen-of, and watch-of microformats, so I followed the pattern and chose chicken-of for my experimental chicken posts. One could also potentially ask for recommendations within either the microformats IRC/chat channel or the IndieWeb chat. If you create a new and experimental one, take a few moments to document your use case in the IndieWeb and/or Microformats wikis for others who come after you. Keep in mind that if you change the property name at a later date you will need to go into your database and change the wp_postmeta database meta_key field from mf2_property1 to mft_property2 so that WordPress will know where the appropriate data is stored to be able to display it.

Our new chicken post kind is available in the post editor because show is set to true

The show setting is fairly straightforward, but may not be as obvious to some. It has either a value of true or false. If the value is false, the new post kind won’t be displayed in the radio button options within the admin UI for creating new posts. If the value is true, then it will be available. The Post Kinds plugin has a number of reserved post kinds which aren’t displayed by default on most sites–primarily because they do not have appropriate views or data fields defined–but they could be enabled by changing the show flag from false to true. Most often we recommend you only show those kinds that you’re actively using.

Additional examples of the dozen or more standard post kinds can be found within the code to provide some additional potential clarity on what types of data each of them are expecting.

I debated a while on making the verb ‘chickened out’ instead of ‘chickened,’ but I chickened out thinking that it would make my posts something wholly different. Obviously you can now make your own choice.

With this chunk of code saved into the plugin, it is now generally aware of the new post kind and can save the appropriate data for this new kind of post.

Template/View Support

Now you’ll want to add some code to the plugin to tell the plugin how it should display the data it’s saving for your posts. The easiest way to do this is to copy and paste the code from one of the many default views already in the plugin and just change a few small pieces of data to match your post kind. This code can be created as a new file with your new matching post kind name (the one at the top of your code snippet above that appears on line 1 before the word ‘array’) in one of two places. If you put it in the views folder in the plugin, you may need to re-add it later on if the plugin updates. Otherwise you can add the code into a file which can be placed into a folder named kind_views in either the folder for your theme (or your child theme, if you have one.) We recommend placing it in your child theme, so if the parent theme updates, your code won’t accidentally be lost.

There are a variety of views for many post kinds available to stand as examples, so you can look at any of these and tweak them as you wish to get the output you desire. For more complicated output displays it might certainly help to have some PHP coding skills. For my chicken post kind I simply copied and pasted the code for the bookmark kind view and pasted it into a file named kind-chicken.php following the naming convention of the other files.

Below is a copy of the code I added for the chicken post kind which is nearly identical to the bookmark view with exception of changing the name of the template, adding u-chicken-of and changing the get_before_kind to chicken instead of bookmark. Note that because the chicken-of microformat is wrapped on a URL, it has the u- prefix, otherwise if it were on plain text it would have been p-chicken-of using the standard microformat h-, u-, p-, and e- syntax.

I also put both the u-chicken-of and the u-bookmark-of microformats in the view so that sites using the post type discovery algorithm that don’t recognize the chicken-of microformat won’t choke on the proverbial chicken bone, but will default back to thinking this post is of the bookmark type. I suspect that I could also have left the u-bookmark-of off and many would have defaulted to thinking this post was a simple note as well. You can make your own choice as to which you prefer as a default.

<?php
/*
 * Chicken Template
 *
 */

$mf2_post = new MF2_Post( get_the_ID() );
$cite     = $mf2_post->fetch();
if ( ! $cite ) {
	return;
}
$author = Kind_View::get_hcard( ifset( $cite['author'] ) );
$url    = ifset( $cite['url'] );
$embed  = self::get_embed( $url );

?>

<section class="response u-chicken-of h-cite">
<header>
<?php
echo Kind_Taxonomy::get_before_kind( 'chicken' );
if ( ! $embed ) {
	if ( ! array_key_exists( 'name', $cite ) ) {
		$cite['name'] = self::get_post_type_string( $url );
	}
	if ( isset( $url ) ) {
		echo sprintf( '<a href="%1s" class="p-name u-url">%2s</a>', $url, $cite['name'] );
	} else {
		echo sprintf( '<span class="p-name">%1s</span>', $cite['name'] );
	}
	if ( $author ) {
		echo ' ' . __( 'by', 'indieweb-post-kinds' ) . ' ' . $author;
	}
	if ( array_key_exists( 'publication', $cite ) ) {
		echo sprintf( ' <em>(<span class="p-publication">%1s</span>)</em>', $cite['publication'] );
	}
}
?>
</header>
<?php
if ( $cite ) {
	if ( $embed ) {
		echo sprintf( '<blockquote class="e-summary">%1s</blockquote>', $embed );
	} elseif ( array_key_exists( 'summary', $cite ) ) {
		echo sprintf( '<blockquote class="e-summary">%1s</blockquote>', $cite['summary'] );
	}
}

// Close Response
?>
</section>

<?php

Icon Support

Finally, you’ll want to include the appropriate svg icon within the plugin so that it will display on the post (if the appropriate settings are chosen within the plugin’s settings interface: either “icon” or “icon and text”), and within the Kinds metabox in the post editor.

You’ll want to have one icon named kindname.svg in the svgs folder and another named kinds.svg in the plugin’s root folder. The kinds.svg is a special ‘master’ svg of all of the kinds icons bundled together. If it helps in matching the icon set, all of the current kind icons are made with Font Awesome icons which have the appropriate licensing for distribution.

In my chicken example, I opted for the feather icon since Font Awesome didn’t have an actual chicken available.

When you’re done

Thanks to the rest of the plugin’s functionality, you should now automatically be able able to make and display individual chicken posts, display a chicken feed (pun intended), and allow people to subscribe to the RSS feed of your chicken posts.

Creating a plugin for new kinds

Naturally some people may want to display particular exotic kinds which might not extend to the broader public. A chicken post type certainly falls under this umbrella as I wouldn’t expect that other than for novelty, obsessive IndieWeb post kinds completeness, or for a very small handful of specialized farming, juggling, or comedy websites that anyone else in their right mind would really want to be doing a lot of posting about chickens on their site.

David Shanske, the plugin’s creator, has made it possible to create a sub-plugin of sorts so that one can add one-off support to these types using  a variety of filters and functions. This could be useful so that updates to the plugin don’t overwrite one’s work and require adding the pieces outlined above back in again. Sadly, this is a tad beyond my present abilities, so I won’t address it further at the moment other than to say that it’s possible and perhaps someone might document it for others to use a similar template in the future.

Try it yourself

Now that you’ve got the basics, it should be relatively easy to add many of your own new post kinds.

Exercise One

If you want a simple exercise, you should be able to go into the code and manually change the show flags for the eat and drink kinds from their default false to true to enable posting food to create a food diary on your website. (These have a reasonable default view and icons already built in.)

Exercise Two

With slightly more work you can change the show flag on the follow kind and copy a view based on the bookmark view to make a follow view to make follow posts. (Here’s a link to my version.) Similarly other hidden kinds like wishes and acquisitions can be enabled easily as well. These also have default icons already built in, but just need a view defined to show their data.

Exercise Three

If you want a slightly larger challenge that uses all of the above, why not attempt adding the appropriate machinery to create a want post?

Exercise Four

Though David has often said before that he wouldn’t build in support for multi-kinds, some people may still want them or think they need them. If you’re exceptionally clever, you might be able to create your own explicit multi-kind by mixing up the details above and creating a kind that mixes a variety of the details and creates a view that would allow the specific multi-kind you desire. Caveat emptor on this approach if you should take it.

Share your ideas

Now that you’ve got the general method, what kinds are you going to deploy in the future? What have you already created? Feel free to reply with your ideas and thoughts below in the comment section or send us a webmention from your own site with what you’ve done. Maybe consider doing a pull request on the plugin itself to add the functionality for others?
​​​​​​​​​

Syndicated copies to:

Reads, Listens, Watches, and Editable Webmention Types and Avatars in the IndieWeb WordPress Suite

I’ve been meaning to write regular updates to highlight some of the useful changes in the functionality of the IndieWeb suite of WordPress plugins, but never gotten around to it. There’s been a few really interesting ones lately, so I thought I’d start. Observant watchers who read through either the code or even the scant change logs before they update their code may catch some of these features, but sometimes interesting tidbits can slip by the most vigilant. Here are some interesting recent ones:

Display of Reads, Listens, and Watches in comments sections

David Shanske’s excellent Post Kinds Plugin allows one to post what they’re reading, listening to, or watching in simple IndieWeb fashion. (Examples of these on my site: read posts, listen posts, watch posts.) These posts types automatically include the appropriate microformats classes so the user doesn’t need to bother doing them manually. For a long time when replying to another’s site, bookmarking it, or even mentioning it when also using the Webmentions plugin would send the site a Webmention that would generally cause it to show up as a native comment, bookmark or mention. With an update late last year, from within the Discussion settings in WordPress, one could set toggles so that many of these webmentions could be displayed as facepiles. Other broadly unsupported post types would typically default to a simple mention.

Recently David Shanske and I started a podcast, and he thought it would be useful if his site could accept listen posts and show them visually within his comments section just like these replies, bookmarks, and mentions. Thus over the past month he’s added code to the Semantic Linkbacks Plugin to add the functionality for these types of posts to properly render showing facepiles for listens, reads, and watches.

This is what webmentions of listen posts  look like on his site in his comments section:

User Interface example of how listen posts on David Shanske’s podcast appear on his site

What’s happening

Listen (or scrobble) posts can send webmentions (or notifications) to the original content potentially with the experimental listen-of microformat. In the case of scrobbles of podcasts, these webmentions could be displayed as “Listens” which would provide the canonical copy of the podcast some indicator of its popularity and actual audience. It is tremendously difficult to obtain data on the actual number of listens within most of the podcast community and typically a fraction of the number of downloads must be used as an indicator of the actual reach. Being able to display listens could potentially be a boon to the podcasting market, particularly with respect to advertising as this type of open social web functionality spreads.

Similarly read posts with the read-of microformat and watches with watch-of will be accepted and show up within the comments section. Like the previous types, they can be set to display as facepiles within the user interface.

From the Discussion options settings page (typically at: /wp-admin/options-discussion.php#semantic_linkbacks) one can choose the mention types one wants to have appear as facepiles within their comments section.

Knowing that this read functionality would be available, this week I helped ColoradoBoulevard.net set up their site to be able to accept and display reads of their articles. Here’s an example from their site:

The display of a read post on ColoradoBoulevard.net

I haven’t yet seen one for watches in the wild yet, but maybe you’ll be either the first  to send or receive one?

The microformats on these posts is generally considered to be experimental, but with the ~500+ users of this suite of tools as well as others who are already using them on other sites, they’ve now taken a dramatic step into the open internet and more widespread use and potential official adoption.

Editable Webmention Types and Avatars

Webmention Types

Just yesterday, I spent a few minutes in the IndieWeb chat helping someone to laboriously delve into their mySQL databaset and find a particular snippet of data so they could manually change a received webmention from being a simple mention to being a reply so that it would display as a native comment on their website. I’ve often done this to take what sometimes seem like simple mentions and change them to replies to reveal the richer content they often contain for the broader conversation. Sadly the process is boring, laborious, and fraught with potential ways to mess things up.

As of this weekend, this process is no longer necessary. One can now go to the admin interface for their comments and webmentions (found at the path /wp-admin/edit-comments.php), click on edit for the particular comment they’re changing and then scroll down to reveal a droplist interface to be able to manually change the webmention type.

Samantic Linkbacks Data metabox within the comment editing interface on WordPress. One can use the dropbox to change the webmention type as well as manually update the commenter’s avatar.

As another example of a use for this functionality, perhaps you’ve received a listen mention on one of your podcast episodes that has a lot of useful notes or commentary germane to your episode? Instead of hiding it as a simple listen, why not change the type to reply to allow a richer conversation around your content? After all, with a reasonable reply it will be implicit that the commenter actually listened to the episode, right?

Avatars

Because there is currently no functionality in WordPress for saving or caching the avatars of commenters via webmention, when users change their profile images on siloed services like Facebook, Twitter, et al. the link to their old avatars quits working and they were displaying blank spaces. This is an unfortunate form of linkrot, but one that can become more visually apparent over time.

Likes and Reposts concatenated on my site now after converting them into facepiles. They still give the social “proof” and indicate the interaction, but don’t interfere in the conversation now–especially when there are hundreds of them.

As one can see in the image for the commenting edit box above, the field for the Avatar is now editable. This means one can update out-of-date or blank avatars. One now also has the ability to moderate/edit or easily remove/switch avatars if users are sending inappropriate photos for one’s site’s audience.​​​​​​​​​

Syndicated copies to:

IndieWeb-ifying ColoradoBoulevard.net

I’ve spent some time over a few days this month to help IndieWeb-ify my local Pasadena online newspaper ColoradoBoulevard.net. They can now send and receive webmentions and can backfeed their comments, likes, and other responses from their Facebook and Twitter accounts.

They can stand to improve their support for microformats v2 and do some more work on their h-cards and other related metadata, but the editor seems thrilled with the initial results–particularly having their conversations in other areas of the internet come back to the original article.

I know that individual journalists have brought their personal websites into the IndieWeb fold, but this may be one of the first online newspapers/magazines I’m aware of to begin using some of these principles and tools. With any luck and some testing, they could be one of the first journalistic enterprises to begin receiving “Read” posts of their articles via webmention! Update: read posts are working! See the first example here.

I’d like to get them to a place where they can automatically syndicate to social silos and display their syndication links properly. In the end it would be really nice if their writers could own their own articles on their personal websites, syndicate them to the newspaper itself (as the rel=”canonical” link), and then both parties to be able to receive the appropriate backfeed, but this is a nice new baby step on the way to bigger and better things.

I did run across one interesting identity related issue that may need some addressing within this particular space. Some of their journalists prefer not to display photos (or even names) so that they’re not easily (or as easily) identified in person for the sake of doing online reviews or other sensitive reporting assignments.

Virtual Homebrew Website Club Meetup on May 30, 2018

Are you building your own website? Indie reader? Personal publishing web app? Or some other digital magic-cloud proxy? If so, come on by and join a gathering of people with likeminded interests. Bring your friends who want to start a personal web site. Exchange information, swap ideas, talk shop, help work on a project…

Everyone of every level is welcome to participate! Don’t have a domain yet? Come along and someone can help you get started and provide resources for creating the site you’ve always wanted.

This virtual HWC meeting is for site builders who either can’t make a regular in-person meeting or don’t yet have critical mass to host one in their area. It will be hosted on Google Hangouts.

Homebrew Website Club Meetup – Virtual Americas

Time:  to
Location: Google Hangouts (link to Hangout TBD)

  • 4:30 – 5:30 pm (Pacific): (Optional) Quiet writing hour
    Use this time to work on your project, ask for help, chat, or do some writing before the meeting.
  • 5:30 – 7:00 pm (Pacific): Meetup

More Details

Join a community of like-minded people building and improving their personal websites. Invite friends that want a personal site.

  • Work with others to help motivate yourself to create the site you’ve always wanted to have.
  • Ask questions about things you may be stuck on–don’t let stumbling blocks get in the way of having the site you’d like to have.
  • Finish that website feature or blog post you’ve been working on
  • Burn down that old website and build something from scratch
  • Share what you’ve gotten working
  • Demos of recent breakthroughs

Skill levels: Beginner, Intermediate, Advanced

Any questions? Need help? Need more information? Ask in chat: http://indiewebcamp.com/irc/today#bottom

RSVP

Add your optional RSVP in the comments below; by adding your indie RSVP via webmention to this post; or by RSVPing to one of the syndicated posts below:
Indieweb.org event: https://indieweb.org/events/2018-05-30-homebrew-website-club#Virtual_Americas

Syndicated copies to: