Owning my RSVP’s from Meetup.com using IFTTT and Webhooks to a Micropub endpoint

It’s a slightly circuitous set up and I may find a better way to do it eventually, but last night I was tinkering at a way to better own my RSVPs from Meetup.com. Previously it has been a completely manual set up, but it’s something I do often enough that the hour long investment was more than worth it. (I specifically want to own my data here because I’m hedging my bets for what ends up happening with Meetup.com in a post-WeWork bankrupcy world.)

Since I’ve been adding PESOS workflows using the Micropub endpoint on my website lately, I tried setting up a direct ping using IFTTT.com from the RSS feed from Meetup. Sadly the timestamps on that feed are not of the time that I RSVP’d, but the time the event was published. As a result the trigger seems like it would never actually fire to make a post. I also thought about taking a feed of all the events of the groups I’m a member of and feed that in, but alas, that feed doesn’t seem to exist. If that were possible, then I could create drafts of the data and then RSVP as yes, no, maybe, etc. for each of them in a slightly more manual (and thoughtful) way, but I’d also have the benefit of seeing all the notifications for everything pop up in my own website.

Since I always immediately add my RSVP’s from Meetup.com directly to my Google Calendar anyway, I thought I’d use that as the data source and trigger mechanism instead, and lo and behold! It works!

Now I can quickly RSVP via Meetup.com, use their interface to add the event to my Google Calendar, leverage IFTTT.com’s Webhook to send a Micropub request to my endpoint, and I’ve got an RSVP post with all the details on my website! It also cleverly creates syndication links on my posts as well.

Perhaps I could now use some of the infrastructure to create an upcoming events widget in a sidebar, to the home page of my site, or even on my neglected /Now page?

Since this Webhook to Micropub process is something I’ve been working on a bit, I’ll soon have a post with a step-by-step set up and an example or two of how it works, so that others can implement it too. I’ve been using it for read posts, listen posts, watches, and even for creating annotation posts on my site. Depending on the data source, some of the process can still have some manual portions, but at least I’m getting all the data I’d like to have.

Home

55 °F haze

Annotation posts >> Highlight posts

Because they’re so similar, I’ve decided to discontinue the custom highlight posts my site had in lieu of the more prevalent annotation post kind. The layout and format of both as highlighted text quoted from another site was almost exactly the same with the primary difference being my additional commentary added to the highlighted text to call it an annotation. Conceptually I considered “highlight + commentary/reply = annotation”. The difference is marginal at best–pun intended.

Since I only had 13 highlight posts versus 121 annotation posts (plus various additional annotations and highlights which I’ve rolled up into the body of some of my read posts) over the last year and a half, I felt it seemed redundant and bothersome to maintain two separate, but nearly identical post kinds. Semantically one may think of a highlight on some text as an annotation anyway, thus the idea of annotation subsumes that of a simple highlight.

As of this evening, I’ve changed all the custom highlight posts to be of the annotation kind. Other than the one word visual difference of the post kind text changing from “highlight” to “annotation” this change won’t affect much except for those who may have been subscribed to the highlight feed. Going forward you may consider subscribing to my annotation feed instead.

I had created highlight posts first, but in the end annotation posts have won the day. And for those that don’t have them, fear not, because honestly annotation posts are really just glorified bookmarks with custom text in the context. (The glorification only entails a highligher icon instead of a bookmark icon and a bit of CSS to color the text yellow.) I do find having them delineated for my personal research purposes useful though.

Spent a few minute to finally set up my website with Brid.gy so that it’s now pulling responses back from Mastodon. It’s so nice to see all the interactions that were once “lost” to me coming back to live with their proper contexts on my website.

For those looking to tinker with their websites as it relates to interacting with Mastodon, the IndieWeb has a reasonable number of potential options in addition to your ability to roll your own.

A brief year in review of my website, domain, online identity, commonplace book, journal, diary, etc.

With this post I will have posted to my personal website every day this past year. #​​AMA

This may seem incredibly impressive in a post-blog era when some people think it’s an achievement to have written on their personal site even once this year. When the average person thinks about how they use social media in our all-new, shiny, surveillance capitalism era they’ll possibly realize that they may actually post far more. They’re just doing it in dozens or more different places generally for the financial benefit of Facebook, Twitter, Instagram, Google, LinkedIn, Amazon, Medium, Goodreads, Swarm, Youtube, Reddit, Flickr, Yelp, Pinterest, Meetup, Kickstarter, Patreon, Nextdoor, Tumblr, Mastodon, Periscope, 500px, Pocket, Flipboard, SlideShare, Disqus, FitBit, Strava, Reading.am, GitHub, BitBucket, GitLab, Last.fm, Soundcloud, Vimeo, Telfie, Letterboxd, Trakt, Soundtracking, Tripit, Conferize, Upcoming.org, Colloq.io, Noti.st, Peach, Kinja, Plurk, TinyLetter, Venmo, Beeminder, Everyday Carry, and many, many, many others.

If anything, I suspect that I may be at the low end of writers and social posters. The major difference is that I own all of my data and have it in a single place where it’s more useful and searchable for me.

It turns out I made over 7,300 posts to my personal website this year. (For comparison, just the other day, I made my 10,000th tweet–after almost 11 years on Twitter.) This year’s output averages out to about 20 posts a day and includes at least one day with 53 public posts. (Many of my posts are private, where even Facebook is unaware of them. In fact, for large portions of July-October this year I only posted privately as a personal experiment.) These posts include nearly everything I’ve read, watched, listened to, bookmarked, replied to online, and otherwise written about this year. It also includes almost all of my checkins, RSVPs, and bookmarks as well as many of the more memorable things I’ve eaten or drank and most of my major acquisitions. It’s certainly a heck of a multi-media version of how I spent 2019. Better, it hasn’t taken a lot of work to do, it’s relatively easy to use, and I refer back to a lot of it–often. As a result, I also use it dramatically differently than I do traditional social media.

Of course my site is never exactly like I’d like it to be (I’d like to have more photo collections), but it’s finally getting somewhere closer to the sort of commonplace book I’ve always wanted. I’ll keep hacking away at posting things more easily and collecting what I think are some of the more interesting data I come across on a daily basis. Fortunately while most social media platforms have broadly quit innovating to make new and interesting features, I have the ability to change things to make them the way I want them to be. This sort of agency and flexibility is incredibly invaluable.

The best part is that it’s all on a website I control, and all the data is mine in a way that a traditional social media experience has never come close to. If you have the same wish for yourself or your friends in the coming new year, do let me know –I and many others are around to help you make it a reality for yourself

Replied to a tweet by Johannes ErnstJohannes Ernst (Twitter)
There is some pre-existing work for tips, recommendations, reviews, etc. But it would be nice to have an IndieNews sort of hub to aggregate them all.

Maybe I could start by making the first recommendation to use IndieWeb.xyz/en/recommendations

Improving the WordPress documentation on the IndieWeb Wiki

I had started it in November 2018, but today I spent a several hours to do some additional documentation and finally migrate the changes and updates to the WordPress pages on the IndieWeb wiki.

The biggest set of changes is for the Getting Started on WordPress page which is hopefully simpler and clearer for the IndieWeb beginner. It was previously arranged around the somewhat jargon-y idea of IndieMark which is a much more developer-centric presentation and much more useful for developers building an IndieWeb site from scratch. This was fine for an earlier generation of IndieWeb adopter.

Now that many of the WordPress plugins have aggregated and become much more mature and robust, many thought we needed a simplified way of approaching things for people who can at least manage a WordPress install in terms of installing and updating themes and plugins. This update to the getting started page is meant to reflect this so that those with either a new site or converting a pre-existing site can get up and going as quickly as possible. As a result this page is very opinionated toward the simplest paths available for the broadest number of people. Naturally once one has a few of the bigger building blocks working and wants to delve in further, there are other pieces of the wiki that can help, and the getting started page has links to many of these.

Because WordPress gives people so much functionality out of the box, the getting started page is now focused on adding bigger building blocks of IndieWeb functionality like IndieAuth, Webmention, Micropub, WebSub, and Microsub. 

Many of the pieces of the older page have been updated and migrated to the Advanced WordPress Set Up page or to other relevant pages within the broader WordPress heirarchy.

Special thanks to Michael Beckwith, Greg McVerry, and many others in the IndieWeb chat for their work and contributions toward this effort as well!

We all look forward to everyone’s thoughts, comments, and further contributions to the wiki as the suite of IndieWeb-related WordPress plugins and tools continue to improve and evolve.

Home

55 °F clear sky

My newest IndieWeb desire: The ability to watch and simultaneously screencapture, gif-ify, and otherwise live note a movie with commentary and quotes on my website (roughly in real time without distracting from it too much) the way Bix has done with The Desk Set on Twitter. I’d love to do it as a running collection perhaps. Maybe not too dis-similarly to the way that ThreadReader app presents it.

Do any television sets do automated screencaptures or gifs yet? And can anyone post from a television set to their website? Where is the micropub client for that? I want to see movie reviews like this. Film Threat perhaps?

Marty’s app Kapowski is maybe a start for this? I used to have a DVD tool on my computer that would do screencaptures relatively easy, but who has those anymore? Anyone else have ideas?

Screencapture of Tracy and Hepburn in the movie The Desk Set.

Replied to The future of the web, isn't the web by Terence Eden (shkspr.mobi)
My friends, and former employers, at the Government Digital Service have written a spectacularly good blog post "Making GOV.UK more than a website". In it, they describe how adding Schema.org markup to their website has allowed search engines to extract semantic content and display it to a user. For...
This reminds me of Drew McLellan’s talk from 2006 Can Your Website be Your API? or Jeremy Keith’s slightly more recent talk The Spirit Of The Web from 2012 which I’d listened to recently.

I like the idea of experimenting into some of these new areas, but I’m worried about who owns some of these gateways and how they treat the data–both from the perspective of the site owners as well as from the users who are encouraged to access data through them. How do our power structures change based these new modalities? Is it responsible?

Replied to How to send a Webmention in comments? by Paul JacobsonPaul Jacobson (Paul Jacobson)
I’ve had Webmentions enabled on this site for some time now. Sending a Webmention is pretty straightforward thanks to plugins like Webmention for WordPress and Semantic-Linkbacks. The question is how to send Webmentions in comments when someone replies to one of my posts?
Okay, this gives a lot more context!

It looks like you’re 90% of the way there. I suspect the last piece you’re missing are the proper microformats either in your theme or in the_body of your specific reply. I suspect you know what microformats are Paul, but for context and the benefit of others reading, they’re bits of metadata added into HTML as classes that provide computers additional information about what is in your post and what each part represents.

For implementing Webmention with WordPress, the Semantic Linkbacks plugin has a built in parser that looks at the microformats of the incoming webmentions and uses that data to decide what to display in your comments section. The first part it looks for is an h-card which is a microformats version of a business card that generally includes the post author’s name, photo/avatar, and URL. This is how the system determines the avatar and name to use.

The second part it’s looking for in the received webmention is an h-entry (or hentry in the older microformats v1 specification). This defines the broader body of the comment that it will display. And the last big part that the parser is looking for is what kind of response was sent. Was it a simple reply, like, a bookmark, a read, a listen, etc.? If it can’t figure out what the specific reply may have been it defaults to a simple “mention” which is the response that you’re seeing in your example Paul. 

The positive part of this system is that WordPress already has some reasonable support for microformats v1 built into core and many themes even extend on it relatively well. Sadly, WordPress doesn’t support microformats v2, which would make it a far better IndieWeb friendly platform. Fortunately most themes have h-card or hcard along with the related microformats that go on the names, URLs, and avatars. Unfortunately they don’t have the microformats that indicate the response types. 

To fix this many people IndieWeb-ifying a site use a theme with strong Microformats v2 mark up like SemPress (or one of its children) and they’re doing it in combination with the Post Kinds plugin which adds the microformats to the response to indicate the proper type. Post Kinds, a dramatic expansion of the idea of Post Formats by the way, also has a built in parser which kindly provides a reply context for your posts as well.

A screenshot of a reply context (highlighted in yellow) which indicates the post is about a favorite of Huffduffer which includes a blockquote from the Huffduffer site to show what the site is about. My commentary about the favorite appears beneath the reply context.

If you’re not using (or don’t want to use) Post Kinds you can manually add the required mark up in your posts to indicate the type. Most of these are documented on the IndieWeb wiki, here’s an example for a typical “reply“:

<div class="h-entry">
    <a href="http://example.com/note123" class="u-in-reply-to">Some note with a point</a>
    <div class="p-name p-content">Good point! Now what is the next thing we should do?</div>
</div>

In this example the important microformats are the u-in-reply-to and the p-name p-content. Generally most WordPress themes will add either h-entry (or hentry) in the theme, so you just need the u-in-reply-to piece.

Again, most people get around the need to add these microformats by using Post Kinds plugin while others use a version of the old core Press This bookmark functionality that was adopted for use as IndieWeb Press This. IndieWeb Press this bookmarklet will take a page you want to reply to, like, or bookmark, then create a post with the requisite microformats, and finally allow you to write your reply and publish pretty quickly.

Yet another method to get around some of the required microformats is to publish using a Micropub client in combination with the WordPress Micropub plugin.

The upshot is that once you’ve arranged the basic pieces, your publishing process proceeds apace as before.

And of course, to be even more upfront, I’ll mention that some of the replies I’ve sent to Paul in the past (and you can see this in the example screenshot he includes) mistakenly include my reply context to his post in them. This is a result of my having overwritten some theme changes in my site that once upgraded my lowly mf1 hentry to the better mf2 h-entry. As a result the parser inside the Semantic Linkbacks plugin falls back to parsing as microformats version 1 and includes the context instead of stripping it out and just sending only the piece that is the intended reply. The reply that should have shown up on Paul’s post was the portion he outlined in red. I’ll try to fix this again shortly.

For those looking to help spread the ideas and functionality of the IndieWeb within WordPress, we’d all love help to:

  • Improve WordPress’ core support for Microformats version 2
  • Better support for Microformats v2 in more Themes

I and others have documented some other subtleties and resources for microformats with respect to WordPresss and themes on the IndieWeb wiki which should be of help for those of a variety of development levels. Obviously we still have a way to go towards making all this more intuitive, obvious, and user friendly, but we’re getting there day by day. Any extra help and feedback is always helpful. 

If you’ve got questions, need help, or have suggestions, feel free to hop into the IndieWeb WordPress chat and we can try to get you up to speed. 

 

Replied to IFTTT Recipes for PESOS by Charlotte AllenCharlotte Allen (charlotteallen.info)
So, I spend a long time trying to set up PESOS for individual silos on IFTTT, specifically Facebook and Instagram, because they are terrible. I’ve got it currently set up to publish my initial post, but no back feed support yet. Also, this is going to wordpress, but it shouldn’t matter (in theor...
This is some brilliant work. Thanks for puzzling it all out.

I do have a few questions/clarifications though so as not to be confused since there are a few pieces you’ve left out.

For the IndieAuth token, which is created at /wp-admin/users.php?page=indieauth_user_token one only needs to give it a title and the “create” scope?

For the “then” portion that uses IFTTT.com’s Webhooks service are the following correct?

  • The URL is (when used with WordPress) of the form: https://example.com/wp-json/micropub/1.0/endpoint
  • The Method is: POST
  • The Content Type I’m guessing based on the Body field you’ve included is: application/x-www-form-urlencoded

For your Pocket example, it looks like you’re using the Post Kinds Plugin, so I’m guessing that you could have gotten away without the {{Excerpt}} and {{Title}} portions and just have sent the URL which Post Kinds picks up and parses to give you your context portion with a title and an excerpt anyway?

It looks like part of the trouble of this PESOS set up is that you’re too reliant in the long run of relying on Pocket (or other services) being around in the long term. If Pocket disappears, then really, so does most of your bookmark, which ideally should point to the canonical URL of the content you’re bookmarking. Of course perhaps IFTTT may not give you that URL in many cases. It looks to me like the URL you’re bookmarking would make a more appropriate syndication link URL.

For most of my bookmarks, likes, reads, etc. I use a plugin that scrapes my post and saves a copy of the contents of all the URLs on my page to the Internet Archive so that even in the event of a site death, a copy of the content is saved for me for a later date.

In any case, I do like this method if one can get it working. For some PESOS sources, I’ve used IFTTT before, though typically with RSS feeds if the silo provides them. Even then I’m often saving them directly to WordPress as drafts for later modification if the data that IFTTT is providing is less than ideal. Sometimes worse, using RSS doesn’t allow one to use Post Kinds URL field and parsing functionality the way your webhook method does.

Cleaning up feeds, easier social following, and feed readers

I’ve been doing a bit of clean up in my feed reader(s)–cleaning out dead feeds, fixing broken ones, etc. I thought I’d take a quick peek at some of the feeds I’m pushing out as well. I remember doing some serious updates on the feeds my site advertises three years ago this week, but it’s been a while since I’ve revisited it. While every post kind/type, category, and tag on my site has a feed (often found by simply adding /feed/ to the end of those URLs), I’ve made a few custom feeds for aggregated content.

However, knowing that some feeds are broadly available from my site isn’t always either obvious or the same as being able to use them easily–one might think of it as a(n) (technical) accessibility problem. I thought I’d make a few tweaks to smooth out that user interface and hopefully provide a better user experience–especially since I’m publishing everything from my website first rather than in 30 different places online (which is a whole other UI problem for those wishing to follow me and my content). Since most pages on my site have a “Follow Me” button (courtesy of SubToMe), I just needed to have a list of generally useful feeds to provide it. While SubToMe has some instructions for suggesting lists of feeds, I’ve never gotten it to work the way I expected (or feed readers didn’t respect it, I’m not sure which?) But since most feed readers have feed discovery built in as a feature, I thought I’d leverage that aspect. Thus I threw into the <head> of my website a dozen or so links from some of the most typical feeds people may be most interested in from my site. Now you can click on the follow button, choose your favorite feed reader, and then your reader should provide you with a large list of feeds which you might want to subscribe. These now broadly include the full feed, a comments feed, feeds for all the individual kinds (bookmarks, likes, favorites, replies, listens, etc.) but potentially more useful: a “microblog feed” of all my status-related updates and a “linkblog feed” for all my link-related updates (generally favorites, likes, reads, and bookmarks).

Some of these sub-feeds may be useful in some feed readers which don’t yet have the ability for you to choose within the reader what you’d like to see. I suspect that in the future social readers will allow you to subscribe to my primary firehose or comments feeds, which are putting out about 85 and 125 posts a week right now, and you’ll be able to subscribe to those, but then within their interface be able to choose individual types by means of filters to more quickly see what I’ve been bookmarking, reading, listening to or watching. Then if you want to curl up with some longer reads, filter by articles; or if you just want some quick hits, filter by notes. And of course naturally you’ll be able to do this sort of filtering across your network too. I also suspect some of them will build in velocity filters and friend-proximity filters so that you’ll be able to see material from people who don’t post as often highlighted or to see people’s content based on your personal rankings or categories (math friends, knitting circle, family, reading group, IndieWeb community, book club, etc.). I’ve recently been enjoying Kicks Condor’s FraidyCat reader which touches on some of this work though it’s not what most people would consider a full-featured feed reader but might think of as a filter/reader dashboard sort of product.

Perhaps sometime in the future I’ll write a bit of code so that each individual page on my site that you visit will provide feeds in the header for all the particular categories, tags, and post kinds that appear on that page?That might make a clever, and simple little plugin, though honestly that’s the sort of code I would expect CMSes like WordPress to provide out of the box. Of course, perhaps broader adoption of microformats and clever readers will obviate the need for all these bits?

 

I’ve noticed that Bloomberg Businessweek’s Jealousy List for 2020 has quirky little animated drolleries racing around on it as you scroll up and down the page.

This makes me wonder what web designers and developers would put on their own personal jealousy lists for 2020. What types of features and functionality have you seen this year that you’d love to have on your own website or in your own projects?

The Nieman Lab has an awesome and invaluable “Reading Page”

Usually I’m reading their content via a feed reader, but last night I visited their actual site and I noticed that the Nieman Lab has a reading page!

Since they’re unlikely to report on the mechanics of some of their own website and journalistic output, I’ll take a moment to highlight it on their behalf.

Reading pages or Linkblogs

Traditionally known as linkblogs back in the old blogosphere days, this sort of web pattern is probably better and more specifically called a “reading page” now. (Even Nieman titles the page “What We’re Reading” and uses /reading/ in the URL path to the page itself.) Many people still maintain linkblogs or bookmark pages (often on social silos like Pinboard, Pinterest, Twitter, Pocket, Instapaper, et al.), but generally the semantic name there implies articles or pages that were found to be of general interest or that one wanted to keep to read or consume later. On today’s more advanced web, there’s actually more value in naming it a reading page as it indicates a more proactive interest in the bookmarked content–namely having spent the time, effort, and energy to have actually read the thing being bookmarked. This additional indication of having more skin in the game provides a lot of additional value of a read post over a simpler bookmark post in my mind. It’s also part of the reason my website sends and receives read-specific webmentions.

This pattern of providing links of read material is pretty cool for a variety of reasons.

Discovery

First, if you’re following and reading the Nieman Lab, you’re very likely going to be interested in many of the things that they’re reading, researching, and covering. By providing a reading page they’re giving their readers a trove of useful data to discover articles and material in similar and tangential spaces that the lab may not be able to actively cover or engage in at the time. 

Context

By knowing what the Lab is reading, you’re provided with a broader perspective of the things they’re actively interested in. By reading those things yourself, you’ll have increased context into what they’re doing, what those areas look like, and what they are adding to the conversation in their research and work.

Added value to their site

Linkblogging has long been a thing, and, in part, is what a large number of Twitter users are typically doing. In Nieman Lab’s case, they’re just doing it on their own website, which adds tremendous value to it. By smartly hosting it on their own site they’re also guarding against the built value of their read archive disappearing if they were hosted on a social silo (remember Delicious? CiteULike?). Also by keeping it on their site, it has more long-tail value than if it were to all disappear into the new-content-wins attention machine that Twitter has become.

Of course I’d personally find it a lot more beneficial if they provided or advertised a linkblog feed for their reading page. Sadly they don’t. However, if you’re as interested as I am, you’ll dig under the hood a bit to discover that Nieman Lab’s site is built on WordPress and they’re using that page likely with a category, tag, or other taxonomy. So with a short bit of intuitive guessing about how WordPress is structured, we happily discover there is a feed of their reads at https://www.niemanlab.org/reading/feed/. (I suspect this feed exists as a design choice by WordPress than by the design or will of the Nieman Lab.) If you prefer a faster, one button subscribe option:

If Nieman would like their own universal follow button like this, take a peek at what SubToMe has to offer on this front.

Value to research

By accumulating a trove of links and summaries, which they’re hopefully keeping, they’re creating a huge relevant database for future research on the topics in which they have interest. The small pieces that may not make sense today may potentially be woven into future narratives and pieces of research later, but this sort of thing is vastly harder to do without reading and making note of it. In a sense, they’re creating a corporate or research lab-based commonplace book for their own use.

Other Examples

While I’ve seen many people (generally individuals and not magazines, companies, or other bigger outlets) regularly publish newsletters or weekly posts on what they’ve found on the web that is interesting, I haven’t seen as many who publish specific pages or archives of what they’re reading. Even fewer provide RSS or other feeds of this content.

The IndieWeb wiki read page has some useful and interesting examples of this behavior, but they’re almost all individuals. 

One other example I can think of in the journalism space, mostly because it’s getting to that end-of-the-year recap time is Bloomberg’s Jealousy List, which this year incidentally has some fun little drolleries that move as you scroll the page. This subset of reading lists is interesting as a group of articles Bloomberg wished they’d written and published themselves. This may indicate that they’re keeping a reading list internally, but just not publishing it regularly like Nieman is.

I can’t help thinking if Nieman Lab’s OpenFuego bot is a part of their workflow in creating their reading page as well?

And finally, since I also have a similar behavior, I’ll mention that you can find my reads on my reading page (sometimes with commentary) or follow it all via RSS if you like.

Are you aware of other people or organizations publishing lists of what they’re actively reading online? Do they provide feeds? How can we make this feature more prevalent on the open web?