User:Martymcgui.re

__NOTITLE__  Marty McGuire 

= IndieWeb Projects =


 * an unbaked idea for an IndieWeb Sandbox
 * ideas for automated testing of IndieAuth endpoints

Code / Services

 * Belding - a self-hostable IndieAuth server providing auth, token, introspection, and metadata endpoints for a single site/user. Thin web app wrapper around Taproot's taproot/indieauth library.
 * Kapowski - a Micropub client for posting GIF reactions as photo reply posts.
 * Spano - a Micropub media endpoint that stores files with content_addressing
 * Morris - a webhook for caching mention data from webmention.io for use with static site generators
 * Slater - a Micropub client for posting self-hosted events
 * Screech - a Micropub client for posting audio
 * gem-diamond - an IndieWeb webring. (formerly steady-sundial, hosted on Glitch)
 * veil-mirror - An IndieAuth device flow proxy for Microsub/Micropub

Backburner

 * This Week in the IndieWeb Audio Edition

= My IndieWeb Setup =

https://martymcgui.re is my primary home where I post many things via micropub, typically with Quill


 * notes


 * events posted via Slater


 * articles and optionally manually POSSE them to IndieNews.


 * replies, listens, RSVPs
 * reply-context is automatically fetched, cached, and displayed by my site where possible. currently XRay


 * likes and reposts


 * photos, which I often do not syndicate elsewhere
 * panoramic photos are posted by hand


 * videos
 * posted via iOS Shortcuts over micropub. Most notably, Eternal Caturday.
 * occasionally I manually upload to my micropub endpoint and create posts by hand.


 * audio via Screech, specifically This Week in the IndieWeb Audio Edition. (Note: this project has been on hiatus since ~2019)
 * Post via Screech.
 * Manual POSSE to Huffduffer
 * Manual POSSE to Twitter, Facebook
 * Edit the original post with micropublish to add syndication links (via micropub update)
 * Send webmentions with Telegraph
 * Send webmentions with Telegraph

https://wehavetoask.com/ is a podcast website that I run "IndieWeb-style" where I post via micropub.


 * audio posts are posted via Screech. Manual PESOS from Facebook (https://www.facebook.com/wehavetoask) as episodes are now recorded during livestream broadcast to Facebook Live.
 * Posting each episode is a multi-step process that involves:
 * Creating the post via Screech
 * POSSE to Twitter and FB manually
 * Edit the original post with micropublish to add syndication links (via micropub update)
 * Syndicate from my personal accounts
 * Like and Share on Facebook
 * Manually PESOS my FB post to my site via Quill. Add syndication link with micropublish via micropub update
 * Send webmentions from my site with Telegraph
 * Like and share from the parent podcast network's Twitter and Facebook

Syndication links are added manually for any POSSE copies for all of my sites.

Webmentions for replies, likes, reposts, and general mentions are sent automatically for my site whenever they are published. (Previously all were sent manually using Telegraph).

Likes (and other reactions), reposts, replies, and mentions from the IndieWeb as well as syndicated copies on Twitter and Facebook are automatically received by Brid.gy and webmention.io
 * They are automatically displayed on my site whenever it is re-built (either in response to a new post or when I trigger it manually).
 * I follow the webmention.io mentions feed for my sites in my Notifications channel in my social reader.

Silo Posting
While I try to treat silos as purely places where I publish syndication, there are still some things I will post only to silos.


 * Twitter
 * Some likes, retweets, and even quick replies that I don't consider "long-term relevant" enough to keep on my site. As of 2022 I only share stream announcements on Twitter. As of 2022-11, not even those.
 * Facebook
 * Livestreams for my podcast site happen here and the resulting videos stay here, though the resulting audio and video are also posted to our indie site.
 * I typically do not post FB reactions such as likes, loves, "haha", etc. to my site. In general I am trying to stop using Facebook reactions (because dang and gosh).
 * Responses to prompts from FB like encouragement to send birthday posts. I am also using these less and less.
 * Comments to other people's FB posts. Unless I started the thread, I generally don't think it's appropriate to copy it to my site.
 * Twitch
 * I am part of a weekly livestream at . These can be viewed from our site via a Twitch embed but do not generally live on the site.
 * We do have an archive of some (distant) past episodes as a podcast on the site.

= Personal Site - martymcgui.re =

martymcgui.re is my personal website.

What Works

 * Identity h-card and rel-me links to some silo accounts.


 * Belding for IndieAuth sign-in and authorization.


 * micropub using a custom PHP endpoint.
 * File uploads go to a separate media endpoint, running on Spano.
 * I typically post using a handful of Micropub clients
 * Using Quill from my laptop browser, often via bookmarklets.
 * Events are posted via Slater
 * Audio content such as podcasts are posted using Screech
 * Videos posted from my phone via custom iOS Shortcuts.


 * Content is served as a static-site compiled using Hugo
 * permalinks are  (Eastern Time)


 * short domain mmg.re
 * permashortlinks using newbase60 to convert permalink paths into 6 characters (3 for days-since-epoch, 3 for seconds-since midnight)
 * Custom Hugo templates make these available to posts when rendering
 * Custom Flask endpoint resolves these when visiting mmg.re. Unparseable requests are redirected as-is.

Supported Content Types
Notes
 * text-only (example)
 * with photo (example)
 * "web-sized" versions served via image proxy (cloudinary.com. formerly willnorris' imageproxy)
 * with 360 panoramic photospheres (using Google VR View). (example)
 * with video (e.g. iOS Live Photo bounce videos, old loops rescued from Vine). (example)
 * with audio (example)
 * with Mentions and Replies with context (example)
 * reply context supports posts with various markup
 * with mf2 markup (example)
 * with twitter (via XRay) (example) RIP Twitter API.
 * with soundcloud (via soundcloud's iframe embeds) (example)
 * external author images proxied via image proxy (cloudinary.com. formerly willnorris' imageproxy)

Articles (example)

Events (example)
 * poster image
 * location is handled with a pseudo-nicknames-cache. Each post stores location as a string. If location is a URL that matches an entry in my collection of common venues, it's dereferenced into an h-card when being rendered.
 * Each event page has Calendar Reminders links for ICS(iCal) format and Google_Calendar.
 * front page
 * upcoming events that i post to my site appear on my front page
 * upcoming events that I've RSVP'd to appear on my front page if the RSVP target has an h-event
 * RSVP'd events have a specially stylized display that includes start date and time, or span of days if multiple days (example)

Reposts (example, example)

Bookmarks (example)

Checkins (example)
 * PESOS from OwnYourSwarm
 * with photo and multiphoto (example)
 * map images via self-hosted staticmaplite (thanks to sgregor's post about privacy-preserving maps

POSSE
Previously POSSE'd via manual bridgy publish to Twitter and Facebook. I don't do this so much anymore, but I maintain historical posts.

Display links to syndicated posts (added 2017-02-27)

Webmentions
Accepting webmentions via webmention.io, which sends via webhook to a local morris service which stores them in static-site-compatible JSON format.

Each post page has a simple form for sending a webmention to the page by entering the source URL.

Backfeed from Twitter and Facebook via bridgy is supported for POSSE'd posts, but there aren't many of those now.
 * Displaying
 * "Yes", "Going", and "Maybe" RSVPs from webmention.io (example)
 * Likes and Reposts (example)
 * Reply and Mention (example)
 * Reacji (example)

Custom search?
This looks neat: https://pagefind.app/

More coherent design

 * better accessibility for photos and videos
 * typography! colors! process-driven thought into what goes on what pages! better accessibility!
 * move /posts to front page? maybe latest 30, link back to monthly archive?
 * move responses (likes, reposts, reacji) to a "posts and replies" page?

Outgoing

 * reduce noise
 * my webmention sender gets triggered by any changes to a published permalink'd post, including when the post template changes. this could result in resending every webmention 😱.
 * could keep track of sent mentions and not resend when "content is unchanged". requires some template-independent diff engine. maybe hashed mf2+json.
 * could disable the webmention sender under certain conditions:
 * ✅ if some threshold of changed posts? (stops WM sending if there are more than 50 posts to send mentions for)
 * if the list of recently changed source files doesn't include any content files?
 * if the list of changed source files includes any template files?
 * (is this still a problem?) don't send WMs to authors' homepage when a post links to their post.
 * would need to be  aware, ignore   info.

Incoming (Morris)

 * handle deletes!
 * keep changes over time?
 * re-build on new mentions so they show up right away
 * display homepage mentions (this is a whooooole thing)
 * I subscribe to webmention.io's feed for my homepage in my feed reader and they go to my "Notifications" channel. This is plenty good for me!

private posts

 * published: false will prevent the page from being rendered at all. maybe good if I want to host those behind another domain or path w/ an access controller in front.


 * also: "not in main stream posts" that maybe get their own types.

Lazy Load Embeds

 * https://dev.to/haggen/lazy-load-embedded-youtube-videos-520g

Privacy Policy and Privacy Improvements
Like this one by

Pano micropub client

 * photo
 * some metadata that indicates it's a pano

backfill old posts

 * tweets??
 * thingiverse bonus: comments, likes, and makes of my things.

post my own videos
This is mostly an improvement for Screech, which could post these files successfully as "video" like it already does for "audio", "photo". Or: it's a new single-purpose Micropub client?

(I use Shortcuts on my phone to post videos from there via Micropub just fine. Video examples)

event posting improvements
These are mostly improvements to Slater, since my site (should) support them all.


 * A venue search with typeahead (like Quill does)
 * this sends an h-card w/ name, lat, lon, and other fields pulled from the Google Places API
 * could also set TZ automatically based on location / date.
 * i'm also interested in foursquare's venue API for this. dunno if they have typeahead support. Self-hosting Meridian to made Open Street Map data searchable feels better!
 * ✅ "duplicate this event" like Facebook allows
 * ✅ faster date/time entry. i really like how upcoming.org's works in terms of keyboard nav.
 * smart autocomplete. e.g. typing "6" into the hours field sets the hours to 06 and jumps to minutes. "6:30PM" can be set by typing "630p" I'm satisfied with how native HTML "date" and "time" inputs do this!

No Longer Itches

 * do i dare ActivityPub my site?
 * I did! Using Bridgy Fed.
 * The way Bridgy Fed consolidates your follows into a single feed for your reader is GREAT.
 * Choosing which posts to syndicate via Bridgy Fed is done using a Micropub syndication target, so I can (and do) pick and choose.
 * The only thing that itches about this is I don't know of a Micropub client that lets me both quickly make a Like _and_ offers syndication options. So that has to be done manually (make the like, edit the post to add syndication).
 * I have a somewhat complicated follow setup whereby I make follow posts and syndicate them to brid.gy. This works, but I forget how unfollow works. Also, Bridgy Fed has a UI for this now.


 * track listens?
 * "listen-of" => 🎧, "Listened to this"
 * I use Overcast on my iPhone to listen to podcasts. Based on cleverdevil.io's work, I made a script to create listen-of posts from Overcast's "everything" OPML export. I run this kind of whenever I feel like it, and to keep from crowding my main posts page, listens live at . Will make a new display someday!


 * archives by month/year
 * cleaned these up for my Hugo rewrite at IWC Berlin 2018. example 2017-09 month view, example 2017 year view.
 * inspiration from Rob Weychert
 * great typography/layout!
 * also some great ways to browse
 * source / "also on"
 * type (e.g. movie review)
 * categories/tags
 * year/month
 * ALSO: better next/prev navigation include keyboard nav for left/right? meh. i am content with the details/summary sidebar i have now.


 * speed everything up
 * Port to Hugo. It was a big task but I did it, dangit! At this point I don't even remember when I finished that, haha.


 * Webmention sending
 * 2018-04 I implemented automatic WM sending in my hook-publish handler
 * It uses rsync output to determine what permalink pages are new or updated, parses them for the main h-entry and pulls out "appropriate" links for which to send webmentions.
 * Previously I used the Telegraph service, manually. I wanted a service that:
 * subscribes to my site updates via websub
 * does all the things that lazymention does
 * maybe limit to "relevant" links to send notifications about
 * like-of, in-reply-to is obvious. plain url mentions only in e-content?
 * ignore links in h-entry properties like author, syndication - maybe?
 * if given a status URL, save that too and check later. either on a job queue or manual, probably.
 * UI to review webmentions


 * better reply contexts
 * 2017-12 I switched to using XRay when I rewrote my hook-publish handler in PHP.
 * previously used the ruby microformats2 gem to get mf2 data, XRay for twitter.com posts.
 * would like to support posts with microdata markup example)
 * that microdata was embedded in a JSONP-like call, yuck. instead, made a custom parser for Soundcloud that extracts the "sound ID" and creates an embed. not great but provides a reasonable reading experience at the moment.
 * would like to support posts with mf1 markup example) (XRay does it well)
 * would like to support posts with json-ld markup example) (the referred post 410s now)


 * use AntennaPod history for creating listen posts
 * i no longer use an android device, so no antennapod.
 * it seems to integrate with gpodder. Possibly only syncing subscription list (OPML?) But possibly also supporting per-episode events.
 * can self-host the gpodder server
 * those events could become listen posts on my site
 * see above about tracking listens with Overcast!


 * websub notifications for tag pages (already work for my /posts/ page)
 * cleaned up my websub handling when i rewrite my hook-publish compile handler in PHP.
 * uses rsync results to see what files actually changed. filters out pagination but includes tag pages and individual pages.


 * Better handling of incoming webmentions
 * tool to slurp webmention.io data into static files suitable as Jekyll or Hugo data files
 * web hook to accept notifications from wmio and, add the new mention to the data store, and rebuild the site
 * this is now handled by morris


 * an unhosted evernote knockoff using remotestorage.io as my backend
 * I'm happy enough with laverna at the moment, though I haven't yet migrated any old notes in and support for files/images is limited/broken.
 * after some syncing issues with laverna i gave up on this and exported to my own personal notes site system. it's an indieauth protected private site built on hugo. fun!


 * an internet archive style backup that snarfs pages that i want to bookmark into my notes
 * I'm happy enough with pinboard at the moment. ¯\_(ツ)_/¯


 * posting my own video without relying on silos . I post these very rarely. Currently happy w/ an Automator action a shell script that posts files from my laptop to my media endpoint and making a new post with a video property that gets embedded.
 * micropub client for video!
 * want to select a poster image, if possible
 * and what else?
 * storage (happy enough w/ my micropub media endpoint, which I could set up with a CDN if desired
 * S3 as a CDN?
 * WebTorrent?


 * Want a better way of interpreting incoming WMs in a notifications-friendly way.
 * i use my reader to subscribe to the webmention.io feed for my domain in a "Notifications" channel. this has been plenty fine for me, and I haven't been craving anything real-time.
 * de-dupe! i shouldn't get multiple notifications for a given post just because the mention is sent again
 * mf2-awareness!
 * i shouldn't get a notification if there's a new comment on a post i'm mentioned in
 * maybe my notifier could let me opt-in to follow replies? maybe i already could with Aperture??
 * i should (maybe) get a notification if a post i'm mentioned in is updated, content-wise
 * be aware of like, repost, bookmark, listen, and other verbs. ("so-and-so liked ...")
 * be aware of person-tags (e.g. "so-and-so tagged you in...")
 * be aware of other attributes like post-type-discovery (e.g. "... posted a photo of you", "mentioned you in a checkin", ...)


 * pinned posts for tag pages?
 * first use-case - i want to be able to describe an h-feed on, e.g. the This Week in the IndieWeb podcast page as a stepping stone to mf2-to-RSS (or Atom) with enclosures and all that good stuff.
 * implemented this with a separate "podcast" kind of jekyll. it's configured w/ all the podcast metadata as well as a tag to pull posts from.
 * In the move to Hugo I made a "podcast" "type", similar to jekyll.
 * need another use-case for this before it becomes an itch again.


 * Micropub De-Duping
 * I thought I'd like to catch and reject posts that might be considered "dupes". e.g. don't let me like or bookmark posts more than once.
 * : might audit these someday. Duplicates here feel fine to me, honestly. I have read some books multiple times, and multiple "want-to-reads" remind me that some books come to my attention more than once!
 * difficulty: only if  is the same as latest read-of post for the same read.
 * more difficulty: read-of is often some title + author string (+ optional ISBN), so dupe detection is weird
 * upon review 2022-11 i had only made ~11 dupe likes out of > 1250 like posts over 6 years. doesn't feel worth it to build a whole thing for this.
 * upon review 2022-11 i had only made 1 dupe out of 47 reposts in 6 years.
 * 2022-11 review: 0 dupes out of 46 bookmarks in 6 years
 * others?


 * Automating POSSE (w/ bridgy publish and/or silo.pub?)
 * i have stopped syndicating stuff to FB and Twitter as I have pretty much stopped using them. i might end up wanting to do something for activitypub and revisit this, but ... maybe not! for now i am OK with my website being what it is.
 * ✅ micropub syndication query for Quill's syndicate-to feature
 * ✅ embed syndication links for POSSE via webmention
 * send webmentions and save response to post's syndication section
 * currently this is through Telegraph and is as many or more steps as manual POSSE and using micropublish.net to add the syndication links back
 * want to automate this at some point
 * a micropub client that supports the SE in POSSE with my workflow?
 * queries for mp-syndicate-to URLs for a given post
 * some support publishing via webmention and the wm request returns a reply w/ a permalink that could be sent back w/ a micropub update
 * news.indieweb.org/en
 * brid.gy also works for this
 * harder: recognize other kinds of posts and do them.
 * e.g. silo.pub requires micropubs, probably parsed from the h-entry on the post.


 * backfill (these are done)
 * ✅ old G+ posts
 * ✅ goodreads data
 * ✅ Thingiverse things, makes, and likes.

Notes on Domains
The .re TLD is a geographic top-level domain for the island of Réunion. I used 101Domain as my registrar because they support setting up a business entity in the country (for a fee), a requirement for domain registration there.

I also have a mirror of my site running as a Tor Onion Service at http://martymcgfuraocsgy2a25btl5srhifcdud6m4eiphz2mq6fafttwh7qd.onion/. Advertised via the Onion-Location HTTP header.

= Podcast Site - wehavetoask.com =

We Have to Ask is the site for a podcast I co-host.

Each episode is a post with an audio player and usually has a featured image and video. The site also hosts an RSS feed for various podcast directories.

These days we record episodes live via Facebook Live, and treat the resulting Facebook video post as a syndication post of the episode on our site.

What Works

 * IndieAuth via self-hosted Belding instance.
 * Micropub via custom self-hosted service.
 * Statically compiled website.
 * mf2 for episodes
 * h-feed on front page
 * h-entry with u-audio (and usually u-featured, and u-video)
 * POSSE to Facebook and Twitter via bridgy publish. Syndication links displayed as "Join the discussion on {silo}".
 * Backfeed silo interactions on POSSE copies via bridgy and webmention.io
 * We still accept webmentions. However we no longer POSSE to Twitter, and there is no good way to backfeed responses from Facebook. So, we don't actually get any responses on the site these days.

Working On
???

Itches

 * consider cleaning up the iTunes feed?
 * http://www.unmung.com/feed?feed=http%3A%2F%2Fwehavetoask.com%2Fepisodes.rss


 * some aspirational stuff from other podcasts w/ proper mf2
 * http://pin13.net/mf2/?url=http%3A%2F%2Ftransportini.com%2F
 * http://pin13.net/mf2/?url=http%3A%2F%2Flatenighttoast.com%2F
 * for RSS feed
 * one of them has “length” attrib on episodes. one has “size” attrib.
 * one of them has “length” attrib on episodes. one has “size” attrib.


 * micropub media endpoint so Screech can make progress while text etc. get written.

No Longer Itches

 * "Bake in" webmentions at compile time
 * this is now handled by morris and webmention.io's webhooks


 * Automating POSSE with webmentions
 * Works well with Twitter. Need to automate handling brid.gy response. micropub update, possibly.
 * Doesn't work so well with FB. Facebook doesn't do the automatic link content extraction and embedding when posting this way. silo.pub?
 * We technically sort-of PESOS from Facebook because the episodes begin as a Facebook Live stream, and the resulting Facebook video post serves as our "POSSE copy" there.


 * ✅ Add representative images for each episode
 * Screech supports "featured" image upload