Please note: This site is in an active redesign. Some things might be a little off 🧐



This is a great write up, thanks! This is definitely the road I’ve been thinking down. So far I have been using visibility public, unlisted, and private. The goal has been eventually to set an audience of private posts to various people. I hadn’t gotten to think about groups yet, so I think that makes a lot of sense.

In fact, there has been conversation lately about how nickname caches are really just h-cards. If you take that and the conversations around collections, you can make private collections of h-cards to essentially create lists. This would be an h-card with children h-cards. You could even use this to say represent your co-workers if you had an h-card collection with the info of your employer and then it had children h-cards of the employees of the company, you could then easily share certain items with your co-workers.

55.39 β„‰πŸŒ˜indieweb
posted using

Owning my code snippets

In the software world, it is very common to take snippets of code that you want to show or discuss with people and post it on GitHub as a Gist, which is a public link that shows code with line numbers and syntax highlighting for the language used.

Back in January 2018, Aaron Parecki added the ability to post Code Snippets over Micropub to his Micropub client Quill. He also fixed up a nice display on his website.

Today, I am excited to add the same functionality to my own site. Using the Code Snippet interface of Quill, I am able to create a snippet on my own website, that gets line numbers and syntax highlighting. You can see the first, test snippet in JavaScript here. I also wanted to get more functionality like GitHub, so I added the ability to highlight lines on the page to help with conversational context. If you click on the line while looking at a code snippet, it will automatically highlight the line and add a code line fragment to the url hash (for example: #L3 or #L1,L4 or #L3-L5). You'll notice the example includes both a single line, multiple non-contiguous lines or a line range. In fact, it will even support multiple non-contiguous ranges. What is better is that when the page loads, it will read the url fragment and auto-highlight the respective lines.

This means I can post a code snippet, select some specific lines and then share the resulting url with fragment to someone and the code snippet will automatically highlight the specific lines to them. Also, the possibility exists that someone could include a code line fragment in the url when sending a webmention to my code snippet and like media fragment, I would then be able to consume the code line fragment and associate the webmention with the specific code snippet lines.

One more step towards owning my own data AND replacing GitHub functionality through distributed means.

Thinking through the IWC Berlin displaying responses session

I remotely attended the Displaying Responses session of IndieWebCamp Berlin 2018. It was very interesting and they made some good progress thinking though how to deal with how and when to display responses received to posts on your website.

They came to the conclusion that there are four groups of people that you want to treat their responses differently:

  • Accepted / Immediate Connections
  • 2nd level connections
  • Everyone
  • Mute or Blocked

Accepted / Immediate Connections

These are essentially your friends on Facebook or your follow list on Twitter. These are people that you have chosen to connect with in some way and this logical conclusions can be drawn around the level of interactions you're willing to have.

My plan is to display these responses completely (name, photo and content of response). This list will be generated for me by adding anyone I follow, as well as anyone I have sent a reply to. This will NOT add people to whom I have liked, emoji reacted, quoted, or bookmarked. Those are lower level responses that do not indicate a deeper level of a desire to connect with that person.

2nd Level Connections

These are "friends of friends". You can assume they won't do anything TOO bad, but you might not want them posting all over your site. There is a deeper level of trust here because of mutual connection but still some care should be taken. This can be determined through different ways. One way that has been brainstormed in the IndieWeb is Vouch.

I don't currently track 2nd level connections but I liked how Tantek thought this through, so my plan is for replies to display their photo and name as "other people that have responded to this post", but not display the content of their reply. I also think if they send a like, emoji reaction or quote, I'll display it just like I would an Immediate Connection.


This is the World Wide Web, and anyone could send anything to my website via webmention. So this is a category you likely want to moderate.

My initial thought is I will accept likes, quotes and emoji reactions from them but I won't list attribution of who did it while moderated, just the reaction itself. For replies I am considering potentially listing the url of the author of the post under "other people who have replied" but no name, photo or content while moderated.

Mute or Blocked

These are people who you do not trust for whatever reasons have happened for you. You don't want to associate with them in any way.

Responses are not displayed from these people and they are not listed in the moderation queue.

Some thoughts on moderation

This means I'll need a moderation queue. Anything from a 2nd level connection or from the Everyone group will enter the moderation queue. Responses from 2nd level connections should appear higher in the queue than responses from the Everyone group. From there I can choose to:

  • approve a response (display it like an immediate connection)
  • approve response and accept author (makes this author an immediate connection so they aren't moderated anymore)
  • ignore response (this leaves the response as is, it leaves the queue but doesn't display additional details)
  • remove response (this removes the response from my storage)
  • remove response and block author (this both removes the response from my storage and makes sure I don't receive responses from them in the future)

All in all, it was a great session that I really enjoyed and I'm looking forward to actually working on implementing some of these features into my site.

The youngest IndieWebCamp remote attendee at IndieWebCamp Berlin: 3 months and 6 days old and already learning how to display responses on his website.
Oops! I realized that when I added a new post, the new posts weren't updating my database cache 😁 Hopefully this post updates correctly! 🀞
Just flipped the switch and now main feeds on my website are powered by my new database cache and my js server. 🀞 Hopefully nothing breaks! Now every feed page should have a JSONFeed, by adding feed.json even tag pages (ex Apple tag page has a JSONFeed)

Following in the IndieWeb: The Next Frontier

From IndieWeb Summit 2017 to IndieWeb Summit 2018 (both of which happen in June), there was a lot of focus and effort into developing structures around what we call "Social Readers", apps and services that allow you to following different website feeds, responding and interacting on your own website within the same app. It's the dual-nature that Facebook and Twitter provides but this time centered around individual websites. For more information on how social readers work, Aaron Parecki wrote a great article.

(Yesterday, Greg and I were talking about subscriptions and follow posts. I told him I had more thoughts that should be fleshed out in a blog post. This is that blog post.)

So where do we go from here? Now that we can read and interact with people quickly and easier the question is how we manage those people? I think that is one of the next large hurtles for the IndieWeb community to overcome.

There are a couple aspects to this:


The first step following someone is that you end up on someone's website and you want to subscribe to their content. Currently that involves:

  • copying the url of the webpage you are on
  • opening up your reader interface
  • going to the channel where you want to add them
  • choosing to add a new subscription
  • pasting the link in

That's at minimum 5 discrete steps and it prevents me from subscribing to new feeds all the time. Most of the time I use my iPhone's share sheet to send the url into my task manager with a task "Follow this site". Then, I get lazy and I never sit down and actually follow them until something significant happens and reminds me, then I will eventually do it.

There are two ways we can and should solve this problem, in Native Apps and on the Web.

Native App Subscriptions

One of my open source projects is Indigenous for iOS, which is a native iOS social reader. Native Apps can make this a lot easier by integrating subscribing to feeds in the share sheets.

In this scenario, you would visit the page you want to subscribe to, tap the share sheet, tap your native app and tap Follow. It would then allow you to select a channel and a feed type if there are multiple available. You could also preview the different feeds before selecting if you aren't sure which one you want. There are several taps but they are all pretty easy and intuitive without having to open new browser tabs or apps.

Web Subscriptions

Option 1: Follow Buttons Before the social readers got going, Aaron experimented with a subscription workflow on his website. At the bottom of his feed pages he includes a button that says "Follow".

When you click that button it takes you to a new page that allows you to select one of three feeds to subscribe to (the current page, his home page and all posts) while providing information on how many posts that feed has received in the last 30 days. Then you enter your url and click follow.

Aaron's website will look at your website for a rel="subscribe" link, then it will forward you to that url with a query parameter at the end (?subscribe-to= This would then allow the social reader of your choice to bring up a subscribe screen with the url already pre-filled. This allows the web interaction to then mirror the native app interaction very similarly. One downfall is that not every website will end up providing follow buttons. What is an alternative?

Option 2: Browser extensions While I think it would be useful for many websites to implement that type of interaction, some just won't and others can't (for example: static-sites).

Another option is adding Microsub support through browser extensions. For example, Omnibear could add Microsub support for scanning the current website for feeds and allowing a user to subscribe to a feed from their current page. This would allow following functionality similar to a native mobile app but from any desktop browser that has the extension installed. One added benefit compared to the follow button is that you don't have to enter your url into a website, because you will already be logged in to your browser extension.

Subscribing vs. Following

So now you've made it easy to be visiting a website with a feed and to subscribe to that feed within a channel of your social reader. What is missing when compared to social silos today? Well typically you can notify that person that you are following them as well as their information gets added to your website so you can communicate with them more easily, and more. I think the two missing pieces there are the (optional) notification issue and storing their information in your website for easier communication.

Follow posts

Because of the way that social readers enable two way communication, most of them will not only have access to your Microsub server but also your Micropub server. This means that with your permission when you subscribe to a new feed, a Microsub client could also create a follow post through your Micropub server. Your micropub server would of course handle this anyway it saw fit (making them public posts, private posts, sending webmentions, etc).


The other missing piece is the fact that when you follow someone, often times this is also an indication that you want to communicate with them. So far, brainstorming on easing communication has come in the form of a nicknames cache. They haven't taken off too much, and I think one reason for that is there is no easy way to add and maintain a nicknames cache unless you build an interface for it, and who enjoys manually maintaining contacts anyway?

One interesting use case of following is that when you subscribe to someone's feed and begin "following" them, the Microsub client could ALSO parse the author information and then send a Micropub post to your server of an h-card as opposed to an h-entry or h-event. When your Micropub server receives an h-card object it can know that this should be stored in your nicknames cache instead of as a post on your website.

Nicknames caches provide support so that a Micropub client can help to auto-complete personal contacts as well as potentially dealing with @-mentions across services or silos.

When you combine this with the experimental Micropub extension for Querying for post list, you could potentially maintain your nicknames cache through Micropub, retrieving existing entries by using q=source&post-type=card.

Of course, once this is all done it would be super useful to create a Micropub Card <-> CardDAV bridge so that without everyone having to worry about the CardDAV spec, nicknames caches could also become our phone's contact list. Maybe, Ryan?

β†ͺ In Reply To:
Super excited!! πŸŽ‰πŸŽ‰ This is something I've actually been thinking about since July and it just took some time to plan, get the equipment and the tech workflows and decide to actually do it! And this first episode with @aaronpk was actually recorded almost two months ago as a test episode. It's just been sitting around waiting to be released once I had a great list of guests to go after him
67.83 ℉⛅indieweb
posted using
β†ͺ In Reply To:
Thanks! I'm pretty excited about it. Huge props to @macgenie and @manton for Micro Monday which is the inspiration for this podcast. My hope and goal is to be able to provide another perspective on the IndieWeb people you've heard of and be able to highlight those you haven't πŸ™‚
67.8 ℉⛅indieweb
posted using
Thanks! I definitely am excited about having more IndieWeb podcasts. The component that I thought was important was to make sure we had a variety of "types" of IndieWeb podcasts. There's already a microcast @aaronpk, newscast @schmarty, long tech podcast @dshanske and @c so hopefully a guest podcast will help add to the variety and help create more opportunity for new voices in the IndieWeb community πŸ™‚
65.47 ℉⛅indieweb
posted using
Launched a new podcast this week! You can find the first episode on the site or by following @MyURLIs. Each episode is <30 minutes and features a different person on the IndieWeb. This week was @aaronpk and I've got more really interesting guests on the way!
@danielpunkass @manton It's been a long-time coming and we're still experimenting with the post list query for Micropub, but it'd be great if you guys could take a glance at the current discussions and let us know if there is anything missing.
The server he talks about is now available with limited history, and all of the current Microsub clients are free. But you do need a website to login because IndieAuth uses a URL:
πŸ› New issue for aperture by aaronpk

Add ability to create a new channel on Micropub screen

When you use IndieAuth to set up a new Micropub token for a channel, you should be able to create a new channel and then use that channel for the Micropub token being created

Reclaiming your content

As I mentioned in Part 1 of My IndieWeb Story, I've been posting my content to my own website for a year and a half. But what about all the content that came out before that? All the social media "silos" still have it. One of the goals I have this year is to reclaim all my social media content.

Jonathan LaCour, wrote a post earlier this year called Freeing myself from Facebook where he reclaimed all of his Facebook and Instagram content to his website.

I have downloaded some historical Facebook content, but definitely have a long way to go on that journey. Instagram however has become much easier. Thanks to Manton Reece, the creator of I was able to use the macOS app (Which is a Micropub app so it works natively with my website) to Import my Instagram Archive using the instructions provided by

As of today, I now have all my previous Instagram content on my own website. One of the best parts about this is that I was able to import all of 2012 photos which was the year my wife Ashley and I courted, and all the 2013 photos which was our first year of marriage.

In order to make sure all the photos came in, I also built a new view into my website that allows me to display a grid of my photos by year, month or day. I'm pretty excited about how my website is developing this year. I'll have more to say about how my website is developing in Part 2 of My IndieWeb Story, coming soon.

While I understand your focus here, I think step one for figuring out endorsements is to focus on the "simple" flow, how one site requests a badge from another and how the other site replies. Once a simple two site flow is determined, then it can be tweaked to support a third-party credentials system. I see it as you would likely create the initial request post, but then you would syndicate that to the third party ledger. (We already know how syndication works, so that wouldn't have to be figured out).
78.57 β„‰β˜οΈindiewebbrainstorming
posted using

One Website to Rule Them or Separate Areas of Focus

So I’ve been thinking about the difference between one website to rule them all or separate areas of focus while I’ve been working on my slow website redesign of Part of it is because I saw some really nice β€œMinimalist” blogs that were so clean and amazing, namely Where the Light Gathers and Manuel Moreale. This led me to record a microcast about my homepage redesign.

After recording the microcast, I spent on time playing around with some homepage redesigns and came up with one I decided to start trying out and I actually pushed it up to become the new live homepage of my site. I've included some screenshots in case it changes over time:

The focus on the homepage was to introduce me, what I've been doing recently, show some recent articles, microposts (kind of like tweets but hosted on my own website) and social responses.

I was feeling pretty good about my direction, and then I received an email from Manuel, which completely surprised me! Among other things he said something that stuck with me:

My only thought about your current site/idea is to don't add too many things.
People already live in a cluttered world, both digitally and physically and it's refreshing to land on a site where there are just a few things you must look at and you're not distracted by the latest tweet and photo and video and activity so on an so forth.

I think this makes a lot of sense. It also battles against my desire to kind of have a "homebase dashboard" that outlines what I've been up to recently. This has led me to thinking through do I want a single site, that contains everything about me, or do I want some smaller separate sites that host smaller focused segments of my life. Not everyone wants everything about my life, so it makes sense that it could be broken up into smaller segments.

I started in this general direction earlier this year when I created which was created because I wanted to host my microcast on and so when doing that, I thought it would be nice to give it it's own domain. However, recently, I felt like I missed being able to reference the microcast from so while the "canonical" copy of my microcast is still hosted on, I have been creating copies on

So as I was pondering this, I was looking around and noticed that Chad is the author of Where the Light Gathers, and I checked out his personal site. It was an interesting idea to me, his identity url (his name), is a landing page that introduces himself points you into some general directions: About, Now, Social, Blog. It got me thinking I could do something similar.

I could potentially see being a landing page similar to Chad's where it introduces myself simply and provides links to an about page, a now page, a social page, a microcast page and a blog page. I already own the domain which currently just links to so what if I created the following sites:

  • (Landing Page/About Page)

  • (Now Page that looks similar to the current homepage)

  • (A social site that lists my microposts/photos/etc)

  • (My microcast website)

  • TBD (A minimalistic blog site for my long-form articles)

So that's what I've been thinking through and am interested in your feedback on, either by email, or Webmention. What do you think about the idea of either separate content/identities or having a single location for all the information on a single person? Is the idea I've been thinking about good and taking it in a direction of simplicity? Or did I completely miss the point and just make every messier?

πŸ› New issue for by aaronpk

Salmention support

Does support Salmention? Or is it expected of a user that they fetch the responses on the mentioning post by manually fetching the post information when they receive the ping?
Webmentions are great! I've been using them since 2017 and it's changed the way I interact. I just wrote an article about how I got into Webmention and other IndieWeb technologies. Give it a read ( and join us (
That's a great idea. I'm doing something similar. I'm in the process of leaving Facebook, so I created three topics (Personal, Family, Tech) that people could sign up for. I have a monthly email that sends posts that are of the topics the person is interested in.