👓 The Missing Building Blocks of the Web | Anil Dash – Medium

Read The Missing Building Blocks of the Web by Anil Dash (Medium)
At a time when millions are losing trust in the the web’s biggest sites, it’s worth revisiting the idea that the web was supposed to be made out of countless little sites. Here’s a look at the neglected technologies that were supposed to make it possible.

Though the world wide web has been around for more than a quarter century, people have been theorizing about hypertext and linked documents and a global network of apps for at least 75 years, and perhaps longer. And while some of those ideas are now obsolete, or were hopelessly academic as concepts, or seem incredibly obvious in a world where we’re all on the web every day, the time is perfect to revisit a few of the overlooked gems from past eras. Perhaps modern versions of these concepts could be what helps us rebuild the web into something that has the potential, excitement, and openness that got so many of us excited about it in the first place.
Anil is great at describing a fundamental problem on the web here. I feel a bit like he’s written a variation of this article a few times now.1–3

I wish that when he pivoted from ThinkUp he’d moved towards building an open platform for helping to fix the problem. He’s the sort of thinker and creator we could use working directly on this problem.

I do think he’d have a bit more gravitas if he were writing this on his own website though instead of on Medium.

References

1.
Dash A. The lost infrastructure of social media. Medium. https://medium.com/@anildash/the-lost-infrastructure-of-social-media-d2b95662ccd3. Published August 10, 2016. Accessed March 23, 2018.
2.
Dash A. Rebuilding the Web We Lost. Anil Dash. http://anildash.com/2012/12/rebuilding-the-web-we-lost.html. Published December 18, 2012. Accessed March 23, 2018.
3.
Dash A. The Web We Lost. Anil Dash. http://anildash.com/2012/12/the-web-we-lost.html. Published December 13, 2012. Accessed March 23, 2018.
Quoted Slack chat by Chris BeckstromChris Beckstrom (chat.indieweb.org)
...holy crap this stuff [IndieWeb] is great. When I started getting webmentions from social media using Bridgy I flipped. It's like we're in the future!!!
I remember the early days of Twitter when people were excited about what it was and what it could do. Even then I don’t think people were as excited as Chris Beckstrom was when he made what is certainly the IndieWeb quote of the week this morning.

An IndieWeb Podcast: Episode 0 “Considering the User”

An IndieWeb Podcast: Episode 0 "Considering the User"
This is a test or alpha episode of An Indieweb Podcast (working title).

In it, David Shanske and and I talk about a variety of Indieweb topics, with the theme of “Considering the User”, inspired by an article we were reading this week. Other topics include: home automation, generations, itches, Webmention, and some examples of the Post Kinds Plugin in practice (exercise, issues, chickens).

In the future we hope to have additional broad ranging conversations and perhaps interviews with others about various IndieWeb related topics.

Part of this is also an opportunity to improve audio post presentations on our websites over time. While David posted the “original” of this post on his site, I had to debate whether or not I would technically repost it or make an original of my own. Ultimately I opted for the latter.

David, by far the more veteran podcaster, deserves the lion’s share of the credit for his audio set up and recording facilities.

You can subscribe to future episodes here: http://boffosocko.com/tag/an-indieweb-podcast/feed/

If you need more IndieWeb content, guidance, or even help, an embarrassment of riches can be found on the wiki, including the following resources:

👓 Open web annotation of audio and video | Jon Udell

Read Open web annotation of audio and video by Jon UdellJon Udell (Jon Udell)
Text, as the Hypothesis annotation client understands it, is HTML, or PDF transformed to HTML. In either case, it’s what you read in a browser, and what you select when you make an annotation. What’s the equivalent for audio and video? It’s complicated because although browsers enable us to select passages of text, the standard media players built into browsers don’t enable us to select segments of audio and video. It’s trivial to isolate a quote in a written document. Click to set your cursor to the beginning, then sweep to the end. Now annotation can happen. The browser fires a selection event; the annotation client springs into action; the user attaches stuff to the selection; the annotation server saves that stuff; the annotation client later recalls it and anchors it to the selection. But selection in audio and video isn’t like selection in text. Nor is it like selection in images, which we easily and naturally crop. Selection of audio and video happens in the temporal domain. If you’ve ever edited audio or video you’ll appreciate what that means. Setting a cursor and sweeping a selection isn’t enough. You can’t know that you got the right intro and outro by looking at the selection. You have to play the selection to make sure it captures what you intended. And since it probably isn’t exactly right, you’ll need to make adjustments that you’ll then want to check, ideally without replaying the whole clip.
Jon Udell has been playing around with media fragments to create some new functionality in Hypothes.is. The nice part is that he’s created an awesome little web service for quickly and easily editing media fragments online for audio and video (including YouTube videos) which he’s also open sourced on GitHub.

I suspect that media fragments experimenters like Aaron Parecki, Marty McGuire, Kevin Marks, and Tantek Çelik will appreciate what he’s doing and will want to play as well as possibly extend it. I’ve already added some of the outline to the IndieWeb wiki page for media fragments (and a link to fragmentions) which has some of their prior work.

I too look forward to a day where web browsers have some of this standardized and built in as core functionality.

Highlights, Quotes, & Marginalia

Open web annotation of audio and video

This selection tool has nothing intrinsically to do with annotation. It’s job is to make your job easier when you are constructing a link to an audio or video segment.

I’m reminded of a JavaScript tool written by Aaron Parecki that automatically adds a start fragment to the URL of his page when the audio on the page is paused. He’s documented it here: https://indieweb.org/media_fragment


(If I were Virginia Eubanks I might want to capture the pull quote myself, and display it on my book page for visitors who aren’t seeing it through the Hypothesis lens.)

Of course, how would she know that the annotation exists? Here’s another example of where adding webmentions to Hypothesis for notifications could be useful, particularly when they’re more widely supported. I’ve outlined some of the details here in the past: http://boffosocko.com/2016/04/07/webmentions-for-improving-annotation-and-preventing-bullying-on-the-web/

Thoughts on linkblogs, bookmarks, reads, likes, favorites, follows, and related links

Within the social media space there’s a huge number of services that provide a variety of what I would call bookmark-type functionality of one sort or another. They go under a variety of monikers including bookmarks, likes, favorites, stars, reads, follows, claps, and surely many quirky others. Each platform has created its own semantics which don’t always overlap with the others.

Because I’m attempting to own all of my own data, I’ve roughly mapped many of these intents into my own website. But because I have the ultimate control over them, I get to form my own personal definitions. I also have a lot more control over them in addition to adding other metadata to each for better after-the-fact search and use within my personal online commonplace book. As such, I thought it might be useful to lay out some definitions (both for myself and others) for how I view these on my website.

At the basest level, I look at most of these interactions simply as URL permalinks to interesting content and their aggregation as a “linkblog”, or a feed of interesting links I’ve come across. The specific names given to them imply a level of specificity about what I think exactly makes them interesting.

In addition to a bookmark specific feed, which by itself could be considered a “traditional” linkblog, my site also has separate aggregated feeds for things I’ve liked, read, followed, and favorited. It’s the semantic reasons for saving or featuring these pieces of content which ultimately determine which names they ultimately have. (For those interested in subscribing to one or or more, or all of these, one can add /feed/ to the ends of the specific types’ URLs, which I’ve linked,  for an RSS feed. Thus, for example, http://boffosocko.com/type/link/feed/ will give you the RSS feed for the “Master” linkblog that includes all the bookmarks, likes, reads, follows, and favorites.)

On my site, I try to provide a title for the content and some type of synopsis of what the content is about. These help to provide some context to others seeing them as well as a small reminder to me of what they were about. When appropriate/feasible, I’ll try to include an image for similar reasons. I’ll also often add a line of text or two as a commentary or supplement to my thoughts on the piece. Finally, I add an icon to help to quickly visually indicate which of the types of posts each is, so they can be more readily distinguished when seen in aggregate.

In relative order of decreasing importance or value to me I would put them in roughly the following order of importance (with their attached meanings as I view them on my site):

  1. Favorite – This is often something which might easily have had designations of bookmark, like, and/or read, or even multiple of them at the same time. In any case they’re often things which I personally find important or valuable in the long term. There are far less of these than any of the other types of linkblog-like posts.
  2. Follow – Indicating that I’m now following a person, organization, or source of future content which I deem to have enough regular constant value to my life that I want to be able to see what that source is putting out on a regular basis. Most often these sources have RSS feeds which I consume in a feed reader, but frequently they’ll appear on other social silos which I will have ported into a feed reader as well. Of late I try to be much more selective in what I’m following and why. I also categorize sources based on topics of value to me. Follows often include sources which I have either previously often liked or bookmarked or suspect I would like or bookmark frequently in the future. For more details see: A Following Page (aka some significant updates to my Blogroll) and the actual Following page.
  3. Read – These are linkblog-like posts which I found interesting enough for one reason or another to have actually spent the time to read in their entirety. For things I wish to highlight or found most interesting, I’ll often add additional thought or commentary in conjunction with the post.
  4. Like – Depending on the content, these posts may not always have been read in their entirety, but I found them more interesting than the majority of content which I’ve come across. Most often these posts serve to show my appreciation for the original source of the related post as a means of saying “congratulations”, “kudos”, “good job”, or in cases of more personal level content “I appreciate this”, “you’re awesome”, or simply as the tag says “I liked this.”
  5. Bookmark – Content which I find interesting, but might not necessarily have the time to deal with at present. Often I’ll wish to circle back to the content at some future point and engage with at a deeper level. Bookmarking it prevents me from losing track of it altogether. I may optionally add a note about how the content came to my attention to be able to better remember it at a future time. While there are often things here which others might have “liked” or “favorited” on other social silos, on my site these things have been found interesting enough to have been bookmarked, but I haven’t personally read into them enough yet to form any specific opinion about them beyond their general interest to me or potentially followers interested in various category tags I use. I feel like this is the lowest level of interaction, and one in which I see others often like, favorite, or even repost on other social networks without having actually read anything other than the headline, if they’ve even bothered to do that. In my case, however, I more often than not actually come back to the content while others on social media rarely, if ever, do.

While occasionally some individual specimens of each might “outrank” others in the category above this is roughly the order of how I perceive them. Within this hierarchy, I do have some reservations about including the “follow” category, which in some sense I feel stands apart from the continuum represented by the others. Still it fits into the broader category of a thing with a URL, title, and high interest to me. Perhaps the difference is that it represents a store of future potentially useful information that hasn’t been created or consumed yet? An unseen anti-library of people instead of books in some sense of the word.

I might also include the Reply post type toward the top of the list, but for some time I’ve been categorizing these as “statuses” or “note-like” content rather than as “links”. These obviously have a high priority if lumped in as I’ve not only read and appreciated the underlying content, but I’ve spent the time and thought to provide a reasoned reply, particularly in cases where the reply has taken some time to compose. I suppose I might more likely include these as linkblog content if I didn’t prefer readers to value them more highly than if they showed up in those feeds. In some sense, I value the replies closer on par to my longer articles for the value of not only my response, but for that of the original posts themselves.

In general, if I take the time to add additional commentary, notes, highlights, or other marginalia, then the content obviously resonated with me much more than those which stand as simple links with titles and descriptions.

Perhaps in the near future, I’ll write about how I view these types on individual social media platforms. Often I don’t post likes/favorites from social platforms to my site as they often have less meaning to me directly and likely even less meaning to my audiences here. I suppose I could aggregate them here on my site privately, but I have many similar questions and issues that Peter Molnar brings up in his article Content, Bloat, privacy, arichives.

I’m curious to hear how others apply meaning to their linkblog type content especially since there’s such a broad range of meaning from so many social sites. Is there a better way to do it all? Is it subtly different on sites which don’t consider themselves (or act as) commonplace books?

Podcasts of things I’ve listened to or want to listen to

I don’t really think of it as a “podcast” per se, but since I make “listen” posts of all the various podcasts and audio I listen to and the vast majority of those posts include direct links to the audio files, my own listen feed essentially becomes a self-published podcast of all the stuff I’m listening to that others could potentially consume. Maybe I should call it a faux-cast?

Here’s the link you can use to subscribe in your favorite podcatcher: http://boffosocko.com/kind/listen/feed/

Perhaps one day I’ll do more with feed validation and submit it to various distribution channels to make searching/subscribing easier, but since I’m not really “promoting” it as anything other than a means of discovery (or extreme stalker behavior) I won’t take the time now.

As I think about creating “want” posts in the near term, perhaps I’ll create a feed of want-to-listen-to items as another discovery channel option as well. In some sense, this is how I use my Huffduffer.com account. It has a subscribe-able list of audio items I want to listen to at some point in the future. Since I can add my Huffduffer feed (or those of others) to my podcatcher, it helps enable me to easily get the content to my phone or other devices to listen to a variety of new things. There’s no reason not to do all of this on my own site explicitly.

Now if only podcatchers could support micropub for more easily creating scrobbles or “listens”…

Image credit: Text imposed on original photo: Tilt_Shift_Wallpaper_24_by_leiyagami flickr photo by Ray Che shared under a Creative Commons (BY-NC) license.

Organizing my research related reading

There’s so much great material out there to read and not nearly enough time. The question becomes: “How to best organize it all, so you can read even more?”

I just came across a tweet from Michael Nielsen about the topic, which is far deeper than even a few tweets could do justice to, so I thought I’d sketch out a few basic ideas about how I’ve been approaching it over the last decade or so. Ideally I’d like to circle back around to this and better document more of the individual aspects or maybe even make a short video, but for now this will hopefully suffice to add to the conversation Michael has started.

Keep in mind that this is an evolving system which I still haven’t completely perfected (and may never), but to a great extent it works relatively well and I still easily have the ability to modify and improve it.

Overall Structure

The first piece of the overarching puzzle is to have a general structure for finding, collecting, triaging, and then processing all of the data. I’ve essentially built a simple funnel system for collecting all the basic data in the quickest manner possible. With the basics down, I can later skim through various portions to pick out the things I think are the most valuable and move them along to the next step. Ultimately I end up reading the best pieces on which I make copious notes and highlights. I’m still slowly trying to perfect the system for best keeping all this additional data as well.

Since I’ve seen so many apps and websites come and go over the years and lost lots of data to them, I far prefer to use my own personal website for doing a lot of the basic collection, particularly for online material. Toward this end, I use a variety of web services, RSS feeds, and bookmarklets to quickly accumulate the important pieces into my personal website which I use like a modern day commonplace book.

Collecting

In general, I’ve been using the Inoreader feed reader to track a large variety of RSS feeds from various clearinghouse sources (including things like ProQuest custom searches) down to individual researcher’s blogs as a means of quickly pulling in large amounts of research material. It’s one of the more flexible readers out there with a huge number of useful features including the ability to subscribe to OPML files, which many readers don’t support.

As a simple example arXiv.org has an RSS feed for the topic of “information theory” at http://arxiv.org/rss/math.IT which I subscribe to. I can quickly browse through the feed and based on titles and/or abstracts, I can quickly “star” the items I find most interesting within the reader. I have a custom recipe set up for the IFTTT.com service that pulls in all these starred articles and creates new posts for them on my WordPress blog. To these posts I can add a variety of metadata including top level categories and lower level tags in addition to other additional metadata I’m interested in.

I also have similar incoming funnel entry points via many other web services as well. So on platforms like Twitter, I also have similar workflows that allow me to use services like IFTTT.com or Zapier to push the URLs easily to my website. I can quickly “like” a tweet and a background process will suck that tweet and any URLs within it into my system for future processing. This type of workflow extends to a variety of sites where I might consume potential material I want to read and process. (Think academic social services like Mendeley, Academia.com, Diigo, or even less academic ones like Twitter, LinkedIn, etc.) Many of these services often have storage ability and also have simple browser bookmarklets that allow me to add material to them. So with a quick click, it’s saved to the service and then automatically ported into my website almost without friction.

My WordPress-based site uses the Post Kinds Plugin which takes incoming website URLs and does a very solid job of parsing those pages to extract much of the primary metadata I’d like to have without requiring a lot of work. For well structured web pages, it’ll pull in the page title, authors, date published, date updated, synopsis of the page, categories and tags, and other bits of data automatically. All these fields are also editable and searchable. Further, the plugin allows me to configure simple browser bookmarklets so that with a simple click on a web page, I can pull its URL and associated metadata into my website almost instantaneously. I can then add a note or two about what made me interested in the piece and save it for later.

Note here, that I’m usually more interested in saving material for later as quickly as I possibly can. In this part of the process, I’m rarely ever interested in reading anything immediately. I’m most interested in finding it, collecting it for later, and moving on to the next thing. This is also highly useful for things I find during my busy day that I can’t immediately find time for at the moment.

As an example, here’s a book I’ve bookmarked to read simply by clicking “like” on a tweet I cam across late last year. You’ll notice at the bottom of the post, I’ve optionally syndicated copies of the post to other platforms to “spread the wealth” as it were. Perhaps others following me via other means may see it and find it useful as well?

Triaging

At regular intervals during the week I’ll sit down for an hour or two to triage all the papers and material I’ve been sucking into my website. This typically involves reading through lots of abstracts in a bit more detail to better figure out what I want to read now and what I’d like to read at a later date. I can delete out the irrelevant material if I choose, or I can add follow up dates to custom fields for later reminders.

Slowly but surely I’m funneling down a tremendous amount of potential material into a smaller, more manageable amount that I’m truly interested in reading on a more in-depth basis.

Document storage

Calibre with GoodReads sync

Even for things I’ve winnowed down, there is still a relatively large amount of material, much of it I’ll want to save and personally archive. For a lot of this function I rely on the free multi-platform desktop application Calibre. It’s essentially an iTunes-like interface, but it’s built specifically for e-books and other documents.

Within it I maintain a small handful of libraries. One for personal e-books, one for research related textbooks/e-books, and another for journal articles. It has a very solid interface and is extremely flexible in terms of configuration and customization. You can create a large number of custom libraries and create your own searchable and sort-able fields with a huge variety of metadata. It often does a reasonable job of importing e-books, .pdf files, and other digital media and parsing out their meta data which prevents one from needing to do some of that work manually. With some well maintained metadata, one can very quickly search and sort a huge amount of documents as well as quickly prioritize them for action. Additionally, the system does a pretty solid job of converting files from one format to another, so that things like converting an .epub file into a .mobi format for Kindle are automatic.

Calibre stores the physical documents either in local computer storage, or even better, in the cloud using any of a variety of services including Dropbox, OneDrive, etc. so that one can keep one’s documents in the cloud and view them from a variety of locations (home, work, travel, tablet, etc.)

I’ve been a very heavy user of GoodReads.com for years to bookmark and organize my physical and e-book library and anti-libraries. Calibre has an exceptional plugin for GoodReads that syncs data across the two. This (and a few other plugins) are exceptionally good at pulling in missing metadata to minimize the amount that must be done via hand, which can be tedious.

Within Calibre I can manage my physical books, e-books, journal articles, and a huge variety of other document related forms and formats. I can also use it to further triage and order the things I intend to read and order them to the nth degree. My current Calibre libraries have over 10,000 documents in them including over 2,500 textbooks as well as records of most of my 1,000+ physical books. Calibre can also be used to add document data that one would like to ultimately acquire the actual documents, but currently don’t have access to.

BibTeX and reference management

In addition to everything else Calibre also has some well customized pieces for dovetailing all its metadata as a reference management system. It’ll allow one to export data in a variety of formats for document publishing and reference management including BibTex formats amongst many others.

Reading, Annotations, Highlights

Once I’ve winnowed down the material I’m interested in it’s time to start actually reading. I’ll often use Calibre to directly send my documents to my Kindle or other e-reading device, but one can also read them on one’s desktop with a variety of readers, or even from within Calibre itself. With a click or two, I can automatically email documents to my Kindle and Calibre will also auto-format them appropriately before doing so.

Typically I’ll send them to my Kindle which allows me a variety of easy methods for adding highlights and marginalia. Sometimes I’ll read .pdf files via desktop and use Adobe to add highlights and marginalia as well. When I’m done with a .pdf file, I’ll just resave it (with all the additions) back into my Calibre library.

Exporting highlights/marginalia to my website

For Kindle related documents, once I’m finished, I’ll use direct text file export or tools like clippings.io to export my highlights and marginalia for a particular text into simple HTML and import it into my website system along with all my other data. I’ve briefly written about some of this before, though I ought to better document it. All of this then becomes very easily searchable and sort-able for future potential use as well.

Here’s an example of some public notes, highlights, and other marginalia I’ve posted in the past.

Synthesis

Eventually, over time, I’ve built up a huge amount of research related data in my personal online commonplace book that is highly searchable and sortable! I also have the option to make these posts and pages public, private, or even password protected. I can create accounts on my site for collaborators to use and view private material that isn’t publicly available. I can also share posts via social media and use standards like webmention and tools like brid.gy so that comments and interactions with these pieces on platforms like Facebook, Twitter, Google+, and others is imported back to the relevant portions of my site as comments. (I’m doing it with this post, so feel free to try it out yourself by commenting on one of the syndicated copies.)

Now when I’m ready to begin writing something about what I’ve read, I’ve got all the relevant pieces, notes, and metadata in one centralized location on my website. Synthesis becomes much easier. I can even have open drafts of things as I’m reading and begin laying things out there directly if I choose. Because it’s all stored online, it’s imminently available from almost anywhere I can connect to the web. As an example, I used a few portions of this workflow to actually write this post.

Continued work

Naturally, not all of this is static and it continues to improve and evolve over time. In particular, I’m doing continued work on my personal website so that I’m able to own as much of the workflow and data there. Ideally I’d love to have all of the Calibre related piece on my website as well.

Earlier this week I even had conversations about creating new post types on my website related to things that I want to read to potentially better display and document them explicitly. When I can I try to document some of these pieces either here on my own website or on various places on the IndieWeb wiki. In fact, the IndieWeb for Education page might be a good place to start browsing for those interested.

One of the added benefits of having a lot of this data on my own website is that it not only serves as my research/data platform, but it also has the traditional ability to serve as a publishing and distribution platform!

Currently, I’m doing most of my research related work in private or draft form on the back end of my website, so it’s not always publicly available, though I often think I should make more of it public for the value of the aggregation nature it has as well as the benefit it might provide to improving scientific communication. Just think, if you were interested in some of the obscure topics I am and you could have a pre-curated RSS feed of all the things I’ve filtered through piped into your own system… now multiply this across hundreds of thousands of other scientists? Michael Nielsen posts some useful things to his Twitter feed and his website, but what I wouldn’t give to see far more of who and what he’s following, bookmarking, and actually reading? While many might find these minutiae tedious, I guarantee that people in his associated fields would find some serious value in it.

I’ve tried hundreds of other apps and tools over the years, but more often than not, they only cover a small fraction of the necessary moving pieces within a much larger moving apparatus that a working researcher and writer requires. This often means that one is often using dozens of specialized tools upon which there’s a huge duplication of data efforts. It also presumes these tools will be around for more than a few years and allow easy import/export of one’s hard fought for data and time invested in using them.

If you’re aware of something interesting in this space that might be useful, I’m happy to take a look at it. Even if I might not use the service itself, perhaps it’s got a piece of functionality that I can recreate into my own site and workflow somehow?

If you’d like help in building and fleshing out a system similar to the one I’ve outlined above, I’m happy to help do that too.

Related posts

🎧 This Week in Tech 656 A Camel With Your Name on It | TWiT.TV

Listened to This Week in Tech 656 A Camel With Your Name on It by Leo Laporte, Dwight Silverman, Mike Elgan, Larry Magid from TWiT.tv
Social media and kids, Google fiber fail, 5G dreams, and more. Surprise: young people use social more than the oldsters. Some of them even use Vero. Samsung Galaxy S9 takes top marks for display and camera. Google Fiber didn't go quite as planned. Feds in your iPhone? It's more likely than you think. Amazon buys Ring, can now see and hear everything. US vs Microsoft II: The Revenge of the Irish. GitHub gets gotten by the biggest DDoS EVER.

There’s a great conversation in this episode about open platforms and why they’re important. The basic conversation starts around 12m19s, but really gets going at 16 minutes in and continues through to about 26:30. It includes some great examples of text messaging, social media companies, reservation systems and how they work either for the good or the bad based on how open or closed they are. It becomes a textbook set of cases for why the IndieWeb movement is important.

For those interested in just this short 10 minute section you can listen below on this bookmarked version of the audio:

Another interesting sub-segment is at 17:13 where Dwight Silverman comments that he knows many people who’ve removed social apps from their cell phones, including Leo Laporte. I’ve done this nearly a year ago and recently Dries Buytaert mentioned he’s done it as well. There’s also a recent article by Farhad Manjoo in the New York Times that he’s done something similar with solid results. For a list of people who’ve gone further, check out this list of silo-quits.

Reply to ravisagar on Twitter

Replied to ravisagar on Twitter (Twitter)
@ChrisAldrich Just found your blog after searching more about implementing #POSSE and #Webmention Great content. Thanks for sharing.
If you’re building in Drupal, I’m sure you’ll also find some valuable help from @hongpong, @mlncn@dries, and @swentel.

Enabling two way communication with WordPress and GitHub for Issues

This week, using the magic of open web standards, I was able to write an issue post on my own website, automatically syndicate a copy of it to GitHub, and later automatically receive a reply to the copy on GitHub back to my original post as a comment there. This gives my personal website a means of doing two way communication with GitHub.

This functionality is another in a long line of content types my website is able to support so that I’m able to own my own content, yet still be able to interact with people on other websites and social media services. Given the number of social sites I’ve seen disappear over the years (often taking my content with them), this functionality gives me a tremendously larger amount of control and ownership over my web presence and identity while still allowing me to easily communicate with others.

In this post I wanted to briefly sketch what I’ve done to enable this functionality, so others who are so inclined can follow along to do the same thing.

Setting up WordPress to syndicate to GitHub

I’ll presume as a first step that one has both a GitHub account and a self-hosted WordPress website, though the details will also broadly apply to just about any content management system out there that supports the web standards mentioned.

Register your GitHub account and your website with Bridgy

Ryan Barrett runs a fantastic free open sourced service called Bridgy. To use it you’ll need the microformat rel=​​​“me” links on both your GitHub account and your website’s homepage that point at each other.  GitHub will do most of the work on its side for you simply by adding the URL of your website to the URL field for your GitHub account at https://github.com/settings/profile. Next on your website’s homepage, you’ll want to add a corresponding rel=​​​​​“me” link from your website to your GitHub account.

In my case, I have a simple widget on my homepage with roughly the following link:
<a href="https://github.com/username">GitHub</a>
in which I’ve replaced ‘username’ with my own GitHub username. There are a variety of other ways to add a rel=​​​​​“me” link to your webpage, some of which are documented on the IndieWeb wiki.

Now you can go to Brid.gy and under “Connect your accounts” click on the GitHub button. This will prompt you to sign into GitHub via oAuth if you’re not already logged into the site. If you are already signed in, Brid.gy will check that the rel=​​​​​“me” links on both your site and your GitHub account reciprocally point at each other and allow you to begin using the service to pull replies to your posts on GitHub back to your website.

To allow Brid.gy to publish to GitHub on your behalf (via webmention, which we’ll set up shortly), click on the “Publish” button.

Install the Webmention Plugin

The underlying technology that allows the Bridgy service to both publish on one’s behalf as well as for the replies from GitHub to come back to one’s site is an open web standard known as Webmention. WordPress can quickly and easily support this standard with the simple Webmention plugin that can be downloaded and activated on one’s site without any additional configuration.

For replies coming back from GitHub to one’s site it’s also recommended that one also install and activate the Semantic Linkbacks Plugin which also doesn’t require any configuration. This plugin provides better integration and UI features in the comments section of one’s website.

Install Post Kinds Plugin

The Post Kinds Plugin is somewhat similar to WordPress’s Post Formats core functionality, it just goes the extra mile to support a broader array of post types with the appropriate meta data and semantic markup for interacting with Bridgy, other web parsers, and readers.

Download the plugin, activate it, and in the plugin’s settings page enable the “Issue” kind. For more details on using it, I’ve written about this plugin in relative detail in the past.

Install Bridgy Publish Plugin

One can just as easily install the Bridgy Publish Plugin for WordPress and activate it. This will add a meta box to one’s publishing dashboard that, after a quick configuration of which social media silos one wishes to support, will allow one to click a quick checkbox to automatically syndicate their posts.

Install the Syndication Links Plugin

The Syndication Links plugin is also a quick install and activate process. You can modify the settings to allow a variety of ways to display your syndication links (or not) on your website if you wish.

This plugin will provide the Bridgy Publish Plugin a place to indicate the permalink of where your syndicated content lives on GitHub. The Bridgy service will use this permalink to match up the original content on your website and the copy on GitHub so that when there are replies, it will know which post to send those replies to as comments which will then live on your own website.

Post away

You should now be ready to write your first issue on your website, cross post it to GitHub (a process known in IndieWeb parlance as POSSE), and receive any replies to your GitHub issue as comments back to your own website.

Create a new post.

In the “Kinds” meta box, choose the “Issue” option.

Screen capture of the Kinds meta box with "Issue" option chosen.
Kinds meta box with “Issue” option chosen.

Type in a title for the issue in the “Title” field.

In the “Response Properties” meta box, put the permalink URL of the Github repopository for which you’re creating an issue. The plugin should automatically process the URL and import the repository name and details.

The “Response Properties” meta box.

In the primary editor, type up any details for the issue as you would on GitHub in their comment box. You can include a relatively wide variety of custom symbols and raw html including

and  with code samples which will cross-post and render properly.

In the GitHub meta box, select the GitHub option. You can optionally select other boxes if you’re also syndicating your content to other services as well. See the documentation for Bridgy and the plugin for how to do this.

Screen capture of the Bridgy Publish meta box with GitHub chosen
Bridgy Publish meta box with GitHub chosen.

Optionally set any additional metadata for your post (tags, categories, etc.) as necessary.

Publish your post.

On publication, your issue should be automatically filed to the issue queue of the appropriate GitHub repo and include a link back to your original (if selected). Your post should receive the syndicated permalink of the issue on GitHub and be displayed (depending on your settings) at the bottom of your post.

Syndication Links Plugin will display the location of your syndicated copies at the bottom of your post.

When Bridgy detects future interactions with the copy of your post on GitHub, it will copy them and send them to your original post as a webmention so that they can be displayed as comments there.

An example of a comment sent via webmention from GitHub via Brid.gy. It includes a permalink to the comment as well as a link to the GitHub user’s profile and their avatar.

If you frequently create issues on GitHub like this you might want a slightly faster way of posting. Toward that end, I’ve previously sketched out how to create browser bookmarklets that will allow you one click post creation from a particular GitHub repo to speed things along. Be sure to change the base URL of your website and include the correct bookmarklet type of “issue” in the code.

The Post Kinds plugin will also conveniently provide you with an archive of all your past Issue posts at the URL http://example.com/kind/issue/, where you can replace example.com with your own website. Adding feed/ to the end of that URL provides an RSS feed link as well. Post Kinds will also let you choose the “Reply” option instead of “Issue” to create and own your own replies to GitHub issues while still syndicating them in a similar manner and receive replies back.

Other options

Given the general set up of the variety of IndieWeb-based tools, there are a multitude of other ways one can also accomplish this workflow (both on WordPress as well as with an infinity of other CMSes). The outline I’ve provided here is one of the quickest methods for beginners that will allow a relatively high level of automation and almost no manual work.

One doesn’t necessarily need to use the Post Kinds Plugin, but could manually insert all the requisite HTML into their post editor to accomplish the post side of things via webmention. (One also has the option to manually syndicate the content to GitHub by cutting and pasting it as well.) If doing things manually this way is desired, then one will need to also manually provide a link to the syndicated post on GitHub into their original so that Bridgy can match up the copy and the original to send the replies via webmention.

More details on how to use Bridgy with Github manually in conjunction with WordPress or other CMSes can be found here: https://brid.gy/about#github-issue-comment

Further steps

If you’ve followed many of these broad steps, you’ve given already given yourself an incredibly strong IndieWeb-based WordPress installation. With a minimal amount of small modifications you can also use it to dovetail your website with other social services like Twitter, Facebook, Flickr, Instagram, Google+ and many others. Why not take a quick look around on the IndieWeb wiki to see what other magic you can perform with your website!

I’ve documented many of my experiments, including this one, in a collection of posts for reference.

Help

If you have questions or problems, feel free to comment below or via webmention using your own website. You can also find a broad array of help with these plugins, services, and many other pieces of IndieWeb technology in their online chat rooms.​​​​​​​​

👓 Posting my phone’s battery status to my site | Dries Buytaert

Read Posting my phone's battery status to my site by Dries Buytaert (dri.es)
Working towards being able to publish notes and photos from my phone
This functionality seemed eerily familiar to me as I began to read, but the really interesting part is the reason he did it.