A Following Page (aka some significant updates to my Blogroll)

I’ve been slowly but surely working on compiling a list of people I’m following online. In older iterations of the web, this would have been known as a blogroll, but I think it’s time to update the concept and potentially add some new features and functionality to it. It’s also time to upgrade its status on my site, so I’m moving it from a widgetized sidebar area on my front page to its own page under my “About” menu.

Why

Information Overload

As a member of more social sites that I have desire to count, I’m often overwhelmed with email, text, and other notifications from many of them. When I do dip into their streams, I sometimes find some reasonable value, but, more often that not, I’m presented with a melange of advertisements and somewhat meaningless and context-less posts that are more like addictive fat, sugar, and salt than healthy protein and complex carbohydrates.

I’ve read books like Clay Johnson’s Information Diet: a Case for Conscious Consumption and P.M. Forni’s excellent Thinking Life: How to Thrive in the Age of Distraction which describe an overwhelming media and online social atmosphere with some prescriptive measures for cutting down on the noise. More people obviously need this type of advice and I’m regularly thinking about how to cut down on the noise and get more valuable signal out of my online tools.

An Inventory of Sources

As a result of all this noise from too many sources and social platforms, I’ve found that having a manifest or complete inventory of all my online reading sources can be immensely valuable. It will make it easier to see what I’m reading and consuming on a regular basis and therefor easier to prune or update this list based on how often I’m reading these sources compared to the value I’m getting out of them.

I can look at the titles of the sources and better get a feel for exactly what I’m consuming and possibly how much. Those I don’t read as often can be pruned out of the list or can serve as a reminder of why I wanted to add them in the first place and what I wanted to get out of them. Better that I be nagged to read things I know I’ll get value out of than defaulting to the fast food-esque fluff that, like many others, I turn to on Facebook, Twitter, and Instagram because it’s “easy” to consume.

I’ve also now compiled a year’s worth of reading data for things that I’ve read online. I’ve saved links to literally everything I’ve read in the past full calendar year to my website (though I only choose to show a subsection of those links to the public). This has given me a more solid data set of what I’ve read and interacted with to better guide my decisions about what I should put on the list and what I shouldn’t.

Notifications

As for the notification overload, by moving some of my reading onto my site via the excellent PressForward reader, I can drastically cut down on the number of notifications I get in email or via phone. I can more directly control exactly which notifications (and when they’re sent) that are originating from my own website.

Fighting Algorithms (and winning!)

Over the past few years, we’ve seen the rapid rise of algorithms. In some cases they’ve provided worthwhile improvements to our lives, while in others they’re downright malicious and destructive. This has become drastically more apparent in the past year or so, and I invite those who aren’t aware of their dramatic effects on our lives to read Cathy O’Neil’s book Weapons of Math Destruction, which does a great job of outlining them for the lay person with no technical background.

Every day these black box algorithms are choosing more and more of what we read and consume. (The only thing worse than the lack of a free press coupled with government controlled media is a corporate algorithmically controlled media which gives you the illusion of freedom.) Because most companies that are using these algorithms in the social space are doing so to keep us more “engaged” and on their sites for longer and clicking their ads with out any transparency, I can no longer trust them. My goals and ideals when reading online content are drastically different than theirs. I want to become more informed, challenged, and made to think. I don’t want their programmatic “reversion to the mean” forcing me to read more memes, jokes, political vitriol, and useless content.

To fight these algorithms, particularly those found in Facebook and to a lesser extent in Twitter, I’m going to cut them off at the knees and consciously choose a set of specific streams to read and engage with. Because I control what goes in to the system, I’ll know exactly what comes out. To touch on the food analogy again, when I cook for myself, I know exactly what the ingredients are and can thus eat a more healthy and well-balanced diet compared to going out and eating fast-food where I’m not ever quite sure if the “beef” is really beef, much less if it’s safe. Yes, I’ll say it, I’m going to go both organic as well as farm-to-table in my online social life.

Twitter thought experiment

Initially I had contemplated declaring Twitter bankrupcy. It seemed like a brilliant and cathartic-ly wonderful idea! But cleaning out my Twitter feed to a much smaller subset ultimately seemed like way too much work. I can only think about the hours and hours of time I’ve spent even creating and categorizing Twitter feeds into lists on my account. (Fortunately others can also follow those curated lists to find some value, so it’s not a total loss.) Starting over again from scratch on my main feed seemed untenable. Even if I did clean it all out, I would potentially have a better feed, but it’s still a feed on a silo which I don’t own or control and it doesn’t have any effect on needing to repeat the same work on dozens of other silos. Heavy pruning and weeding within someone else’s walled garden seemed like a painful and unscalable time-suck that I would potentially need to repeat on an ongoing basis. It’s akin to the sharecropping of content that I had previously been doing for them and refuse to continue to do so.

The better option seems to be to use open web technologies to create and maintain my own personal list. It’s something I own and can control. I can update it as often as I want. Even better, I only need to do it in one place instead of dozens and the results can be distributed across multiple sites almost instantaneously!

As I’ll also discuss below, my open list is still easily shareable and modifiable by others. So I’m not accruing benefits just to myself, but my work can become scale-able and usable by others.

What

So I’ve gone back to some of the original web technology including blogrolls and OPML files. I’ve created a Following page where I’m going to share my data. Here’s that page:
Context

In creating my list I wanted to go above the traditional blogroll and add additional context that most of them often didn’t originally have. I’ve tried to add a photo, logo, or avatar of some sort for all the sources to provide some visual context. I’ve also added either a description of the site or a snippet from the site’s owner to give an idea of what it is about (in addition to categorizing them by one or more tags) as well as an optional reason why I’m following them. I’ve also included a link to the site as well as an RSS, atom, or h-entry feed for the site to make subscribing easier for others. Where appropriate, I’ve added the microformats XFN data to these sites as well so others will have an idea of my relationship to those entities or people I’m following. Disclosure is a good thing, right? Just ask a journalist. (Viewing this last part is currently only available via parsers or by viewing the page source within a browser, but it’s there for potential future use.) In aggregate, these bits of context are not only valuable for page viewers who are considering subscribing/following them for themselves, but they also make a statement about me as a reader, a topic I’ll touch on further below.

Promotion of position: from sidebar to a full page

Given the value of social following/friending in the past decade, it’s long overdue to promote the old-school blogroll, which was traditionally placed in a diminutive position in one’s sidebar, to a more prominent position on its own page (or others may even choose to span it over multiple pages).

Social media platforms do their best to hide our social graphs from us thereby making more of what they do seem magical. Many have even bent over backwards to prevent other possibly competing social startups from leveraging our own social graphs on their platform to help build them up. Just where do they think that data came from initially? It came from me! I own it and should continue owning it.

To that end, my follow list in some sense is an implicit statement of me owning that data once again. While it may take me a bit to import and arrange it all, I’ll have ownership and agency over it. Perhaps an outside service may want pieces or parts of it, and in some cases having it open and portable may provide continued future value to me.

As an analogy for what this means, think back to the days of arduously making mix tapes in the 80’s. You’d spend hours and hours diligently copying and pasting songs together onto a cassette tape to give to a favored someone. The gift usually meant more than just the songs on the tape. This type of thing is far easier now with digital music services to the point of devaluing part of the original meaning of a mix tape. However, almost no modern music service will allow you to take your hand-crafted playlists out of their service to other competing services to make it easier to switch from something like iTunes to Amazon Music or Google Music. It’s painful and annoying in an age chock full of digital exhaust. I’m hoping that my open following list might be a lot like the portable digital music play list I wish I had.

Identity

I’m placing my follow list as a submenu item underneath my “About Me” page. Why? On most social networks there are a few simple fields, typically in a profile or on an explicit profile page, which give others some basic data about who the account holder is and what they do. Often people use this data to make relatively quick decisions about whether they should follow (or follow back) another person. Sadly I’m of the opinion that the amount and richness of the data on these pages is too sparse to be of much use. Fortunately by owning my own site, I can remedy this problem for others who visit it.

My website has thousands to potentially hundreds of thousands of posts. What data can I easily provide people who are interested in learning more about me without reading the whole book as it were? My About page is a good quick place to start, but it can’t necessarily give the whole picture. I’ve also got a few other sub-pages under my About page which helps to round out the snapshot picture of who I am. These include:

my /now page, which tells others what I’m up to most recently, but at a higher level than reading a month’s worth of status updates;

my /Favorites page, which is a list of some of my favorite things and things I use on a regular basis; it’s not dissimilar to a “What I’m Using” page or regular posts concept;

my /Bucketlist page, which is a list of some things I’ve done or would like to do before I “kick the bucket”;

my /Social Media (or as I call it, my rel=”me”) page, which is a list of my too-many-presences on other social platforms;

I’ve also recently added an /AMA or Ask Me Anything page, so that if there’s something pressing you need to know that isn’t written or find-able on my site, you can easily ask it.

Finally, there’s now also a source for others to quickly see what I’m regularly reading and find valuable enough on the web to have created a list of it all.

I think that in evaluating others, this last page (the following page) may actually provide the most value, and so I hope it does to others in return. I can’t help noting here how I’ll often judge others by which books they have on their shelves at home, or this great judgmental quote from John Waters:

“If you go home with somebody, and they don’t have books, don’t fuck ’em!”

I hope others I’m following will follow suit and create their own following pages as I’d honestly love nothing more than to know who and what they find valuable, and to be able to extract it quickly to add to my own list! The value of discovery here can be tremendous.

Intellectual Antecedents

I know that academics like to give credit to their sources when writing papers, though they often do so in explicit footnote form. Abstracted out to a more general form, I’m hoping that my following page can also help to provide some meta data about which sources I regularly find valuable and which ones are most likely influencing me even if they’re not explicitly footnoted within my writings.

Benefit of following members of the IndieWeb

Having been using a version of my following page for a while, I’ve found one particularly nice feature of following people who are adherents of the IndieWeb movement. Because they’ve chosen to post on their own site first (and optionally syndicate to other silos), their internet presence is far more centralized for subscription and consumption. I don’t have to follow them on dozens of multiple social silos to attempt to capture all their content. I can subscribe in one place and get as much or as little as I like! You can do much the same with my site, which I’ve discussed in the past.

Now of course this isn’t the case for everyone yet, and there can be some exceptions (since not everyone owns every post-type yet nor has quit all their silos), but it does tremendously cut down on the noise, cruft, and duplicated messages that live on multiple platforms.

I’ve experimented in the past with following even a subset of researchers and their work online. The amount of time needed to catalog them all, find their various presences in sites like Facebook, Twitter, LinkedIn, Google+, Academia, ResearchGate, etc., etc. was painful, but then setting up notifications and creating a workflow was even worse–particularly since I want to read or see everything they’re putting out over time. I think I’d have been better off building them all custom websites to publish their content instead.

OPML means sharing

OPML really stands for Outline Processor Markup Language. It is an XML-based format and standard used for feed lists interchange. All this to mean that it’s a standardized specially formatted document that allows one to share all the data in it easily by means that make sense to certain machines that would want it.

The most common example is that most feed readers allow you to import and export OPML files (with the .xml extension) so that you can quickly and easily move all of your feeds from one reader to another. (This is kind of like the playlist analogy for music that I mentioned–it’s just a playlist, or readlist if you prefer, for feed readers.) This is great if you want to try out a or move to a new feed reader.

Even better, because you can find and save a copy of my list, others can easily port it into their feed readers and sample the things that I’m seeing and often reading.

But wait! There’s more…

Many modern feed readers are supporting OPML subscription functionality! (What’s that you ask?) It’s fine to download my OPML list and import it into your reader. But what happens when I update it next week with three new great sources and remove a dead feed that no longer works? You’re stuck missing out on the new stuff and have to manually find and remove the broken one yourself. Instead, if you’ve subscribed to my OPML in your feed reader, the reader knows the URL where my list lives and checks it frequently for updates so you don’t have to worry about syncing the changes yourself! Shazam! It’s now a lot like a shared/synced playlist for articles. For those who are familiar with Twitter lists and following those, it’s very similar to how those work, except in this case they’re open and work on multiple sites and apps instead of being stuck in a proprietary service.

How

Now the part you’ve been waiting for: How can I do this myself?

For those who are on WordPress, much of the base functionality is already built into WordPress core. Below I’ll provide a few means and tips for getting you most of the way while still having some flexibility in where and how you choose to display your particular version.

(For those not on WordPress, check out some of the details and documentation on the IndieWeb wiki and ask in their chat how you might go about doing it.)

Re-enable Links Manager interface

The code for the WordPress blogroll functionality was built into core and was known as the Links Manager, but it was removed in version 3.5 for new installs that didn’t have any pre-existing links. I’ll note that the functionality was removed in late 2012 long after social media had already begun to make functionality like blogrolls (and even blogs themselves) fall out of fashion.

Fortunately, while it’s now hidden for most, it can be brought back with one line of code. (Hooray for backwards compatibility!) You can bring this functionality back to your website by adding the following snippet of code into your theme’s functions.php file:

add_filter( 'pre_option_link_manager_enabled', '__return_true' );

You can do this manually in the administrative user interface of your WordPress install by going to Appearance » Editor, which will bring up your theme files. Then in the right hand sidebar there should be a link for editing your functions.php file. Cut and paste the line of code into the file on its own line and then click Update File.

That’s easy enough, but what do you do if you’re scared of code? (You shouldn’t be, by the way…) The same functionality can be brought back with the Link Manager plugin. Just download it in the admin UI under Plugins » Installed Plugins and click Add New at the top of the page. Search for the plugin name Link Manager to download and then activate. That’s it.

Note: some may worry at the fact that the details for this plugin include the warning words:

This plugin hasn’t been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

On a scale of 1-10 for warnings, this one is really less than a 1. This has to be one of the simplest plugins in all of WordPress because it really only includes the single line of code above. There’s really almost nothing with it that could change, break, or need to be updated. It’s old, but it will work.

You’ve now re-enabled the Links Manager which will put a Links tab into your admin UI. You can click on it to start adding your links, feeds, photos, and data. The WordPress codex has great documentation for how to do this:
Within the admin UI you can now display a blogroll widget by going to Appearance » Widgets and moving the Links widget into one of the widgetizable areas in your theme.

Put your following list onto a page by itself

Sadly, because the Links Manager is so old and is now hidden, development on it seems to have long since stalled. This means you’ll require some simple code to get things working a bit better in terms of display. I’ll do my best to give you instructions for cutting and pasting with as little code as possible.

Plugin and Code

There’s a convenient plugin called Links Page which will get us most of the way. Go ahead and download and activate it. From the plugin interface, click the edit link for the Links Page.

The Links Page plugin displayed in the Plugin page of the WordPress admin UI.

The editor will pop up with the code for the plugin, which looks like this:

function linkspage($text) {
if (preg_match("| |", $text)) {
$links = wp_list_bookmarks();
$text = preg_replace("| |", $links, $text);
}
return $text;
}
add_filter('the_content', 'linkspage', 2);

In between the parenthesis for the function wp_list_bookmarks(), you’ll want to add something like the following code snippet I’ve customized for my following lists:

'categorize=1&category_orderby=count&category_order=DESC&orderby=rating&order=DESC&show_name=1&between= - &show_description=1&category_before= &category_after= '

Yours doesn’t necessarily need to be exactly the same, but it should reflect how you’d like your own list to look. To accomplish this take a look at the documentation and examples for this function to pick and choose among the options you’d like to display. You’ll just string the options together between two single quotes and separate them with an ampersand (&) as in my example above.

Caveat: Since we’ve done some “cowboy coding” here and modified the code directly in the plugin, we run the risk of the accidentally updating the plugin and overwriting our changes. I would suggest that this risk is fairly low given the simplicity of the plugin and the unlikelihood that it would need an update. More advanced WordPress users will know that the better option is to roll up all the code in the plugin and all their changes and put it into their functions.phpfile or just fork the plugin with a new name and go from there.

CSS for styling and display

You may want to put in a bit of CSS to modify how our following list is displayed on the page. Without some tweaks or taking some extreme care when uploading or linking to the photos/avatars, we may run into some display issues.

As a result I’ve added the following snippet of CSS to my theme’s style.css file:

ul.xoxo.blogroll > li > a > img {
width: 20px;
height: 20px;
}
ul.xoxo.blogroll li{
list-style-type: none;
}

You can accomplish this by going to Appearance » Editor in the admin UI and editing the file by cutting and pasting the segment above into it and clicking Update file when you’re done.

The Page itself

We’ve now got all the big pieces in place. If you haven’t already, add some data into the Links Manager (documented here). You then need to create a new page on your site in the admin UI. I’ve named mine Following, but you can name yours Blogroll, Links, or anything you’d like really–it is your site after all.

Next, as described in the instructions for the Links Page plugin add the following text into the body of your post:



When you’re done, save the page. The plugin will then replace the text above with your following list based on the output properties you specified.

Optionally you may want to go to Appearance » Menus to modify your menu to show your follow page in your menu structure so people can easily get to it.

Other Options

Those who’d like a different way of doing all of the above might also consider trying out other blogroll-related plugins in the WordPress repository. There are likely some other excellent options and methods to accomplish some of this functionality in a way that’s acceptable for your needs.

Future

So where do we go from here? This is certainly not complete by any means and there could be additional functionalities built on top of and even beside all of this.

I haven’t delved into it deeply, but I know there are developers like Dave Winer who have created services like Share Your OPML which allow you to upload your own file and then get recommendations of similar feeds in which you might also have some interest. Services like this that take advantage of my open data to provide me with value in return could be truly awesome.

I’m sure others smarter than I will come up with better UI. I’d personally love to have a bookmarklet similar to SubToMe that allows me to quickly and easily scrape a page and post the data from a person’s site to my following list (SubToMe currently redirects one to third party readers instead.)

I’ve also been enamored by Colin Walker’s “webmention roll” in which he creates a blogroll of all the people who have interacted with his website via Webmention.

New functionality

The future might also bring increased ease-of-use as well as expanded functionality. I’m curious what value might be extracted by adding microfomats like h-cards to my follow lists? What could parsers do with a microformat like ‘p-following’ to more quickly create social graphs like Ryan Barrett’s Indie Map?

What might we expect with simpler formats than OPML, which could likely be done with microformat classes the same way that h-entry and h-feed have made supporting clunkier specs like RSS and Atom far easier?

I’m feeling itchy with all the potential possibilities…

Comments

I’d love to hear people’s thoughts and comments on the usefulness of any of the above. Is it something you’d attempt to do yourself? (If you attempted it, did it actually work?) What would you change? How could it be extended? What UI/UX improvements could be added? Other interactivity suggestions? How can the discoverability of such a thing be improved? What could be built on top of it all?

Also feel free to share your following pages, blogrolls, and OPML feeds in the comments below. Have you added your examples to the IndieWeb wiki to help others improve?

Are there people or sources missing from my following page that you’d recommend? (Keep in mind I’m far from done adding sources…)

A final thanks

Here’s a big thank you and h/t to all those who’ve been working on their own versions of this type of technology (either recently or for decades) including: Dave Winer (thanks for OPML by the way), Richard MacManus, Colin Devroe, Colin Walker, Khürt Williams, James Shelly, Bryan Alexander, Aaron Davis, and many, many others.
​​​​​